Opengl 简单旋转变换问题

Opengl 简单旋转变换问题,opengl,graphics,Opengl,Graphics,我正在尝试做一件非常简单的事情,但效果不好。。。。 我画了轴(XYZ) 然后我做了以下工作: glMatrixMode(GL_MODELVIEW); glPushMatrix(); glRotated( 45 , 1 , 0 , 0 );//around X glRotated(-45 , 0 , 1 , 0); //around Y glBegin(GL_LINES); glVertex3d(0,0,0); glVertex3d( 1,1,1); glEnd(); glPop

我正在尝试做一件非常简单的事情,但效果不好。。。。 我画了轴(XYZ) 然后我做了以下工作:

glMatrixMode(GL_MODELVIEW);

glPushMatrix();

glRotated( 45 , 1 , 0 , 0 );//around X
glRotated(-45 , 0 , 1 , 0); //around Y 

glBegin(GL_LINES);
  glVertex3d(0,0,0);
  glVertex3d( 1,1,1);
glEnd();

glPopMatrix();
但不知何故,我画的线(1,1,1)并没有精确地画在Z轴上。。。。 有人能告诉我为什么吗

更新:

所以我理解的是openGL使用glRotated(45,1,0,0)旋转场景,因此Y轴不再位于0,1,0,因此下一个操作glRotated(-45,0,1,0)将不会围绕“原始”Y轴旋转。我说得对吗

让我告诉你我需要做什么: 我从用户那里得到一个方程Ax+by+Cz+D=0的平面,我需要在屏幕上画这个平面。 所以我要做的是在XY上画一个内平面,然后把它旋转到正确的位置。 我的意思是通过将Z轴和他的法线统一起来,将平面移动到他的位置。
有人能给我3个正确的操作:旋转+旋转+平移吗?

结果是正确的。如下所示:


线以立方体中的对角线开始,边平行于坐标轴。如果你让一个平面穿过一个轴,与其他轴成45度角,那么它与立方体的交点是一个矩形,而不是一个正方形——矩形的一侧(平行于坐标轴)是立方体的边,但另一侧是一个面对角线,其长度是2的平方根。你的直线是这个矩形的对角线,因此它与边的角度不是45度——这对于你的构造来说是必须的,以使它与Z轴精确对齐。

你旋转的轴与原始(参考)平面的角度不同,所以向量
(1,1,1)
不会直接指向“上”。第一次(和第二次)旋转后,原始Y轴处于45度角,但原始Z轴和X轴不处于45度角。它们确实位于与原始方向成45度角的平面上,但在该平面上,只有两个终端方向形成45度角,这与第二次旋转后的Z和X不同。
你应该试着在第一次旋转时使用60度,在第二次旋转时使用45度。这样,所有轴将与基准面成30度角,矢量
(1,1,1)
将直接指向上