
- •Оглавление
- •Глава 1. Основные понятия………………………………………………….……………….6
- •Глава 2. Координаты и преобразования…………………………………………………...13
- •Глава 3. Растровая графика. Базовые растровые алгоритмы……………………… 37
- •Глава 4. Векторная графика…………………………………………………………….…..78
- •Глава 5. Фрактальная графика……………………………………………………………..91
- •Глава 6. Цветовые модели компьютерной графики………………………………….…97
- •Глава 7. Методы и алгоритмы построения сложных трехмерных объектов……. 137
- •Глава 9. Архитектуры графических систем …………………………………………. 181
- •Глава 10. Стандартизация в компьютерной графике……………………………….….189
- •Глава 11. Форматы графических файлов……………………………………………..…205
- •Глава 1. Основные понятия
- •1.1 Разновидности компьютерной графики
- •Полиграфия
- •Мультимедиа
- •Сапр и деловая графика
- •Геоинформационные системы (гис)
- •1.2. Принципы организации графических программ
- •Растровые программы
- •Векторные программы
- •Фрактальные программы
- •Глава 2. Координаты и преобразования
- •2.1 Координатный метод
- •2.1.1. Преобразование координат
- •Однородные координаты и матричное представление двумерных преобразований
- •Композиция двумерных преобразований
- •Композиция трехмерных преобразований
- •Преобразование объектов
- •Преобразование как изменение систем координат
- •2.1.2 Аффинные преобразования на плоскости
- •Проекции
- •Мировые и экранные координаты
- •Основные типы проекций
- •Глава 3. Растровая графика. Базовые растровые алгоритмы
- •3.1 Растровые изображения и их основные характеристики
- •Вывод изображений на растровые устройства
- •Методы улучшения растровых изображений
- •Диагональное расположение ячеек 5x5
- •Диагональные структуры: а - сдвиг строк ячеек, б - ячейки другого типа
- •Набор чм-ячеек 5x5
- •3.4. Базовые растровые алгоритмы Алгоритмы вывода прямой линии
- •Инструменты растровых графических пакетов
- •Преимущества и недостатки растровой графики
- •Глава 4. Векторная графика
- •Средства создания векторных изображений
- •Сравнение механизмов формирования изображений в растровой и векторной графике
- •Структура векторной иллюстрации
- •Математические основы векторной графики
- •Элементы (объекты) векторной графики
- •Достоинства и недостатки векторной графики
- •Глава 5. Фрактальная графика
- •Математика фракталов. Алгоритмы фрактального сжатия изображений
- •Обзор основных фрактальных программ
- •Глава 6. Цветовые модели компьютерной графики
- •6.1 Элементы цвета
- •Свет и цвет
- •Физическая природа света и цвета
- •Излученный и отраженный свет
- •Яркостная и цветовая информация
- •Цвет и окраска
- •Характеристики источника света
- •Стандартные источники
- •Особенности восприятия цвета человеком
- •Цветовой и динамический диапазоны
- •Типы цветовых моделей
- •Аддитивные цветовые модели
- •Субтрактивные цветовые модели
- •Перцепционные цветовые модели
- •Системы соответствия цветов и палитры
- •Триадные и плашечные цвета
- •Цветовые режимы
- •Глава 7. Методы и алгоритмы построения сложных трехмерных объектов
- •Модели описания поверхностей
- •Аналитическая модель
- •Векторная полигональная модель
- •Воксельная модель
- •Равномерная сетка
- •Неравномерная сетка. Изолинии
- •7.2. Визуализация трехмерных объектов
- •Каркасная визуализация
- •Показ с удалением невидимых точек
- •Глава 8. Реалистическое представление сцен
- •Закрашивание поверхностей
- •Модели отражения света
- •Вычисление нормалей и углов отражения
- •Метод Гуро
- •Метод Фонга
- •8.4. Имитация микрорельефа
- •Трассировка лучей
- •Анимация
- •Глава 9. Архитектуры графических систем
- •Суперстанции
- •Компоненты растровых дисплейных систем
- •Подходы к проектированию графических систем
- •Графические системы на базе сопроцессора i82786
- •Графические системы из набора сверх больших интегральных схем (сбис)
- •Растровый графический процессор dp-8500
- •Графические системы на универсальном процессоре
- •Высокоскоростные графические системы
- •Рабочие (супер)станции с использованием универсального вычислителя
- •Глава 10. Стандартизация в компьютерной графике
- •Международная деятельность по стандартизации в машинной графике
- •Классификация стандартов
- •Графические протоколы
- •Аппаратно-зависимые графические протоколы
- •Языки описания страниц
- •Аппаратно-независимые графические протоколы
- •Проблемно-ориентированные протоколы
- •Глава 11. Форматы графических файлов
- •11.1 Векторные форматы
- •11.2 Растровые форматы
- •11.3 Методы сжатия графических данных
- •11.4 Преобразование файлов из одного формата в другой
- •Глава 12. Технические средства кг (оборудование кг)
- •12.1 Видеоадаптеры
- •Манипуляторы
- •Оборудование мультимедиа
- •Мониторы
- •Видеобластеры
- •Периферия
- •Принтеры
- •Имиджсеттеры
- •Плоттеры
- •Звуковые карты
- •Сканеры
- •Секреты графических планшетов (дигитайзеров)
- •Цифровые фотоаппараты и фотокамеры
- •Литература
Вычисление нормалей и углов отражения
Вычисление координат вектора нормали. Рассматривая модели отражения света, вы, наверное, обратили внимание на то, что нормаль к поверхности — важный элемент.
Определение вектора нормали к поверхности в заданной точке может быть выполнено разными способами. В значительной степени это определяется типом модели описания
поверхности. Для поверхностей, заданных в аналитической форме, известны методы дифференциальной геометрии, которые основываются на вычислении частных
производных функций описания. Например, если поверхность задана параметрическими функциями
тогда координаты вектора нормали можно вычислить так:
В случае описания поверхности векторно-полигональной моделью для определения нормалей можно использовать методы векторной алгебры.
Пусть в пространстве задана некоторая многогранная поверхность. Рассмотрим
одну ее плоскую грань, имеющую вид треугольника (рис. 8.4).
Для вычисления координат вектора нормали воспользуемся векторным
произведением любых двух векторов, которые лежат в плоскости грани. Такими векторами могут служить и ребра грани, например, ребра 1-2 и 1-3. Однако формулы для векторного произведения были определены нами только для радиус-векторов. Чтобы перейти к радиус-векторам, введем новую систему координат, центр которой совпадает с вершиной 1, а оси — параллельны осям бывшей системы. Координаты вершин в новой системе:

