
- •Глава 9. Описание и характеристика поверхностей 3
- •Глава 14. Трассировка лучей 82
- •Глава 15. Цвет в компьютерной графике 90
- •Глава 16. Сжатие графических изображений 96
- •Глава 9. Описание и характеристика поверхностей
- •9.1. Описание поверхностей
- •Параметрическое описание
- •Описание неявными функциями
- •Поточечное описание
- •Фрактальное описание
- •9.2. Характеристики поверхностей
- •Поверхности 1-го порядка
- •Поверхности 2-го порядка
- •Фрактальные поверхности
- •9.3. Моделирование деформации трехмерных полигональных поверхностей в режиме реального времени
- •Метод деформации на основе использования неявного задания поверхности объекта
- •Метод деформации плоских протяженных объектов
- •Метод деформации тела, заданного полигональной сеткой
- •9.4. Триангуляция поверхностей
- •Уровень детализации (lod)
- •Глава 10. Получение реалистичных изображений
- •10.1. Методы создания реалистических изображений
- •Перспективные проекции
- •Передача глубины яркостью
- •10.2. Перспективные изображения
- •Глава 11. Проецирование
- •11.1. Основные виды проекций
- •Параллельные проекции
- •Центральные проекции
- •11.2. Математическое описание прямоугольных проекций
- •11.3. Математическое описание косоугольных проекций
- •11.4. Математическое описание перспективной проекции
- •11.5. Задание произвольных проекций. Видовое преобразование.
- •Глава 12. Алгоритмы удаления скрытых линий и поверхностей
- •12.1. Общие сведения об удалении скрытых линий и поверхностей
- •12.2. Алгоритм сортировки по глубине (оп)
- •12.3. Алгоритм, использующий z-буфер (пи)
- •12.4. Алгоритм построчного сканирования (пи)
- •12.5. Алгоритм разбиения области
- •12.6. Алгоритм плавающего горизонта
- •12.8. Алгоритм трассировки лучей
- •12.9. Иерархический z—буфер (смешанный тип)
- •Глава 13. Свет в компьютерной графике
- •13.1. Общие сведения о свете.
- •13.2. Модель освещения.
- •Свойства объектов
- •Отражение диффузное
- •Зеркальное отражение
- •Пропускание света (прозрачность)
- •13.3. Закраска полигональных сеток
- •Однотонная закраска
- •Интерполяция интенсивностей (метод Гуро)
- •Интерполяция векторов нормали (метод Фонга)
- •13.4. Тени
- •Источник света в бесконечности
- •Локальный источник
- •13.5. Фактура. Нанесение узора.
- •Нанесение узора на поверхность. Регулярная текстура.
- •Нанесение узора на поверхность. Стохастическая текстура.
- •13.6. Создание неровностей на поверхности.
- •Использование карт высот
- •Метод возмущения нормали
- •Использование фрактальных поверхностей
- •13.7. Фильтрация текстур
- •13.8. Полутоновые изображения
- •Глава 14. Трассировка лучей
- •14.1 Метод прямой трассировки
- •14.2 Метод обратной трассировки
- •Глава 15. Цвет в компьютерной графике
- •15.1. Ахроматический и хроматический цвета
- •15.2. Цветовые модели
- •Системы смешивания основных цветов
- •Цветовая модель hsv
- •Модель hls
- •Цилиндрическая цветовая модель
- •Глава 16. Сжатие графических изображений
- •16.1. Графические форматы
- •16.2. Основные сведения о сжатии изображений
- •16.3. Алгоритмы сжатия файлов без потерь
- •Алгоритм Хаффмана
- •Алгоритм Лемпеля—Зива (lzw)
- •Алгоритм rle (Run Length Encoding)
- •Обрезание хвостов
- •16.4. Сжатие с потерями цветных и полутоновых файлов
- •Сжатие изображения по стандарту jpeg
- •Новый стандарт jpeg 2000
- •Фрактальное сжатие изображений
9.4. Триангуляция поверхностей
Генерация объемных изображений является сложной вычислительной задачей, в связи с чем на практике выполняют ее декомпозицию. Сложные изображения разбивают на составные части. Процесс разбиения поверхности объектов на полигоны называется тесселяцией. Но наиболее часто производится разбиение изображений на треугольники. Это объясняется следующими причинами:
треугольник является простейшим полигоном, вершины которого однозначно задают грань;
любую область можно гарантировано разбить на треугольники;
вычислительная сложность алгоритмов разбиения на треугольники существенно меньше, чем при использовании других полигонов;
реализация процедур визуализации более проста для области, ограниченной треугольником;
для треугольника легко определить три его ближайших соседа, имеющих с ним общие грани.
Процесс разбиения полигональной области со сложной конфигурацией в набор треугольников называется триангуляцией.
Любая поверхность может быть аппроксимирована с необходимой точностью сеткой треугольников. Точность аппроксимации определяется количеством треугольников и способом их выбора. Для качественной визуализации объекта, находящегося вблизи точки наблюдения, требуется учесть во много раз больше треугольников, чем в ситуации, когда тот же объект расположен на удалении.
В компьютерной графике задача триангуляции рассматривается в двух направлениях – триангуляция полигональных областей и триангуляции набора точек. Триангуляцию точек на плоскости используется при описании поверхности набором точек и интенсивностями их цветов.
Поточечное описание поверхностей применяют в тех случаях, когда поверхность очень сложна и не обладает гладкостью, а детальное представление многочисленных геометрических особенностей важно для практики.
Простейшее решение задачи триангуляции состоит в разделении полигона вдоль некоторой хорды на два полигона и в дальнейшем рекурсивном разбиении их до тех пор, пока подлежащий триангуляции полигон не станет треугольником.
Данный способ применим лишь для триангуляции выпуклых полигонов.
Триангуляция
невыпуклых полигонов более сложна,
поэтому желательно предварительно
разбить невыпуклые многоугольники на
выпуклые для упрощания их последующей
обработки. Вначале желательно перенести
и повернуть многоугольник так, чтобы
одна из его вершин совпала с началом
координат, а исходящая из нее сторона
— с осью
.
При расположении каких-либо сторон ниже
оси, происходит их отсечение. Алгоритм
рекурсивно повторяют для полученных
полигонов, пока они не станут выпуклыми
(рис. 9.6).
Рис. 9.6 Разбиение невыпуклого многоугольника
В рассмотренном примере выбирается крайняя левая вершина и между двумя ее смежными сторонами проводится диагональ. При этом могут получиться следующие два случая: рис. 9.6 а — диагональ AC является хордой; рис. 9.6 б — диагональ AC не хорда, так как внутрь треугольника ABC попадает вершина D полигона (в общем случае их может быть несколько). Из всех вершин внутри треугольника ABC вершина D наиболее удалена от стороны AC. Эта вершина называется вторгающейся. В случае, когда такой вершины нет, полученный треугольник заносится в сетку треугольников, и алгоритм рекурсивно обрабатывает оставшийся полигон до тех пор, пока он не выродится в треугольник.
При обнаружении вторгающейся вершины проводится диагональ из текущей до вторгающейся вершины. Полученные полигоны рекурсивно обрабатываются до получения треугольников.
Иногда для разбиения многоугольника на треугольники находят внутреннюю точку области, ограниченной полигоном, и соединяют с ней все вершины (рис. 9.7).
Рис. 9.7 Разбиение средней точкой