Как нарисовать параллелепипед?
От: BioComp  
Дата: 31.05.05 17:47
Оценка: -1
Здравствуйте.
Вот такой вопрос возник.
В общем, мне нужно получить координаты точек прямоугольного параллелепипеда и нарисовать его по этим координатам. Параллелепипед задаётся своими размерами и количеством сегментов, на которые он делится по каждой оси.
Это всё я делаю в OpenGl.

Координаты точек я, конечно, получил, самая сложность в том, чтобы нарисовать его теперь по этим точкам. Наверняка для этого есть какие-то стандартные алгоритмы, но я их не нашёл ):.

А может, можно вообще как-то создать такой примитив и просто получить доступ к его координатам? Этого я тоже не нашёл.

Ну так вот, где поискать? Или алгоритм подскажите какой-нибудь...
Заранее всем спасибо.
Re: Как нарисовать параллелепипед?
От: Arsenicum Россия  
Дата: 01.06.05 15:21
Оценка:
Здравствуйте, BioComp, Вы писали:

BC>Здравствуйте.

BC>Вот такой вопрос возник.
BC>В общем, мне нужно получить координаты точек прямоугольного параллелепипеда и нарисовать его по этим координатам. Параллелепипед задаётся своими размерами и количеством сегментов, на которые он делится по каждой оси.
BC>Это всё я делаю в OpenGl.
Не ясно зачем делить его на сегменты, это же все-таки 6-прямоугольников. Или есть какой-то смысл?

BC>Координаты точек я, конечно, получил, самая сложность в том, чтобы нарисовать его теперь по этим точкам. Наверняка для этого есть какие-то стандартные алгоритмы, но я их не нашёл ):.

Используй GL_QUADS для отрисовки всех граней:
glBegin(GL_QUADS);
    glVertex3f(x1, y1, z1);
    glVertex3f(x2, y2, z2);
    glVertex3f(x3, y3, z3);
    glVertex3f(x4, y4, z4);
glEnd();

где { xi, yi, zi } координаты четырех вершин грани.

BC>А может, можно вообще как-то создать такой примитив и просто получить доступ к его координатам? Этого я тоже не нашёл.

Если используешь GLU — глянь функцию gluNewQuadric.

BC>Ну так вот, где поискать? Или алгоритм подскажите какой-нибудь...

BC>Заранее всем спасибо.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Как нарисовать параллелепипед?
От: BioComp  
Дата: 01.06.05 16:12
Оценка:
Здравствуйте, Arsenicum, Вы писали:

A>Не ясно зачем делить его на сегменты, это же все-таки 6-прямоугольников. Или есть какой-то смысл?


На сколько я знаю, смысл есть. Просто если разбить прямоугольник каждой стороны на несколько прямоугольников, это будет реалистичнее выглядеть в плане освещения.
Хотя, я могу ошибаться.

И вот если каждая сторона — не просто прямоугольник, а несколько, то высчитать точки и прорисовать все грани становится трудно.

A>Используй GL_QUADS для отрисовки всех граней

A>glBegin(GL_QUADS);
A>    glVertex3f(x1, y1, z1);
A>    glVertex3f(x2, y2, z2);
A>    glVertex3f(x3, y3, z3);
A>    glVertex3f(x4, y4, z4);
A>glEnd();

Это понятно. Я вообще рисую через glDrawElements().

A>Если используешь GLU — глянь функцию gluNewQuadric.

Я не знаю, как потом достать координаты точек этого объекта. А мне это надо.
Re[3]: Как нарисовать параллелепипед?
От: Arsenicum Россия  
Дата: 07.06.05 14:52
Оценка:
В таком случае я бы предложил все делать своими руками (не надеясь на GLU). Например, организовать свою иерархию классов в которой и на объект Parallelepiped найдется свой метод Draw и конструктор с параметрами n — число делений по горизонтали, m — по вертикали. Если проект большой то в последствии от грамотного дизайна будут только плюсы.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: Как нарисовать параллелепипед?
От: hemmul США  
Дата: 07.06.05 15:02
Оценка:
Здравствуйте, BioComp, Вы писали:

A>>Не ясно зачем делить его на сегменты, это же все-таки 6-прямоугольников. Или есть какой-то смысл?


BC>На сколько я знаю, смысл есть. Просто если разбить прямоугольник каждой стороны на несколько прямоугольников, это будет реалистичнее выглядеть в плане освещения.

BC>Хотя, я могу ошибаться.
не-а. не ошибаетесь (смотреть пункт 2 — Poor Tessellation Hurts Lighting)

vox clamantis in deserto
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.