- •Томск 2004
- •1.Введение
- •1.1.Способы представления изображений в памяти эвм
- •1.2.Классификация программного обеспечения компьютерной графики
- •Параметры растровых изображений
- •1.3.Представление цвета в компьютере
- •1.3.1.Цветовые модели
- •1.3.2.Системы управления цветом
- •1.4.Графические файловые форматы
- •По типу хранимой графической информации:
- •2.Растровые алгоритмы
- •2.1.Алгоритмы растеризации
- •2.1.1.Растровое представление отрезка. Алгоритм Брезенхейма
- •2.1.2.Растровая развёртка окружности
- •2.1.3.Закраска области, заданной цветом границы
- •2.1.4.Заполнение многоугольника
- •2.2.Методы устранения ступенчатости
- •2.2.1.Метод увеличения частоты выборки
- •2.2.2.Метод, основанный на использовании полутонов
- •2.3.Простейшие методы обработки изображений
- •2.3.1.Яркость и контраст
- •2.3.2.Масштабирование изображения
- •2.3.3.Преобразование поворота
- •2.3.4.Цифровые фильтры изображений
- •3.Компьютерная геометрия
- •3.1.Двумерные преобразования
- •3.1.1.Однородные координаты
- •3.1.2.Двумерное вращение вокруг произвольной оси
- •3.2.Трехмерные преобразования и проекции
- •3.3.Проекции
- •3.4.Математическое описание плоских геометрических проекций
- •3.5.Изображение трехмерных объектов
- •4.Представление пространственных форм
- •4.1.Полигональные сетки
- •4.1.1.Явное задание многоугольников
- •4.1.2.Задание многоугольников с помощью указателей в список вершин
- •4.1.3.Явное задание ребер
- •4.2.Введение
- •4.3.Алгоритм плавающего горизонта
- •4.4.Алгоритм Робертса
- •4.4.1.Определение нелицевых граней
- •4.4.2.Удаление невидимых ребер
- •4.5.Алгоритм, использующий z буфер
- •4.6.Метод трассировки лучей (ray casting)
- •4.7.Алгоритмы, использующие список приоритетов
- •4.7.1.Алгоритм Ньюэла-Ньюэла-Санча для случая многоугольников
- •4.8.Алгоритм Варнока (Warnock)
- •4.9.Алгоритм Вейлера-Азертона (Weiler-Atherton)
- •5.Методы закраски
- •5.1.Диффузное отражение и рассеянный свет
- •5.2.Зеркальное отражение
- •5.3.Однотонная закраска полигональной сетки
- •5.4.Метод Гуро
- •5.5.Метод Фонга
- •5.6.Тени
- •5.7.Поверхности, пропускающие свет
- •5.8.Детализация поверхностей
- •5.8.1.Детализация цветом
- •5.8.2.Детализация фактурой
- •6.Библиотека OpenGl
- •6.1.Особенности использования OpenGl в Windows
- •6.2.Основные типы данных
- •6.3.Рисование геометрических объектов
- •6.3.1.Работа с буферами и задание цвета объектов
- •6.3.2.Задание графических примитивов
- •6.3.3.Рисование точек, линий и многоугольников
- •6.4.Преобразование объектов в пространстве, камеры
- •6.4.1.Преобразования в пространстве
- •6.4.2.Получение проекций
- •6.5.Задание моделей закрашивания
- •6.6.Освещение
- •6.7.Полупрозрачность. Использование α-канала
- •6.8.Наложение текстуры
- •7.Аппаратные средства машинной графики
- •7.1.Устройства ввода
- •7.1.1.Сканеры
- •Принцип действия и виды сканеров
- •Основные характеристики
- •Фирмы-производители
- •7.1.2.Дигитайзеры
- •Принцип действия
- •Основные характеристики
- •Фирмы-производители
- •7.1.3.Цифровые фотокамеры
- •Принцип действия
- •Фирмы-производители
- •8.Литература
- •9.Содержание
- •1. Введение 3
- •2. Растровые алгоритмы 27
- •3. Компьютерная геометрия 52
- •4. Представление пространственных форм 83
- •5. Методы закраски 114
- •6. Библиотека OpenGl 124
- •7. Аппаратные средства машинной графики 141
- •8. Литература 147
- •9. Содержание 149
5.2.Зеркальное отражение
Зеркальное отражение можно получить от любой блестящей поверхности. Осветите ярким светом яблоко – световой блик на яблоке возникает в результате зеркального отражения, а свет, отраженный от остальной части, появится в результате диффузного отражения. Отметим также, что в том месте, где находится световой блик, яблоко кажется не красным, а скорее белым, т.е. окрашенным в цвет падающего цвета.
Если мы изменим положение головы, то заметим, что световой блик тоже сместится. Это объясняется тем, что блестящие поверхности отражают свет не одинаково по всем направлениям. От идеального зеркала свет отражается только в том направлении, для которого углы падения и отражения совпадают. Это означает, что наблюдатель сможет увидеть зеркально отраженный свет только в том случае, если угол (Рис. 6.2) равен нулю.
Рис. 5.71 Зеркальное отражение
Для неидеальных отражающих поверхностей, таких, как яблоко, интенсивность отраженного света резко падает с ростом . В модели предложенной Фонгом, быстрое убывание интенсивности описывается функцией cosn , где n обычно лежит в диапазоне 1-200 в зависимости от вида поверхности. Для идеального отражателя n бесконечно велико. В основе такой модели лежит эмпирическое наблюдение, а не фундаментальное понимание процесса зеркального отражения.
Количество падающего света, которое зеркально отражается в случае реальных материалов, зависит от угла падения . Обозначим зеркально отражаемую долю света через W(), тогда
Id = Ia ka + [ kd cos + W() cosn ]
Если векторы направления отраженного света и направления к точке зрения и нормированы, то cos = ( ). Часто в качестве W() служит константа ks, которая выбирается таким образом, чтобы получающиеся результаты были приемлемы с эстетической точки зрения. В этом случае уравнение с учетом зеркального отражения можно записать так
Id = Ia ka + [ kd ( ) + ks ( )n]
Для цветного изображения описываются три уравнения: для голубого, пурпурного и желтого цветов.
Idc = Iac kac + [ kdc ( ) + ks ( )n]
Idm = Iam kam + [ kdm ( ) + ks ( )n]
Idy = Iay kay + [ kdy ( ) + ks ( )n]
Если источник света расположен в бесконечности, для заданного многоугольника произведение ( ) является константой, а ( ) меняет значение в многоугольника.
Кроме эмпирической модели Фонга для зеркального отражения разработана модель Торрэнса-Спэрроу, которая представляет собой теоретическую обоснованную модель отражающей поверхности. В этой модели предполагается, что поверхность является совокупностью микроскопических граней, каждая из которых идеальный отражатель. Ориентация любой грани задается функцией распределения вероятностей Гаусса.
5.3.Однотонная закраска полигональной сетки
Существует три основных способа закраски объектов заданных полигональными сетками. В порядке возрастания сложности ими являются:
Однотонная закраска;
Метод Гуро (основан на интерполяции значений интенсивности);
Метод Фонга (основан на основе интерполяции векторов нормали).
В каждом из этих случаев может быть использована любая из моделей закраски описанная выше.
При однотонной закраске вычисляют один уровень интенсивности, который используется для закраски всего многоугольника. При этом предполагается, что:
Источник света расположен в бесконечности, поэтому произведение ( ) постоянно на всей полигональной грани.
Наблюдатель находится в бесконечности, поэтому произведение ( ) постоянно на всей полигональной грани.
Многоугольник представляет реальную моделируемую поверхность, а не является аппроксимацией криволинейной поверхности. Если какое-либо из первых двух предположений оказывается неприемлемым, можно воспользоваться усредненными значениями и , вычисленными, например, в центре многоугольника.
Последнее предположение в большинстве случаев не выполняется, но оказывает существенно большее влияние на получаемое изображение, чем два других. Влияние состоит в том, что каждая из видимых полигональных граней аппроксимированной поверхности хорошо отличима от других, поскольку интенсивность каждой из этих граней отличается от интенсивности соседних граней. Различие в окраске соседних граней хорошо заметно вследствие эффекта полос Маха.