C++で3次元座標回転させるプログラムを作成しております。
以下が条件となります。
V0(-1, 0, 0 )
V1( 1, 0, 0 )
V2(-1,-2, 0 )
V3( 1,-2, 0 )
V4(-1, 0,-12)
V5( 1, 0,-12)
V6(-1,-2,-12)
V7( 1,-2,-12)
X軸を基準に45度回転
Y軸を基準に-90度回転
X軸を基準に0度回転
この条件時に、以下のプログラムを走らすと、x軸上に直方体が傾いてきません。
Y軸回転は上手くいくのですが、X軸回転がうまくいかず、なぜかZ軸で45度回転してしまいます。
どなたか原因分かりますでしょうか?
for (int k = 0; k < 8; k++)
{
//Z Axis Rotation
x_process1[k] = x[k] * cos(b_d[i].kaiten * radian) - y[k] * sin(b_d[i].kaiten * radian);
y_process1[k] = x[k] * sin(b_d[i].kaiten * radian) + y[k] * cos(b_d[i].kaiten * radian);
z_process1[k] = z[k];
//Y Axis Rotation
z_process2[k] = z_process1[k] * cos(-x_z_angle * radian) - x_process1[k] * sin(-x_z_angle * radian);
x_process2[k] = z_process1[k] * sin(-x_z_angle * radian) + x_process1[k] * cos(-x_z_angle * radian);
y_process2[k] = y_process1[k];
//x Axis Rotation
y_kaiten[k] = y_process2[k] * cos(x_y_angle * radian) - z_process2[k] * sin(x_y_angle * radian);
z_kaiten[k] = y_process2[k] * sin(x_y_angle * radian) + z_process2[k] * cos(x_y_angle * radian);
x_kaiten[k] = x_process2[k];
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。