OpenGLで行列の乗算をデバッグしていて、結果の行列で実行された位置ベクトルを取得しています。
これが私のコードです:
{
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRotatef(45,0.0f,1.0f,0.0f);
glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)&rot);
glLoadIdentity();
glTranslatef(2.0f,2.0f,2.0f);
glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)&trs);
glLoadIdentity();
glLoadMatrixf(rot);
glMultMatrixf(trs);
glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)&rottrs);
glPopMatrix();
}
数学的な観点からすると、rottrs [12]では2xcos(45)-2xsin(45)、rottrs [14]では2xcos(45)+ 2xsin(45)を取得する必要があります。これは、rot [0] = cos(45)とrotであるためです。 [2] =-sin(45)
しかし、私はその逆をしています。デバッガーは次のことを示します。
rottrs [12] = 2.8284271
rottrs [13] = 2.0000000
rottrs [14] = 0.00000000
rottrs [15] = 1.0000000
どこが悪いのか教えていただけますか?