2013-03-14 66 views
-1

我正在製作一個3D太陽系&我需要在3D視圖中查看一個實際上是行星將在其上移動的軌道。GL_LINE_LOOP在3D視圖中,openGL C++

glBegin(GL_LINE_LOOP); 
for(int i =0; i <= 300; i++) 
{ 
    double angle = 2 * 3.1416 * i/300; 
    double x = .12 * cos(angle); 
    double y = .12 * sin(angle); 
    glVertex2d(x,y); 
    glColor3f(1,1,1); 
} 
glEnd(); 

這是我用來查看軌道的代碼。我如何在openGL C++中將其視爲3D視圖?

+0

我會嘗試用更簡單的語言重申下面的答案。你需要一切都是3d,這樣所有的幾何(行星+軌道)作爲一個整體是一致的。這意味着使用3個座標指定基於正弦/餘弦的路徑。如果一切都在z = 10平面上,則改爲使用glVertex3d(x,y,10.0)。 – 2013-03-14 19:54:57

回答

1

如果您正在尋找的是在3D座標空間中創建頂點,那麼您應該使用:glVertex3dglVertex3f。請注意,這些函數需要3個參數,第一個參數是double頂點的xyz座標,第二個參數是float

在您的軌道代碼中,您應該生成一個額外的z座標以及您已經計算的xy座標。

0

它是一個非常廣泛的問題。我建議你看看NeHe tutorials

一旦你有一個3D窗口設置渲染,然後設置模型視圖矩陣來旋轉軌道。

如果您實際上想要創建點並將它們存儲在其旋轉位置,則可以使用模型矩陣將點轉成3D變換點。

+0

我最初給了downvote,因爲NeHe的教程非常過時,應該避免,但我已經刪除它,因爲答案是有幫助的。 – 2013-03-14 19:29:35

+0

謝謝。 NeHe教程仍然相關,並將爲他的目的提供足夠的洞察矩陣。 – Pete 2013-03-14 20:10:03

+0

@RaduChivu爲什麼要避免它們? – Pete 2013-03-14 20:11:06