現在地 >> メニュー >> サンプルコード::OpenGL >> 行列演算と移動について


行列演算と移動


物体の「平行移動」、「回転」、「拡大・縮小」などの操作は、
行列をかけることで可能。

平行移動


(tx,ty,tz)だけ平行移動する場合

[ 1, 0, 0, 0]
[ 0, 1, 0, 0]
[ 0, 0, 1, 0]
[tx, ty, tz, 1]

回転


[X軸回転]

[ 1,     0,      0,   0]
[ 0, cos(angle), -sin(angle), 0]
[ 0, sin(angle), cos(angle), 0]
[ 0,     0,      0,   1]


[Y軸回転]

[cos(angle),  0, sin(angle),   0]
[0,      1,     0,    0]
[-sin(angle), 0, cos(angle),   0]
[0,      0,      0,    1]


[Z軸回転]

[cos(zrot), -sin(zrot), 0, 0]
[sin(zrot), cos(zrot), 0, 0]
[ 0,     0,    1,   0]
[ 0,     0,    0,   1]

拡大・縮小


[ sx, 0, 0, 0]
[ 0, sy, 0, 0]
[ 0, 0, sz, 0]
[ 0, 0, 0, 1]



[例]:Y軸回転

[cos(angle),  0, sin(angle),   0][x] = [X]
[0,      1,     0,    0][y] = [Y]
[-sin(angle), 0, cos(angle),   0][z] = [Z]
[0,      0,      0,    1][1] = [1]


X = x*cos(angle) + z*sin(angle)
Y = y
Z = -x*sin(angle) + z*cos(angle)

より新しい座標(X,Y,Z)が求められる。

 >>回転とスクリーンの座標

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます