关于轴的3D旋转的说明。 (简单编码)

时间:2012-05-02 07:35:06

标签: c++ 3d matrix rotation

我正在准备我的测试,但我需要帮助了解关于轴的旋转。在一个问题中,我将假设一个函数drawHouse(),它在xy平面中绘制一个线框,如下图所示:

house before transformation

我们获得了多个代码段的选择,并询问哪一个会导致这个转换后的房子:

enter image description here

正确答案如下:但我不确定命令是从后到前还是从前到后执行:

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glScalef(2, 1, 1); 
glRotatef(90, 0, 0, 1); 
glRotatef(180, 1, 0, 0); 
drawHouse(); 

问题在于我不知道在WHICH轴上旋转的方式,所以如果有人能给我一个简短的总结,我将不得不承担。

Original question is 22 on here, PDF

2 个答案:

答案 0 :(得分:2)

编辑此文字与接受的(不正确)答案完全不同,但在接受答案后我无法删除答案。

转换以相反的顺序应用。

第一次旋转(函数中的最后一次)通过围绕x轴旋转翻转房屋。

第二个围绕z轴旋转,使其指向右侧。

最终缩放功能沿x轴拉伸。

答案 1 :(得分:2)

据推测,您有gl函数的文档以及应用转换的顺序。如果你根据被修复的轴来看转换,那么只有当转换以相反的顺序发生时,解决方案才有意义,即从glRotatef(180, 1, 0, 0);开始。所以转换将是

  1. 围绕X轴旋转180度,使房子向下指向
  2. 围绕Z轴旋转90度,使房子像最终图像一样位于X轴上,不会拉伸
  3. 沿X轴缩放* 2,拉伸房屋