- •Томск 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
3.4.Математическое описание плоских геометрических проекций
Каждую из проекций можно описать матрицей 44. Этот способ оказывается удобным, поскольку появляется возможность объединить матрицу проецирования с матрицей преобразования.
Центральная (перспективная) проекция получается путем перспективного преобразования и проецирования на некоторую двухмерную плоскость “наблюдения”. Перспективная проекция на плоскость Z = 0 обеспечивается преобразованием:
[X Y Z H] = [x y z 1]* = [x y 0 (rz+1)]
Рис. 3.39 Вычисление одноточечной перспективы
или x* = = ;
y* = = ;
z* = = ;
где r = ;
Центр проекции находится в точке с координатами. (0,0,-k), плоскость проецирования Z = 0. Соотношения между x, y и x*, y* остается тем же самым. Рассматривая подобные треугольники получим, что
= или x* = ;
аналогично y* = .
Координаты x*, y* являются преобразованными координатами. В перспективном проектировании преобразованное пространство не является евклидовым, т.к. ортогональность осей не сохраняется. При k = получим аксонометрическое преобразование.
Аффинное преобразование есть комбинация линейных преобразований, сопровождаемых переносом
Последний столбец в обобщенной матрице 44 должен быть равен , в этом случае H = 1.
Перспективному преобразованию может предшествовать произвольная последовательность аффинных преобразований. Таким образом, чтобы получить перспективные изображения из произвольной точки наблюдения вначале используют аффинные преобразования, позволяющие сформировать систему координат с осью Z вдоль желаемой линии визирования. Затем применяется перспективное преобразование.
Аналогично перспективное преобразование когда картинная плоскость перпендикулярна оси Z и совпадает с плоскостью Z = 1/r. Центр проекции находится в центре координат.
[X Y Z H] = [x y z 1] * = [x y z (rz+1)] — одноточечная перспектива (точка схода Z).
— точка схода X;
Двухточечная (угловая) перспектива. Для получения двухточечной перспективы в общей матрице преобразования устанавливают коэффициенты p и q.
(x', y', z', 1) = (x, y, z, 1) =[x, y, 0, (px+qu+1)]
(x', y', z', 1) =
Такое преобразование приводит к двум точкам схода. Одна расположена на оси X в тоске ( , 0, 0, 1), другая на оси Y в тоске (0, , 0, 1).
Рассмотрим это преобразование на получение проекции единичного куба (рис. 3.15).
Рис. 3.40 Единичный куб для получения двухточечной проекции
В результате получаем проекцию следующего вида.
Рис. 3.41 Двухточечная проекция единичного куба
=[x y z (px+qy+rz+1)] — трехточечная (косая) перспектива.
Для того, чтобы создать диметрическую проекцию, необходимо выполнить следующие условие:
sin2φ=sin2θ/(1- sin2θ).
Одним способом выбора sinθ является сокращение оси Z в фиксированное число раз. При этом единичный вектор на оси Z, равный [0 0 1 1], преобразовывается к виду:
[X Y Z H] = [sinφ -cosφsinθ cosφcosθ 1]
или x* = sinφ
y*= - cosφ sinθ.
Таким образом, для диметрической проекции получаем:
φ = 20,705
θ = 22,208
Для образования изометрической проекции нужно в одинаковое число раз сократить все три оси. Для этого необходимо, чтобы выполнялось условие:
sin2φ=sin2θ/(1- sin2θ) и sin2φ=(1-2sin2θ)/(1- sin2θ).
Таким образом,
φ = 35,26439
θ = 45.
Рассмотрим теперь косоугольную проекцию, матрица может быть записана исходя из значений и l.
Проекцией точки P(0,0,1) является точка P(l cos, l sin, 0), принадлежащая плоскости xy. Направление проецирования совпадает с отрезком РР, проходящим через 2 эти точки. Это направление есть Р-Р = (lcos, lsin, -1). Направление проецирования составляет угол с плоскостью xy.
Теперь рассмотрим проекцию точки x, y, z и определим ее косоугольную проекцию (xp yp) на плоскости xy.
xp = x + z(l cos)
yp = y + z(l sin).
Т.о. матрица 44, которая выполняет эти действия и, следовательно, описывает косоугольную проекцию, имеет вид:
Мкос=
Рис. 3.42 Вычисление косоугольных проекций
Применение матрицы Мкос приводит к сдвигу и последующему проецированию объекта: плоскости с постоянной координатой z = z1 переносятся в направлении x на z1 l cos и в направлении y на z1 l sin и затем проецируется на плоскость z = 0. Сдвиг сохраняет параллельных прямых, а также углы и расстояния в плоскостях, параллельных оси z.
Для проекции Кавалье l = 1, поэтому угол = 45. Для проекции Кабине l=½, а = arctg(2) = 63,4. В случае ортографической проекции l = 0 и = 90, поэтому матрица ортографического проецирования является частным случаем косоугольной проекции.