2012-05-02 20 views
2

我正在为我的测试做准备,但我需要帮助理解关于轴的旋转。在一个问题,我承担的功能drawHouse()其绘制在xy平面上的钢丝框架的房子如本图所示:关于轴的3D旋转说明。 (简单编码)

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(); 

问题是我不知道在哪个轴上旋转哪种方式,所以如果任何人都可以给我一个简短的总结,我会被迫的。

Original question is 22 on here, PDF

+0

有些人可能会发现它真的很容易,但我只是感到困惑一点,所以请记住这考虑 – Jay

回答

2

大概你有关于gl函数的文档和转换得到应用的顺序。如果从轴被修正的角度看待转换,那么解决方案只有在转换以相反的顺序发生时才有意义,即从glRotatef(180, 1, 0, 0);开始。这样的转化。将

  1. 旋转通过绕X轴旋转180度,leavung指向下方的房子
  2. 旋转由绕Z轴旋转90度,离开家躺在X轴作为在最终图像中,无拉伸
  3. 规模* 2沿X轴,伸展出房子
+0

你好,我知道转换顺序,是的,我有笔记。是的,你的回答很有道理 – Jay

2

编辑这段文字到被接受(不正确)的答案完全不同,但它被接受后,我无法删除我的答案。

转换以相反的顺序应用。

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

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

最终缩放功能沿着轴延伸。

+0

谢谢!它现在有点合理 – Jay

+0

@jay与缩放比例不一致。如果顺序是这样的话,那么房子就会从墙壁向墙壁方向伸展,而不是从地板到屋顶。 – juanchopanza

+0

@juanchopanza你是对的 - 我没有注意到不对称缩放。 – Alnitak