Рис. 8.4. Одна грань поверхности Радиус-векторы
Теперь назовем ребро (1-2) вектором А, а ребро (1-3) — вектором В, как показано на рис.
Таким образом, положение нормали к грани в пространстве будет описываться радиус-
вектором N. Его координаты в системе (х', у', г') выразим формулами для векторного произведения
Плоская грань может быть изображена в разных ракурсах. В каждой конкретной ситуации необходимо выбирать направление нормали, которое соответствует видимой стороне грани. Если плоская грань может быть видна с обратной стороны, то тогда в расчетах отраженного света необходимо выбирать для нормали обратный вектор, то есть (- N).
Если полигональная поверхность имеет не треугольные грани, а, например, плоские четырехугольные, то расчет нормали можно выполнять по любым трем вершинам грани.
Диффузное отражение. Рассчитаем косинус угла между вектором нормали и направлением на источник света. Это можно выполнить таким способом.
Сначала необходимо определить радиус-вектор, направленный на источник света.
Обозначим его как S. Потом для вычисления косинуса угла между радиус-векторами S и N воспользуемся формулами скалярного произведения векторов. Поскольку
а
также
то
получим
Для упрощения вычислений целесообразно использовать векторы S и N единичной длины, то есть |S|*|N| = 1.
Использование скалярного произведения здесь можно считать универсальным методом, который можно использовать для любого расположения точечного источника
света. В отдельных случаях можно рассчитать косинус угла падения по-иному. Например, если источник света располагается на оси Z видовых координат в бесконечности позади
камеры, тогда косинус угла нормали к грани с осью Z равняется отношению координаты г и длины радиус-вектора нормали
Зеркальное отражение. Будем считать, что задан радиус-вектор S, направленный на источник света, а также известен радиус-вектор нормали N. Нужно найти косинус угла между отраженным лучом и направлением камеры.
Сначала необходимо вычислить радиус-вектор отраженного луча. Обозначим его как R. Выполним некоторые геометрические построения, как показано на рис. 8.5.
Рис. 8.5. Векторы R1, S1 и N1 –единичной длины
Для решения нашей задачи сначала рассмотрим единичные векторы R1, S1, и N1. Поскольку векторы нормали, падающего луча и отраженного луча находятся в одной плоскости, то можно записать R1 + S1 = N1, где N1 — это вектор, который соответствует диагонали ромба и совпадает по yаправлению с нормалью. Длина вектора N1 равняется 2cos . Поскольку вектор N1 по направлению совпадает с N1, то
или
Отсюда находится единичный вектор отраженного луча:
Найдем
cos
.
Для
этого
используем
скалярное
произведение
векторов
N
и
S:
Подставим это значение в выражение для R1:
Полагая, что искомый вектор отраженного луча будет иметь такую же длину, что и вектор падающего луча, т.е. R = S R1 , получим:
Это решение в векторной форме. Запишем координаты вектора R:
Теперь осталось найти косинус угла между отраженным лучом и направлением камеры. Пусть K – радиус-вектор, направленный на камеру. Найдем искомый косинус угла:
Для упрощения вычислений целесообразно задавать векторы S, N и R единичной длины (тогда и R будет единичным).