교과 과정을 위해 우리는 태양계의 작업 모델을 구축해야합니다. 저는 행성 (구체)으로 구현 했습니다만, 행성의 축을 위와 아래의 선으로 그려야합니다.OpenGL 그리기 "축"
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 인 이유는 무엇입니까? Scale is OpenGL은 당신이 원하는 * 것입니다. 미터, 센티미터, 피트, 마일, 킬로미터 등이 아닙니다. 그것은 당신이 원하는 것입니다. 그러니 가늠자를 골라 내 것이 가장 쉽습니다. –
간단하다고는 생각하지 않았습니다. 데이터 파일을 KM –
Pez에 보관하면 쉽게 처리 할 수 있습니다. Nicol은 스케일이 문제의 원인이라고 말합니다. 자기가 말했듯이, 선은 말하자면 실제로 '너비'가 없지만, 이는 한 번의 카메라 촬영에 수십만 킬로미터를 맞추려고 할 때 무언가 작은 것을 렌더링한다는 것을 의미합니다. 무한히 얇은 선이 표시되지 않는 것은 놀라운 일이 아닙니다.) –