public class MatrixStack { public Matrix44 Top { get; // 現在のマトリックススタックの一番上の行列を返します。 } public Matrix44 InvTop { get; // Top の逆行列を返します。 } // コンストラクタ // 初期値は単位行列 public MatrixStack(); public void Push(Matrix44 inMat); public void Pop(); // カメラ座標系に変換する行列を求め、Push する。 public void PushLookAt(Vector3 inCameraPos, Vector3 inTargetPos, Vector3 inUpVector); // 平行移動を表す行列を作って Push する。 public void PushTranslate(float inTx,float inTy,float inTz); // (inX,inY,inZ) を回転軸として inAngle(ラジアン)だけ回転する // 行列を求めて、それを Push する。 public void PushRotate(float inAngle,float inX,float inY,float inZ); // 拡大(縮小)行列を求めて Push する。 public void PushScale(float inSx,float inSy,float inSz); // せん断を表す行列を求めて Push する。 public void PushSkew(float inAngle, float inX1,float inY1,float inZ1, float inX2,float inY2,float inZ2); }
MatrixStack クラス