gpt4 book ai didi

c - OpenGL绘图 "axis"

转载 作者:行者123 更新时间:2023-11-30 14:26:23 25 4
gpt4 key购买 nike

对于类(class)作业,我们必须构建太阳系的工作模型。我用行星(球体)实现了我的,但我们还必须将行星的轴绘制为上方和下方的线。

我发现使用 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);
}
}

抽奖:

SolarSystem

我在这里遗漏了一些重要的东西吗?

在此球体上绘制轴的最佳“解决方法”是什么?

最佳答案

glScalef(SCALE,SCALE,SCALE); //why already scaled? 

...

glutSolidSphere (bodies[n].radius/SCALE, 50, 50);

这没有任何意义。为什么要应用统一比例,然后用球体的比例除以它,从而撤销比例?完全没有比例并且只使用 bodies[n].radius 不是更有意义吗?

这就是你的问题的根源。看,当您绘制球体时,您撤消了不必要的比例,但是当您绘制轴时,您没有撤消它。如果你去掉不必要的比例,它就更有可能发挥作用。

关于c - OpenGL绘图 "axis",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com