glNormal3f(norm[in].x, norm[in].y, norm[in].z):
glVertex3f(pt[iv].x. pt[iv].y, pt[iv].z):
}
glEndO:
}
}

Нам также нужны методы для построения нужной сетки и чтения заданной сетки из файла в память. Затем мы перейдем к исследованию различных семейств интересных форм, которые могут быть записаны в виде сетки, а также увидим, как создавать эти формы. (В тематическом задании 6.1 мы рассмотрим чтение сеток из файла и запись их в файл.)

Использование SDL для создания и рисования каркасных объектов В графических приложениях удобно читать описания сеток, используя язык SDL, с которым мы познакомились в главе 5. Чтобы осуществить это, нужно образовать из класса Shape производный класс Mesh и добавить метод drawOpenGLO. Поэтому дополним программу из листинга 6.4 следующим кодом:

class Mesh : public Shape { // same as in Figure 6.13 // то же, что и на рис. 6.13 virtual void drawOpenGLO

{

tel1MaterialsGL(): glPushMatrix(): // load properties // загружаем свойства

6.3. Многогранники

glMultMatrixf(transf.m):

drawO: // draw the mesh // рисуем сетку

glPopMatrixO:
}

// end of Mesh class // конец класса Mesh

Теперь класс Scene, способный читать SDL-файлы, настроен для восприятия ключевого слова mesh, за которым следует имя файла, содержащего описание сетки. Следовательно, для создания и прорисовки шахматной пешки с необходимым перемещением и масштабированием можно использовать следующую команду:

push translate 3 5 4 scale 3 3 3 mesh pawn.3vn pop

(Ряд таких файлов с суффиксом 3vn доступен на web-сайте данной книги.)

6.3. Многогранники Часто бывает удобно ограничить данные в сетке так, чтобы она изображала многогранник (полиэдр). Огромное число интересных объемных объектов в действительности являются полиэдрами; кроме того, алгоритмы вычисления сетки могут быть значительно упрощены, если нам требуются только сетки, представляющие многогранники.

В различных контекстах используются несколько различающиеся определения полиэдра [Coxeter, 50, Hilbert, 107, Foley, 64], однако мы будем применять следующее.

Определение. Полиэдром называется связная сетка из простых плоских полигонов, которая ограничивает конечный объем пространства.


⇐ Предыдущая| |Следующая ⇒