2013-03-14 79 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