我试图做一个立方体绕 x 和 y 轴的简单旋转:
我想始终将立方体在 x 轴上旋转 x 量,并将立方体在 y 轴上旋转 y 量,与 x 轴旋转无关
首先我天真地做了:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
然后
但是首先在 x 上旋转然后在 yi 上旋转想要独立于 x 访问在 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);
这几乎完全完成了连续 2 次 glRotates 所完成的工作......所以我认为我错过了一个或 2 步。
四元数是要走的路还是我应该使用不同的东西?如果四元数是可行的方法,我可以添加哪些步骤来使立方体独立于每个轴旋转。我认为其他人也有同样的问题: Rotating OpenGL scene in 2 axes