【发布时间】:2012-02-08 05:59:40
【问题描述】:
对于一个课程作业,我们必须建立一个太阳系的工作模型。我已经用行星(球体)实现了我的,但我们还必须将行星的轴绘制为上下线。
我发现使用 GL_LINES 似乎不起作用,大概是因为这个项目的规模(行星的半径是 139000000+)。
简化示例:
void drawAxis(int n)
{
/* Draws the axis for body "n" */
glColor3f(1.0,0.0,0.0);
glBegin(GL_LINES);
glVertex3f(0, bodies[n].radius, 0);
glVertex3f(0, bodies[n].radius*2, 0);
glEnd();
glColor3f(0.0,1.0,0.0);
glBegin(GL_LINES);
glVertex3f(0, -bodies[n].radius, 0);
glVertex3f(0, -bodies[n].radius*2, 0);
glEnd();
}
void drawBody(int n)
{
if(n==0) {
/* Draws body "n" */
//glRotatef(bodies[n].axis_tilt, 1.0, 0.0, 0.0);
//Scale and position
glTranslatef(0.0, 0.0, 0.0);
glScalef(SCALE,SCALE,SCALE); //why already scaled?
//Axis
drawAxis(n);
//r g b - colour (red, green, blue)
glColor3f(bodies[n].r,bodies[n].g,bodies[n].b);
//radius - size of body (km)
glutSolidSphere (bodies[n].radius/SCALE, 50, 50);
}
}
抽奖:
我在这里遗漏了什么重要的东西吗?
在这个球体上绘制轴的最佳“解决方法”是什么?
【问题讨论】:
-
"行星的半径是 139000000+" 为什么?为什么行星的半径不是1.39?比例是 OpenGL 是 你 想要的。它不是米、厘米、英尺、英里、公里或其他什么。这正是你想要的。所以选择你的体重秤,让它对你来说最简单。
-
我认为简单没关系,所以为了方便我的数据文件,将它保存在 KM
-
您好 Pez,正如 Nicol 所说,秤导致了问题。正如您自己所说,这条线实际上并没有“宽度”,可以这么说,但这意味着当您尝试将数十万公里放入一个相机镜头时,您正在渲染无限小的东西。没有显示无限细的线并不奇怪;)
-
Pez,你有没有试过在画轴之前调用 glLineWidth() ?你可以传入一些更大的值,看看会发生什么。