- •Томск 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.1.2.Двумерное вращение вокруг произвольной оси
Выше было рассмотрено вращение изображения около начала координат. Однородные координаты обеспечивают поворот изображения вокруг точек, отличных от начала координат. В общем случае вращение около произвольной точки может быть выполнено путем переноса центра вращения в начало координат, поворотом относительно начала координат, а затем переносом точки вращения в исходное положение. Таким образом, поворот вектора положения [х у 1 ] около точки (т, п) на произвольный угол может быть выполнен с помощью преобразования
.
Выполнив две операции умножения матриц, можно записать
.
Предположим, что центр изображения имеет координаты (4, 3) и желательно повернуть изображение на 90° против часовой стрелки вокруг его ^центральной оси. Действие, выполненное с помощью матрицы
,
вызывает вращение вокруг начала координат, а не вокруг оси. Как сказано выше, необходимо вначале осуществить перенос изображения таким образом, чтобы желаемый центр вращения находился в начале координат. Это осуществляется с помощью матрицы переноса
.
Затем следует применить матрицу вращения и, наконец, привести результаты к началу координат посредством обратной матрицы. Вся операция
может быть объединена в одну матричную операцию путем выполнения матричных преобразований вида
.
Рис. 3.30 Вращение: a — вокруг оси х; б — вокруг оси y; в — вокруг оси z
В результате будет получено х* =Х/Н и у* = Y/H. Двумерные вращения около каждой оси ортогональной системы представлены на рис. 3 .30.
3.2.Трехмерные преобразования и проекции
Рассмотрим трехмерную декартовую систему координат, являющуюся правосторонней. Примем соглашение, в соответствии с которым, будем считать положительными такие повороты, при которых (если смотреть с конца полуоси в направлении начала координат) поворот на 90 против часовой стрелки будет переводить одну полуось в другую. На основе этого соглашения строится следующая таблица, которую можно использовать как для правых, так и для левых систем координат:
Если ось вращения |
Положительным будет направление поворота |
X |
От y к z |
Y |
От z к x |
Z |
От x к y |
Рис. 3.31 Трехмерная система координат
Аналогично тому, как точка на плоскости описывается вектором (x,y), точка в трехмерном пространстве описывается вектором (x,y,z).
Как и в двухмерном случае, для возможности реализаций трехмерных преобразований с помощью матриц перейдем к однородным координатам:
[x,y,x,1] или [X,Y,Z,H]
[x*,y*,z*1] = [ ], где Н1, 0
Обобщенная матрица преобразования 44 для трехмерных однородных координат имеет вид
Т =
Эта матрица может быть представлена в виде 4-х отдельных частей:
Матрица 33 осуществляет линейное1 преобразование в виде изменения масштаба, сдвига и вращения.
Матрица 13 производит перенос
Матрица 31- преобразования в перспективе
Скалярный элемент 11 выполняет общее изменение масштаба
Рассмотрим воздействие матрица 44 на однородный вектор [x,y,z,1]
1) Трехмерный перенос – является простым расширением двумерного:
T(Dx,Dy,Dz)=
т.е. [x,y,z,1]*T(Dx,Dy,Dz)=[x+Dx,y+Dy,z+Dz,1]
2) Трехмерное изменение масштаба
Рассмотрим частичное изменение масштаба. Оно реализуется следующим образом:
S(Sx,Sy,Sz,)=
т.е. [x,y,z,1]*S(Sx,Sy,Sz)=[Sx*x,Sy*y,Sz*z,1]
Общее изменение масштаба получается за счет 4-ого диагонального элемента, т.е.:
[x y z 1] * = [x y z S] = [x* y* z* 1] = [ ]
Такой же результат можно получить при равных коэффициентах частичных изменений масштабов. В этом случае матрица преобразования такова:
S=
3) Трехмерный сдвиг
Недиагональные элементы матрицы 33 осуществляют сдвиг в 3-х измерениях, т.е.
[x y z 1]* =[x+yd+hz, bx+y+iz, cx+fy+z, 1]
4) Трехмерное вращение
Двухмерный поворот, рассмотренный ранее, является в то же время трехмерным поворотом вокруг оси Z . В 3-х мерном пространстве поворот вокруг оси Z описывается матрицей
Rz( )=
Матрица поворота вокруг оси X имеет вид
Rx( )=
Матрица поворота вокруг оси Y имеет вид
Ry( )=
Результатом произвольной последовательности поворотов вокруг осей x, y, z является матрица
А=
Подматрицу 33 называют ортогональной, т.к. ее столбцы являются взаимно ортогональными един. векторами.
Матрицы поворота сохраняют длину и углы, а матрицы масштабирования и сдвига нет.