Для части курсовой работы мы должны построить рабочую модель солнечной системы. У меня есть мои планы с планетами (сферами), но мы также должны рисовать ось планеты как линию сверху и снизу.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? Масштаб OpenGL - это то, что * вы * хотите, чтобы это было. Это не метры, сантиметры, футы, мили, километры или что-то еще. Это именно то, что вы хотите. Поэтому выбирайте масштаб, чтобы он делал вещи самыми легкими для вас. –
Я думал, что это просто, не имеет значения, поэтому, чтобы облегчить мой файл данных, он остался в KM –
Привет, Pez, как говорит Николь, масштаб вызывает проблему. Как вы сказали сами, линия не имеет «ширины», так сказать, но это означает, что вы делаете что-то бесконечно маленькое, пытаясь поместить несколько сотен тысяч километров в одну камеру. Не удивительно, что бесконечно тонкая линия не отображается;) –