【发布时间】:2011-01-24 20:37:33
【问题描述】:
我正在尝试做一件非常简单的事情,但效果不佳.... 我画了轴(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 轴与他的法线统一来将飞机移动到他的位置。 谁能给我三个正确的操作:旋转+旋转+翻译?
【问题讨论】: