2013-10-10 57 views
1

我在原點有一架飛機。使用平面正常旋轉

glBegin(GL_POLYGON); 
glVertex3f(-10.0, -10.0,0.0); 
glVertex3f(10.0, -10.0, 0.0); 
glVertex3f(10.0, 10.0, 0.0); 
glVertex3f(-10.0, 10.0, 0.0); 
glEnd(); 

比我想這個旋轉平面的一個新的正常的1 0 0

據我所知,計算兩個法線之間的角度,我需要找到舊常態。我怎樣才能找到舊的正常?當我發現舊的正常,我必須進入新的法線旋轉,如glRotatef(angle,1,0,0)

+1

您不需要「查找舊的法線」,因爲1沒有任何「舊法線」,2您需要根據頂點計算法線。 – Vallentin

+0

你的意思是像使用3點和尋找載體,如PQ和PR,並跨產品這兩個向量?當我這樣做,我得到0,因爲我沒有在我的飛機上的深度 – james456

+0

沒有看到你沒有使用z /深度,如果你不使用深度,那麼正常將永遠是'(X,Y, Z)=(0,0,1)' – Vallentin

回答

0

所有的頂點都位於XY平面內,因此您的法線僅在Z方向(0,0,1)或(0,0,-1)。如果要旋轉多邊形以將其法線指向X方向,則需要繞Y軸旋轉90度,glRotatef(90.0f,0,1,0)或glRotatef(-90.0f,0,1, 0)。