
- •Федеральное агентство по образованию
- •А. Ю. Дёмин, а. В. Кудинов
- •Введение
- •Растровая и векторная графика
- •Способы представления изображений в памяти эвм
- •Параметры растровых изображений
- •Представление цвета в компьютере
- •Цветовые модели
- •Системы управления цветом
- •Графические файловые форматы
- •Растровые алгоритмы
- •Алгоритмы растеризации
- •Растровое представление отрезка. Алгоритм Брезенхейма
- •Растровая развёртка окружности
- •Закраска области, заданной цветом границы
- •Заполнение многоугольника
- •Методы устранения ступенчатости
- •Метод увеличения частоты выборки
- •Метод, основанный на использовании полутонов
- •Простейшие методы обработки изображений
- •Яркость и контраст
- •Масштабирование изображения
- •Преобразование поворота
- •Цифровые фильтры изображений
- •Компьютерная геометрия
- •Двумерные преобразования
- •Однородные координаты
- •Двумерное вращение вокруг произвольной оси
- •Трехмерные преобразования и проекции
- •2.Трехмерное изменение масштаба.
- •3. Трехмерный сдвиг
- •4.Трехмерное вращение
- •Проекции
- •Математическое описание плоских геометрических проекций
- •Изображение трехмерных объектов
- •Представление пространственных форм
- •Полигональные сетки
- •Явное задание многоугольников
- •Задание многоугольников с помощью указателей в список вершин
- •Явное задание ребер
- •Удаление невидимых линий и поверхностей
- •Введение
- •Алгоритм плавающего горизонта
- •Алгоритм Робертса
- •Определение нелицевых граней
- •Удаление невидимых ребер
- •Алгоритм, использующий z–буфер
- •Метод трассировки лучей (raycasting)
- •Алгоритмы, использующие список приоритетов
- •Алгоритм Ньюэла-Ньюэла-Санча для случая многоугольников
- •Алгоритм Варнока (Warnock)
- •Алгоритм Вейлера-Азертона (Weiler-Atherton)
- •Методы закраски
- •Диффузное отражение и рассеянный свет
- •Зеркальное отражение
- •Однотонная закраска полигональной сетки
- •Метод Гуро
- •Метод Фонга
- •Поверхности, пропускающие свет
- •Детализация поверхностей
- •Детализация цветом
- •Детализация фактурой
- •Библиотека OpenGl
- •Особенности использования OpenGl в Windows
- •Основные типы данных
- •Рисование геометрических объектов
- •Работа с буферами и задание цвета объектов
- •Задание графических примитивов
- •Рисование точек, линий и многоугольников
- •Преобразование объектов в пространстве
- •Преобразования в пространстве
- •Получение проекций
- •Задание моделей закрашивания
- •Освещение
- •Полупрозрачность. Использование α-канала
- •Наложение текстуры
- •Аппаратные средства машинной графики
- •Устройства ввода
- •Сканеры
- •Основные характеристики
- •Фирмы-производители
- •Дигитайзеры
- •Принцип действия
- •Основные характеристики
- •Фирмы-производители
- •Цифровые фотокамеры
- •Принцип действия
- •Фирмы-производители
- •Практические задания
- •Обработка растровых изображений вAdobePhotoshop
- •Создание векторного рисунка вCorelDraw
- •Преобразования на плоскости
- •Преобразования в пространстве. Проекции
- •БиблиотекаOpenGl
- •Темы рефератов
- •Литература
- •Оглавление
- •1. Растровая и векторная графика 4
- •2. Растровые алгоритмы 26
- •3. Компьютерная геометрия 49
- •8. Аппаратные средства машинной графики 137
- •9. Практические задания 143
Двумерное вращение вокруг произвольной оси
Выше было рассмотрено вращение изображения около начала координат. Однородные координаты обеспечивают поворот изображения вокруг точек, отличных от начала координат. В общем случае вращение около произвольной точки может быть выполнено путем переноса центра вращения в начало координат, поворотом относительно начала координат, а затем переносом точки вращения в исходное положение. Таким образом, поворот вектора положения [х у 1 ]около точки(т, п)на произвольный угол может быть выполнен с помощью преобразования
.
Выполнив две операции умножения матриц, можно записать
Предположим, что центр изображения имеет координаты (4, 3) и желательно повернуть изображение на 90°против часовой стрелки вокруг центральной его оси. Действие, выполненное с помощью матрицы
,
вызывает вращение вокруг начала координат, а не вокруг оси. Как сказано выше, необходимо вначале осуществить перенос изображения таким образом, чтобы желаемый центр вращения находился в начале координат. Это осуществляется с помощью матрицы переноса
.
Затем следует применить матрицу вращения и, наконец, привести результаты к началу координат посредством обратной матрицы. Вся операция
может быть объединена в одну матричную операцию путем выполнения матричных преобразований вида
.
В результате будет получено х* =Х/Ниу* =Y/H.Двумерные вращения около каждой оси ортогональной системы представлены на рис. 3 .31.
Рис. 3.31. Вращение:a —вокруг осих; б —вокруг оси y;в —вокруг оси z
Трехмерные преобразования и проекции
Рассмотрим трехмерную декартовую систему координат, являющуюся правосторонней. Примем соглашение, в соответствии с которым будем считать положительными такие повороты, при которых (если смотреть с конца полуоси в направлении начала координат) поворот на 90против часовой стрелки будет переводить одну полуось в другую. На основе этого соглашения строится следующая таблица, которую можно использовать как для правых, так и для левых систем координат:
Если ось вращения |
Положительным будет направление поворота |
X |
От y к z |
Y |
От z к x |
Z |
От x к y |
Рис. 3.32. Трехмерная система координат
Аналогично тому, как точка на плоскости описывается вектором (x,y), точка в трехмерном пространстве описывается вектором (x,y,z).
Как и в двухмерном случае, для возможности реализаций трехмерных преобразований с помощью матриц перейдем к однородным координатам:
[x,y,x,1] или [X,Y,Z,H]
[x*,y*,z*1] = [],
гдеН1,Н0.
Обобщенная матрица преобразования 44 для трехмерных однородных координат имеет вид
Т=
Эта матрица может быть представлена в виде четырех отдельных частей:
.
Матрица 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].