我试着做一个关于x和y轴的立方体的一个简单的旋转:OpenGL的矩阵旋转四元
我想总是以量X 旋转在x轴的立方体,并通过旋转立方体y轴通过量Y独立于x轴旋转
第一的i天真地做的:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
然后
但第一旋转OV呃x然后旋转y 我想独立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
OK,让我这样说...我想要做的就是用鼠标旋转的立方体。我想向左右控制屏幕y轴旋转,然后向下控制屏幕x轴旋转。我希望它们独立于另一个轴旋转,但仅在屏幕全局坐标轴上旋转。 如果我做2 glRotations我不会得到这种行为,因为一轴旋转使另一个旋转。 – yeahdixon 2010-07-28 07:03:01
例如旋转立方体: 没有旋转操作只显示单面 然后我做 glRotatef(90,1,0,0); \t glRotatef(45,0,1,0); \t⁃\t gives \t给我一个倾斜的立方体(钻石),当我想要一个立方体的角落朝向相机,这实际上是交换操作的结果: \t glRotatef(45,0,1,0); \t glRotatef(90,1,0,0); 我只是交换旋转命令,但当角度值翻转时会遇到相同的问题。 – yeahdixon 2010-07-28 07:03:43