MatrixStack クラス


とりあえず ToyBox2012 を試す為に理解すべき MatrixStack クラスについて説明します。

MatrixStack クラス
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);
}