我试图通过增加轴的旋转角度值来实现围绕 3 个轴的对象旋转,并显示这些轴以使观看者可以预测下一个旋转方向。但旋转几次后,仅按照显示轴绕Z轴旋转。有没有可能可以简单地完成它,而无需仔细研究四元数?
glPushMatrix ();
glRotatef (angleX, 1.0, 0.0, 0.0);
glRotatef (angleY, 0.0, 1.0, 0.0);
glRotatef (angleZ, 0.0, 0.0, 1.0);
glBegin(GL_LINES);
glVertex3f(80.0, 0.0, 0.0); //x axis
glVertex3f(-80.0, 0.0, 0.0);
glVertex3f(0.0, 80.0, 0.0); //y axis
glVertex3f(0.0, -80.0, 0.0);
glVertex3f( 0.0, 0.0, 80.0); //z axis
glVertex3f( 0.0, 0.0, -80.0);
//here is some code for drawing arrows at axes ends
glEnd();
glPopMatrix();
Edit:我有这样的轴:http://img841.imageshack.us/i/arrowsx.jpg/ http://img841.imageshack.us/i/arrowsx.jpg/angleX、angleY、angleZ 是按键时递增的全局变量 - 例如按“A”后,angleX 增加 10,我预计 X 轴此后不会移动,Y 轴和 Z 轴将绕 X 轴旋转。但只有当我仅更改一个角度变量时,情况才是如此。绕多个轴旋转后,当我改变时,例如angleX - 图片中的所有轴都会改变它们的位置。