2012-05-02 29 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