我正在尝试对一个立方体进行简单的绕x轴和y轴旋转:
我想始终将立方体绕x轴旋转x角度,并将立方体绕y轴旋转y角度,独立于x轴旋转。
首先我天真地做了以下操作:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
然后
但是首先要绕x轴旋转,然后再绕y轴旋转,我想独立地绕y轴旋转。
我开始研究四元数,所以我尝试了:
Quaternion Rotation1;
Rotation1.createFromAxisAngle(0,1, 0, globalRotateY);
Rotation1.normalize();
Quaternion Rotation2;
Rotation2.createFromAxisAngle(1,0, 0, globalRotateX);
Rotation2.normalize();
GLfloat Matrix[16];
Quaternion q=Rotation2 * Rotation1;
q.createMatrix(Matrix);
glMultMatrixf(Matrix);
这个代码几乎实现了通过连续的glRotates所实现的效果...所以我认为我可能缺少一两个步骤。
四元数是正确的选择吗?还是应该使用其他方法?如果四元数是正确的选择,那么我可以添加哪些步骤来使立方体独立于每个轴旋转。 我认为有人遇到了相同的问题: 在两个轴上旋转OpenGL场景