Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_3D-mod.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
10.94 Mб
Скачать

9.4. Триангуляция поверхностей

Генерация объемных изображений является сложной вычислительной задачей, в связи с чем на практике выполняют ее декомпозицию. Сложные изображения разбивают на составные части. Процесс разбиения поверхности объектов на полигоны называется тесселяцией. Но наиболее часто производится разбиение изображений на треугольники. Это объясняется следующими причинами:

треугольник является простейшим полигоном, вершины которого однозначно задают грань;

любую область можно гарантировано разбить на треугольники;

вычислительная сложность алгоритмов разбиения на треугольники существенно меньше, чем при использовании других полигонов;

реализация процедур визуализации более проста для области, ограниченной треугольником;

для треугольника легко определить три его ближайших соседа, имеющих с ним общие грани.

Процесс разбиения полигональной области со сложной конфигурацией в набор треугольников называется триангуляцией.

Любая поверхность может быть аппроксимирована с необходимой точностью сеткой треугольников. Точность аппроксимации определяется количеством треугольников и способом их выбора. Для качественной визуализации объекта, находящегося вблизи точки наблюдения, требуется учесть во много раз больше треугольников, чем в ситуации, когда тот же объект расположен на удалении.

В компьютерной графике задача триангуляции рассматривается в двух направлениях – триангуляция полигональных областей и триангуляции набора точек. Триангуляцию точек на плоскости используется при описании поверхности набором точек и интенсивностями их цветов.

Поточечное описание поверхностей применяют в тех случаях, когда поверхность очень сложна и не обладает гладкостью, а детальное представление многочисленных геометрических особенностей важно для практики.

Простейшее решение задачи триангуляции состоит в разделении полигона вдоль некоторой хорды на два полигона и в дальнейшем рекурсивном разбиении их до тех пор, пока подлежащий триангуляции полигон не станет треугольником.

Данный способ применим лишь для триангуляции выпуклых полигонов.

Триангуляция невыпуклых полигонов более сложна, поэтому желательно предварительно разбить невыпуклые многоугольники на выпуклые для упрощания их последующей обработки. Вначале желательно перенести и повернуть многоугольник так, чтобы одна из его вершин совпала с началом координат, а исходящая из нее сторона — с осью . При расположении каких-либо сторон ниже оси, происходит их отсечение. Алгоритм рекурсивно повторяют для полученных полигонов, пока они не станут выпуклыми (рис. 9.6).

Рис. 9.6 Разбиение невыпуклого многоугольника

В рассмотренном примере выбирается крайняя левая вершина и между двумя ее смежными сторонами проводится диагональ. При этом могут получиться следующие два случая: рис. 9.6 а — диагональ AC является хордой; рис. 9.6 б — диагональ AC не хорда, так как внутрь треугольника ABC попадает вершина D полигона (в общем случае их может быть несколько). Из всех вершин внутри треугольника ABC вершина D наиболее удалена от стороны AC. Эта вершина называется вторгающейся. В случае, когда такой вершины нет, полученный треугольник заносится в сетку треугольников, и алгоритм рекурсивно обрабатывает оставшийся полигон до тех пор, пока он не выродится в треугольник.

При обнаружении вторгающейся вершины проводится диагональ из текущей до вторгающейся вершины. Полученные полигоны рекурсивно обрабатываются до получения треугольников.

Иногда для разбиения многоугольника на треугольники находят внутреннюю точку области, ограниченной полигоном, и соединяют с ней все вершины (рис. 9.7).

Рис. 9.7 Разбиение средней точкой

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]