- •Часть 1. Основные алгоритмы
- •Введение
- •Предмет компьютерной графики
- •Основные понятия Векторные и растровые графические системы.
- •Программистская модель компьютерной графики
- •Координатные системы компьютерной графики
- •Геометрические преобразования Двумерные преобразования
- •Однородные координаты и матричное представление двумерных преобразований
- •Трехмерные матричные преобразования
- •Вопросы эффективности вычислений
- •Пример композиции трехмерных преобразований
- •Проецирование
- •Виды параллельных проекций
- •Центральные (перспективные) проекции
- •Геометрические модели трехмерных объектов
- •Полигональные сетки
- •Параметрические кубические кривые
- •Параметрические бикубические поверхности
- •Преобразования параметрических кривых и поверхностей
- •Основные растровые алгоритмы
Полигональные сетки
Полигональные сетки представляют собой совокупность вершин, ребер и многоугольников. В качестве примера на рисунке 28 показана полигональная сетка, состоящая из шести вершин V1…V6, девяти реберE1…E9, и четырех многоугольниковP1…P4.
Сетку можно представить несколькими различными способами .
При явном задании многоугольниковкаждый многоугольник представляется в виде списка координат его вершин:
Вершины многоугольника запоминаются в том порядке, в котором они встречаются при обходе вокруг многоугольника. Все последовательные вершины многоугольника, а также первая и последняя вершины, соединяются ребрами.
Для описания сетки, показанной на рисунке необходимо описать четыре многоугольника.
P1= ((x1,y1,z1), (x5,y5,z5), (x6,y6,z6)),
P2= ((x1,y1,z1), (x2,y2,z2), (x5,y5,z5)),
P3= ((x2,y2,z2), (x3,y3,z3), (x5,y5,z5)),
P4= ((x3,y3,z3), (x4,y4,z4), (x5,y5,z5)),
Этот способ записи является эффективным для каждого отдельного многоугольника. Для полигональной сетки этот метод приводит к большим потерям памяти из-за дублирования информации о координатах общих вершин многоугольников, а также не дает явного описания общих ребер и вершин. Для поиска всех многоугольников, имеющих общую вершину, требуется сравнение троек координат одного многоугольника с тройками координат всех остальных многоугольников. Если же из-за ошибок округления одна и та же вершина в разных многоугольниках имеет разные координаты, то результат поиска может быть нулевой.

При визуализации полигональной сетки общие ребра рисуются дважды – по одному разу для каждого многоугольника.
При задании многоугольников с помощью указателей в список вершинкаждый узел полигональной сетки запоминается лишь один раз в списке вершин. Каждый многоугольник определяется списком указателей в список вершин. Так, для сетки показанной на рисункеXXXпридется построить следующее описание.
V= (V1(x1,y1,z1), V2(x2,y2,z2), V3(x3,y3,z3),
V4(x4,y4,z4), V5(x5,y5,z5), V6(x6,y6,z6)),
P1= (1,5,6),P2= (1,2,5),P3= (2,3,5),P4= (3,4,5).
Этот метод требует меньшего объема памяти, легко изменить, например передвинуть любую вершину, но общие ребра многоугольников по-прежнему рисуются дважды.
При явном задании ребер многоугольников полигональная сетка задается в виде иерархической модели. Координаты каждого узла полигональной сетки запоминаются в списке вершин.
Создается список ребер, где каждое ребро указывает на две вершины в списке вершин. Каждый многоугольник задается как совокупность указателей на элементы списка ребер.
Полигональная сетка изображается вычерчиванием всех ребер (а не всех многоугольников).
Так, для сетки показанной на рисунке XXXпридется построить следующее описание.
V= (V1(x1,y1,z1), V2(x2,y2,z2), V3(x3,y3,z3),
V4(x4,y4,z4), V5(x5,y5,z5), V6(x6,y6,z6));
E1 = (1, 2),E2 = (2, 3),E3 = (3, 4),E4 = (4, 5),E5 = (5, 6),
E6 = (6, 1),E7 = (1, 5),E8 = (2, 5),E9 = (3, 5);
P1= (7,5,6),P2= (8,7,1),P3= (2,9,8),P4= (3,4,9).
Заданную таким способом полигональную сетку наиболее просто проверять на непротиворечивостьпредставления, т.е. на выполнение некоторых условий: что все многоугольники замкнуты, что все ребра используются по крайней мере один раз, но не более некоторого максимального числа раз, что на каждую вершину есть ссылка по крайней мере от двух ребер и т.п. Проверка непротиворечивости представления наиболее важна для полигональных сеток, созданных в интерактивном режиме (например, при оцифровке объектов), когда ошибки практически неизбежны.
