我正在调试 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]=-罪(45)
但我有相反的情况。调试器显示:
rottrs[12]=2.8284271
rottrs[13]=2.0000000
rottrs[14]=0.00000000
rottrs[15]=1.0000000
你能告诉我哪里出错了吗?