Построение полигональной сетки 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Построение полигональной сетки



 

Оказывается, выгоднее связывать нормальный вектор с каждой вершиной грани, чем задавать одну нормаль для целой грани, подобная практика упрощает процесс отсечения и процесс закрашивания для гладких криволинейных форм. Для плоских поверхностей, каждая из вершин v 1, v 2, v 3, будет ассоциирована с одной и той же нормалью n 0, которая является нормальным вектором для всей грани (рис. 2.1).

На рис. 2.1 и 2.2 показан тетраэдр. Он имеет 4 полигональные грани и 4 вершины (каждая из которых одновременно принадлежит трем граням). У тетраэдра имеется всего 4 различных нормальных векторов: по одной на каждую грань, как показано на рис. 2.2.

Существует много различных способов хранения информации о сетке в файле или в программе. Для данного тетраэдра можно использовать список из четырех полигонов и для каждого из них список, содержащий вершины полигона и нормали в каждой из этих вершин (всего 12 вершин и 12 нормалей). Однако такая структура была бы избыточной и громоздкой, поскольку у нас всего 4 различные вершины и 4 различные нормали.

Более эффективным является подход, при котором используются три отдельных списка: список вершин, список нормалей и список граней. В списке вершин содержаться координаты различных вершин сетки. В списке нормалей описываются направления различных нормальных векторов, которые имеются в данной модели. Список граней является просто индексом для остальных двух списков.

Таблица 1. Список вершин для тетраэдра

Вершина v x y z
0 0 0 0
1 1 0 0
2 0 1 0
3 0 0 1

                                    

 

 

Таблица 2. Список различных встречающихся нормалей

Нормаль n x y z
0 0.577 0.577 0.577
1 0 0 -1
2 -1 0 0
3 0 -1 0

                                                             

 

 

Все три списка работают совместно: список вершин содержит информацию об их координатах, или геометрии; список нормалей содержит информацию об ориентации; а список граней содержит информацию о связности, или топологии.

Список вершин для нашего тетраэдра приведен в табл. 1. Список из четырех различных нормалей приведен в табл. 2. индексы вершин и нормалей изменяются от 0 до 3. Все векторы, приведенные в списке нормалей, уже нормированы, поскольку для большинства алгоритмов закраски требуются единичные векторы.

Грань f Вершины v Ассоциированная нормаль n
0 1, 2, 3 0, 0, 0
1 0, 2, 1 1, 1, 1
2 0, 3, 2 2, 2, 2
3 1, 3, 0 3, 3, 3

 Таблица 3. Список граней для тетраэдра

В табл. 3. приведен список граней тетраэдра: у каждой грани имеется свой список вершин и нормальный вектор, ассоциированный с каждой вершиной. Для экономии пространства вместо вершин и нормалей используются только индексы.

(Поскольку каждая поверхность плоская, всем вершинам одной грани соответствует одна и та же нормаль). Список вершин для каждой грани начинается с какой-либо вершины на этой грани и обходит эту грань от вершины к вершине до тех пор, пока не будет пройден полный круг. Существует два способа обхода полигона: по и против часовой стрелки. Например, грань f 2 может быть внесена в список как (v 0, v 3, v 2) или как (v 2, v 3, v 0). Можно использовать любое направление, однако мы следуем соглашению, которое принято на практике: обходим полигон против часовой стрелки, если смотреть на объект снаружи.



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 57; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.38.24 (0.005 с.)