Объект КОРОБКА - это открытая коробка с поднятой крышкой. В контексте графики мы могли бы раскрасить, например, внешнюю поверхность шести ее граней синим цветом, а внутреннюю - зеленым. (Что получится, если мы удалим одну грань у ПИРАМИДЫ с рис. 6.8?)

На рис. 6.9 также приведены две сложные поверхности: СТРУКТУРА и ЛИЦО. В этих примерах полигональные грани используются для аппроксимации гладкой истинной поверхности. В ряде случаев сетка - это все, что известно о данном объекте, например, при оцифровке точек лица человека. Если каждую грань сетки изобразить в виде закрашенного полигона, то изображение будет выглядеть неестественным, как и наблюдается в случае объекта ЛИЦО. В дальнейшем мы изучим инструменты, с помощью которых можно попытаться нарисовать истинную поверхность только на базе каркасной модели.

Многие программные пакеты геометрического моделирования конструируют модель некоторого объекта - тела или поверхности, - которая должна описывать истинную форму объекта с помощью полигональной сетки. Задача составления списков вершин, нормалей и граней может оказаться трудной. В качестве примера рассмотрим составление алгоритма, генерирующего списки вершин и граней для аппроксимации формы блока двигателя, протеза конечности или здания. При использовании достаточного числа граней сетка может аппроксимировать «истинную поверхность» с любой желаемой степенью точности. Свойство полноты (completeness) делает полигональные сетки гибким средством моделирования.

6.2.5. Работа с сетками в программе Нам нужен эффективный способ программного описания сетки, упрощающий создание и рисование объекта, представляемого этой сеткой. Поскольку данные по сетке часто сохраняются в файле, нам нужны также простые способы чтения и записи «сеточных файлов». Тогда естественно определить класс Mesh и наделить его желаемыми функциональными возможностями.

Листинг 6.1. Примерный тип данных для сетки

//И И II II II II II II II II It Ii НИШ VertexID II II II II II II II II II II II II II II II II II class VertexID{ public:


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