2011-06-02 95 views
0

我試圖得到一個對象繞原點(0,0,0)的OpenGL ES繞點

我下面從這個blog一些指導原則,並能得到基本圍繞Z軸旋轉,圍繞Z azis形成一個非常緊密的圓圈。

當我將它更改爲X或Y軸時,我製作的三角形將在我身後,然後從另一側出現。

我希望實現的基本效果是讓它在相機的正面旋轉。

我知道我必須按我想要的數量旋轉它,然後將它翻譯回原點,但我不太確定如何弄清楚要翻譯多少。

有人能給我一個正確的方向推這個特別是我需要用來正確翻譯它的​​公式?

回答

4

難以在沒有看到您的代碼的情況下回答,但聽起來您想先將三角形的中心轉換爲原點,旋轉,然後再轉回到三角形的原始位置。 glRotate()圍繞原點旋轉,而不是任意點。

所以,有效地,

glTranslatef(centerX, centerY, centerZ); 
glRotatef(angle, 0, 0, 1); 
glTranslatef(-centerX, -centerY, -centerZ); 

記住,OpenGL的變換以相反的順序施加它們在代碼中指定,因此,上述由平移 - (的centerX,centerY,centerZ),然後旋轉,然後(centerX,centerY,centerZ)翻譯回來。

查看Chapter 3 of the OpenGL Programming Guide瞭解更多信息。

+0

我試過了,唯一的區別是我所有的值都是0,我認爲它會是中心,但似乎[0,0,0]不是我的中心呢? – BOMEz 2011-06-03 05:29:04

+0

「中心」,我的意思是旋轉的中心 - 你想旋轉的中心。如果要旋轉繞過三角形頂點之一,則使用該頂點的(x,y,z)值作爲(centerX,centerY,centerZ)值。如果你想旋轉繞過三角形的中心,那麼你需要計算三角形中心的點並使用這些值。三角形的中心可以簡單地通過對頂點進行平均來計算,例如,cx =(x1 + x2 + x3)/ 3,其中x1是第一個頂點的x座標等。 – Adrian 2011-06-03 14:59:16