public class MatrixStack { int top = 0, stackSize = 20; Matrix3D stack[] = new Matrix3D[stackSize]; public MatrixStack() { for (int i = 0; i < stackSize; i++) stack[i] = new Matrix3D(); } public void push(Matrix3D m) { if (top < stackSize) { stack[top + 1].copy(m); top++; } } public void pop() { if (top > 0) --top; } public Matrix3D get() { return stack[top]; } }