
- •Глава 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
- •Фрактальное сжатие изображений
12.3. Алгоритм, использующий z-буфер (пи)
Алгоритм, использующий z-буфер, относится к алгоритмам, работающим в пространстве изображения.
Основной принцип алгоритма – используются два буфера: регенерации, в котором хранятся значения пикселов, и Z-буфер, который хранит z-координаты.
Буфер регенерации заполняется значениями при параллельном анализе z-координаты со значениями z-буфера.
Шаги алгоритма:
В Z-буфер заносятся максимально возможные значения z;
Буфер регенерации заполняется значениями фона;
Каждый объект раскладывается в растр; если координата z точки
меньше либо равна значению Z-буфера в элементе , то:
заносится в элемент Z-буфера;
значение пиксела помещается в элемент буфера регенерации.
Достоинства ми данного алгоритма являются простота реализации и отсутствие сортировки.
Недостатками данного алгоритма являются:
нужен большой объем памяти для хранения Z-буфера. Информация о значении пиксела занимает 24 бита, информация о глубине – около 20 бит;
большая стоимость устранения лестничного эффекта.
Расчет координаты z производится из уравнения плоскости:
,
.
Если
в точке
,
то в точке
,
где
,
если же
,
то
Пример работы алгоритма приведен на рисунке 12.3. В буфере регенерации (БР) хранятся номера цветов, в примере вместо них для упрощения понимания стоят буквы. (б – белый, к – красный, с – синий, з – зеленый). Вначале в Z-буфере хранится максимальное z, равное 5, в в БР – белый цвет. Потом происходит последовательное разложение в растр объектов, начиная с красного.
Z – буфер I
|
БР
|
Z – буфер II
|
БР
|
Z – буфер III
|
БР
|
Z – буфер IV
|
БР
|
Рис. 12.3 Реализация алгоритма, использующего Z-буфер
12.4. Алгоритм построчного сканирования (пи)
Алгоритм построчного сканирования относится к алгоритмам, работающим в пространстве изображения.
Алгоритм является расширением алгоритма преобразования многоугольника в растровую форму; разница в том, что работа происходит не с одним многоугольником, а со всеми сразу.
Шаги алгортма:
Создается таблица ребер (ТР). Она содержит все ребра многоугольников, отсортированные по меньшей y-координате.
Описание ребра содержит:
-
Указатель на многоугольник
Создается таблица многоугольников (ТМ).
Описание многоугольников содержит:
-
Коэффициенты уравнения плоскости (A, B, C, D)
Цвет
Флаг =
0 — вне многоугольника
1 — внутри многоугольника
Создается таблица активных ребер (ТАР).
Содержит все активные ребра на текущей сканирующей строке. Ребра упорядочены по возрастанию x-координаты.
|
|
|
Указание на многоугольник |
Пример работы алгоритма показан на рис. 12.4. Имеются два треугольника. Сконирующая строка пересекает четыре ребра.
Ниже рассмотрены четыре интервала, которые образуются при этом. Происходит анализ флагов пересекаемых многоугольников. Если все флаги равны нулю, цвет участка равен цвету фона. Если есть только один флаг равный нулю, то участок закрашивается цветом пересекаемого многоугольника. Если есть более одного флага равного нулю, то необходимо рассчитать, какой многоугольник из пересекаемых находится ближе, и участок закрашивается его цветом.
-
Для отрезка
Флаг 1 = 1
Флаг 2 = 0, цвет = цвету 1
флаг 1 = 1, флаг 2 = 0, извлекаем цвет 1.
Рис. 12.4 Пример работы алгоритма
-
Для отрезка
—
Флаг 2 = 0
Флаг 1 = 0, цвет = фон
-
Для отрезка
—
Флаг 2 = 1,
Флаг 1 = 0; цвет = цвету 2
-
Для отрезка
—
Флаг 2 = 0,
Флаг 1 = 0; цвет = фон
Строка — четыре пересекаемых ребра в ТАР.
-
Для отрезка
—
Флаг 1 = 1,
Флаг 2 = 0; цвет = цвет1
-
Для отрезка
—
Флаг 1 = 1,
Флаг 2 = 1, вычисляются z1 и z2 из уравнений плоскости, цвет = цвет 2
-
Для отрезка
—
Флаг 1 = 0,
Флаг 2 = 1, цвет = цвет2
-
Для отрезка
—
Флаг 1 = 0,
Флаг 2 = 0; цвет = фон
Алгоритм немного усложняется, если многоугольники проникают друг в друга. Тогда находят линию пересечения, и многоугольник разбивается на несколько многоугольников (рис. 12.5).
Рис. 12.5 Пример расположения многоугольников с проникновением
Удобно использовать принцип когерентности по глубине: если при переходе к следующей сканирующей строке ребра остаются те же и в том же порядке, то соотношения глубин остаются те же и их не надо вычислять.