Androidの中のMatrix類の使用


Matrixは名前の通り大学の線形代数の中の行列です.行列に関する基本的な知識と加減乗除演算についてはここでは説明しなくなります.理解が必要なのは線形代数に関する知識を見てもいいです.http://course.tjau.edu.cn/xianxingdaishu/jiao/2.htm)
Androidの中のMatrixクラスは比較的簡単な3 x 3の3次マトリックスであり、構造は以下の通りである.
float matrix = {MSCALE_X, MSKEW_X, MTRANS_X,
            	MSKEW_Y, MSCALE_Y, MTRANS_Y,
            	MPERSP_0, MPERSP_1, MPERSP_2
            	};
以上のような構造です. MSCALE_XとMSCALE_YはそれぞれX軸とY軸方向のスケーリングを制御するMSKEW_である.XとMSKEW_Yは、X座標とY座標をそれぞれ制御する線形傾き係数であり、MTRANS_uXとMTRANSYはX方向とY方向の直線並進を制御します.MPERSP_0、MPERSP_1とMPERSP_2しばらくは多く使わないで、後で説明を補充します.
控訴して述べたことがあって、いわゆる行列の変換は主にこの3階の行列に対して算術の演算を行いました!並進動作が(0,0)から(10,120)に移行すると、上述のマトリクスのMSCALE_uがそのまま移動します.X=10とMSCALE_Y=120でMatrix.setValues(matrx配列)ができます.これにより、Canvasはマトリクスを使って描画操作が可能になり、並進が可能になります.
回転行列は特殊で、その構造は以下の通りである.
float matrix = {cosA, -sinA, 0,
            	sinA,  cosA, 0,
            	0,     0,    1
            	};
において、Aは回転角度であり、回転操作が必要ならば、上記のマトリックスに角度を導入すれば良い.
同時に、行列の乗算は非対称、つまりA*Bであることを知っています.B*Aは、このようにマトリクス乗算の左乗と右乗に関連し、同じくAndroidのMatrixでも左乗と右乗の関数を実現しました.すべてのpostXXXは左乗演算で、すべてのpreXXXは右乗演算です.これはMatrixを使って組み合わせ変換をする時に注意しなければならない問題です.
同時に、マトリックスオブジェクトの最後の状態は、すべての変換後に演算されたマトリックスですので、このマトリックスを再利用しても前の状態を保持したくない場合は、エラーが発生しないように、リセットマトリクスの状態を呼び出す必要があります.また、MatrixクラスのsetXXX方法はデフォルトでreset()を呼び出してマトリックスのリセットを行いますので、コンビネーション変換を実現する際には、変換の途中でsetXXXメソッドを呼び出しないように注意してください.