最終更新: mikk_ni3_92 2008年01月07日(月) 15:27:16履歴
現在地 >> メニュー >> サンプルコード::OpenGL >> 行列演算と移動について
[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)が求められる。
>>回転とスクリーンの座標
[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)が求められる。
>>回転とスクリーンの座標