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], однако мы будем применять следующее.
Определение. Полиэдром называется связная сетка из простых плоских полигонов, которая ограничивает конечный объем пространства.