2013-03-16 158 views
0

我正在通過OpenGL Superbible(第4版)。第4章有一個圍繞原子核旋轉電子的例子。 (基本上是一個大球體的小球體)。OpenGL中的翻譯和旋轉?

這裏是渲染函數的一個抽象,它在一個核(另一個球)的特定位置繪製一個電子(一個球體)。 fElect1是一個角度,每次調用渲染時都會增加10度。

glPushMatrix(); 
glRotatef(360.0f-45.0f,0.0f, 0.0f, 1.0f); 
glRotatef(fElect1, 0.0f, 1.0f, 0.0f); 
glTranslatef(0.0f, 0.0f, 60.0f); 
glColor3ub(56,136,21); 
glutSolidSphere(6.0f, 15, 15); 
glPopMatrix() 

所以 - 他將視圖圍繞z軸旋轉315度。然後以角度fElect1旋轉關於新旋轉的y軸的視圖,然後繪製球體。即他想要模擬圍繞y軸的電子軌道。結果是電子似乎圍繞球體以「傾斜」軌道運動(傾斜,因爲x軸已經傾斜了315度)。

但我的問題是 - 爲什麼他在z軸上翻譯?這是否意味着電子有一個軌道,原子核不在它的路徑的中心?但是當我運行模擬時看起來並不像這樣。

回答

1

我想也許你正在從錯誤的方向考慮操作。他們在GL中的應用方式,首先應用最「全球」轉型,最後「最」本地「轉型。因此,在考慮如何改變某些東西時,你可能想要以相反的順序思考它們。

所以:

  • 你的球在原點
  • 這在Z.翻譯出了60臺
  • 據然後繞Y軸旋轉時產生的(所以它現在繞XZ平面起點距離60個單位)。
  • 最後一切都圍繞Z軸旋轉,產生傾斜。
  • 這將進一步通過任何先前的轉換進行轉換,例如已應用於「原子」和相機的任何轉換。
+0

我一定錯過了他說什麼順序轉換的部分。這更有意義。 – BeeBand 2013-03-16 12:43:40