我试图围绕x轴和y轴进行简单的旋转:
我想总是在x轴上旋转一个数量x的立方体,并在y轴上旋转立方体y,与x轴旋转无关
首先,我天真地做了:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
Run Code Online (Sandbox Code Playgroud)
然后
但是首先在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);
Run Code Online (Sandbox Code Playgroud)
这几乎完全是做完2连续glRotates所做的...所以我想我错过了一步或2.
是四元数的方式或我应该使用不同的东西?如果四元数是我可以添加的步骤,以使立方体独立于每个轴旋转.我认为其他人也有同样的问题: 在2轴上旋转OpenGL场景