2-13 座標変換と行列

rotate() や translate() で座標を変換することは行列の計算で行われている。 2次元の場合、 座標変換後の座標(x,y)と画面上の座標(u,v)の間には

(u,v,1)' = M * (x,y,1)'

という関係がある。ここで、'は行列の転置を表す。 この行列を取得するには、

PMatrix2D mat = (PMatrix2D)getMatrix();

を用いる。

mat={m00 m01 m02}
    {m10 m11 m12}
    { 0   0   1 }

の形である。これらの要素を取り出すには、mat.m00, mat.m01などとする。

角度tの回転は

mat={cos(t) -sin(t) 0}
    {sin(t)  cos(t) 0}
    {  0      0     1}

であり、原点の(a,b)への移動は

mat={1 0 a}
    {0 1 b}
    {0 0 1}

である。M1, M2に対応する変換を順次施した結果はM1*M2となる。

3次元の場合は、

(u,v,w,1)' = M * (x,y,z,1)'

この行列を取得するには、

PMatrix3D mat = (PMatrix3D)getMatrix();

行列は

mat={m00 m01 m02 m03}
    {m10 m11 m12 m13}
    {m20 m21 m22 m23}
    { 0   0   0   1 }

となる。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS