- •Элементы интерактивной компьютерной графики
- •Класс 2: двухуровневые или представляемые в нескольких «цветах» изображения
- •Структура графического изображения
- •Блок-схема графической системы
- •Методы кодирования графической информации
- •Позиционные методы кодирования ги. Рецепторный метод кодирования
- •Метод тетрарного дерева
- •Структурные методы кодирования Цепной метод кодирования
- •Кусочно – линейная аппроксимация контура изображения
- •Аппроксимация группы точек окружностью
- •Аналитические методы кодирования
- •Методы структурно – символического кодирования
- •Типичная система команд дисплейного процессора
- •Форматы дисплейных команд
- •А) Команды, управляющие лучом гд.
- •Геометрические преобразования
- •Двумерные преобразования Перенос (сдвиг)
- •Масштабирование
- •Поворот изображения
- •Однородные координаты и матричное представление двумерных преобразований
- •Композиция двумерных преобразований
- •Вопросы эффективности
- •Матричное представление трехмерных преобразований
- •Видовая операция (отсечение части изображения по прямоугольному окну)
- •Высокопроизводительные графические преобразования
- •Алгоритмы растровой графики
- •Алгоритм Брезенхэма для отрезков прямых
- •Растровая развертка окружностей
- •Алгоритм брезенхема для генерации окружности
- •Типы графических дисплеев Векторный дисплей
- •Организация памяти в растровых графических дисплеях
- •Организация дисплейного файла
Геометрические преобразования
Ниже описаны элементарные двухмерные и трехмерные преобразования, применяемые в компьютерной графике. Преобразования переноса, масштабирования и поворота лежат в основе многих графических приложений.
Каждое преобразование представляет собой цельное математическое понятие и в качестве такового обозначается собственным именем или символом.
Преобразованиям подвергаются характерные точки (и только точки!) примитивов изображения.
Преобразования обычно применяются как в графическом пакете, так и непосредственно в самой прикладной программе. Например, в процессоре видовой операции ПГП при реализации отображения мировых координат в экранные используются двумерные перенос и масштабирование. После введения трехмерных мировых координат используются для той же цели трехмерные поворот и перенос.
Двумерные преобразования Перенос (сдвиг)
Точки на xy - плоскости можно перенести в новые позиции путем добавления к координатам этих точек констант переноса. Для каждой точки Р(х, у), которая перемещается в новую точку Р' (х', у'), сдвигаясь на mx единиц параллельно оси х и на my единиц параллельно оси у, можно написать уравнения
x' = x + mx, y' = y + my. (7.1)
На рис. 7.1 показана точка с координатами (1, 2), которая смещается на расстояние (5, 7), преобразуясь в точку (6, 9). Определяя векторы-отроки
Р = [х у], Р' = [х' у'], М = [mx my],
можно переписать уравнение (7.1) в векторной форме
[x' y'] = [x y] + [mx my], (7.2)
или более кратко
Р' = Р + М
Объект можно перенести, применяя уравнения (7.1) к каждой его точке. Однако, поскольку каждый отрезок, описывающий объект, состоит из бесконечного числа точек, такой процесс длился бы бесконечно долго. К счастью, все точки, принадлежащие отрезку, можно перенести путем перемещения одних лишь крайних точек отрезка и последующего вычерчивания нового отрезка между получившимися в результате точками. Это справедливо также для масштабирования (растяжения) и поворота.
На рис. 7.2 показан результат действия на контур домика операции переноса на расстояние (3, —4).
Масштабирование
Точки можно масштабировать ("растянуть") в Sx раз вдоль оси х и в Sy раз вдоль оси у, получив в результате новые точки, с помощью умножения
x' = x*Sx, y'=y*Sy. (7.4)
Определяя S как матрицу
Sx 0
S =
0 Sy
можно записать в матричной форме (7.5)
Sx 0
x' y' = x y * 0 Sy
или
P' = P*S. (7.6)
Отметим, что масштабирование производится относительно начала координат. Способы проведения масштабирования относительно других точек, отличных от начала координат, рассматриваются ниже.
На рис. 7.3 отдельная точка (6, 6) масштабируется с коэффициентами 1/2 по оси х и 1/3 по оси у. На рис. 7.4 показан контур домика, промасштабированный c коэффициентами 1/2 по оси х и 1/4 по оси у. В результате преобразования домик стал меньше и ближе к началу координат. Если бы масштабные множители были больше 1, то домик увеличился бы и отдалился от начала координат.
Пропорции домика также изменились: было применено неоднородное масштабирование, при котором Sx Sy.
Однородное масштабирование, для которого Sx = Sy, не влияет на пропорции изображения.