Поворот (вращение) примитивов
Методы обработки векторной графики
В качестве устройства вывода векторных изображений могут применяться плоттеры, графопостроители и другие устройства, использующие векторный способ формирования изображений. Обработка двухмерной и трехмерной графики и трехмерной графики имеют много общего. Фактически в векторном описании изображения отсутствует третья координата — .
Геометрические преобразования двухмерной графики.
Будем предполагать, что мы работаем в евклидовом пространстве, где имеется ортонормированная декартова система координат, в которой координатные оси взаимно ортогональны, а соответствующие им единичные отрезки имеют одинаковую длину. Тогда каждой точке изображения ставится в соответствие упорядоченная пара декартовых координат: их можно интерпретировать как двухмерный вектор, геометрически представляемый отрезком прямой линии из точки точку.
Общее изображение включает в себя целый ряд примитивов и сегментов, отличающихся друг от друга геометрией, местоположением, ориентацией, масштабом, цветом, яркостью и другими атрибутами.
С помощью операций преобразования можно выполнять следующие действия:
- синтезировать изображения из более мелких элементов (примитивов, сегментов);
- добавлять к существующему изображению новые элементы;
- увеличивать и уменьшать размеры рисунка;
- перемещать, вращать, копировать изображения;
- создавать движущиеся изображения.
Наиболее распространенными базовыми операциями по преобразованию векторных изображений являются:
- перенос (перемещение) примитивов, сегментов и изображений;
- масштабирование (увеличение или уменьшение размеров) изображения;
- поворот изображения или его выделенных элементов (вращение, изменение ориентации).
Эти операции называются аффинными преобразованиями. Различают двухмерные и трехмерные аффинные преобразования.
Двухмерные аффинные преобразования.
Рассмотрим двухмерные аффинные преобразования, применяемые при обработке векторной графики.
Перенос примитивов.
Перенос точки.
Пусть необходимо осуществить перенос точки с координатами , - приращение координаты , - приращение координаты . Тогда точка с координатами будет получена после переноса (рис. 1).
Рис. 1. Перенос точки
Новые координаты точки будут определяться соотношением
;
.
Аффинные преобразования обычно записываются в матричной форме:
;
;
.
Тогда .
Перенос отрезка.
Перенос типа отрезка можно перенести, применяя предыдущие уравнения к каждой его точке. Все точки, принадлежащие отрезку, можно перенести путем перемещения начальной и конечной точек отрезка и последующего вычерчивания нового отрезка между получившимися в результате точками (рис. 2). Это справедливо также для масштабирования и поворота.
;
;
;
.
Рис. 2. Перенос отрезка
В матричной форме эти преобразования можно представить в следующем виде:
– исходный отрезок;
– полученный отрезок;
– вектор переноса.
Итоговый вид преобразования в векторной форме .
Масштабирование.
Масштабирование выполняется умножением координат на некоторые коэффициенты , .
Масштабирование точки.
Пусть дана точка .
Тогда в результате масштабирования получим следующие координаты:
;
;
;
.
Масштабирование отрезка.
– исходный отрезок;
– полученный отрезок;
;
.
Масштабирование бывает:
- однородное, когда ;
- неоднородное, когда .
При неоднородном масштабировании фигура может изменяться (круг - эллипс).
Масштабирование также делится по значению коэффициента масштабирования (рис.3, 4).
Рис. 3. Масштабирование с коэффициентом
Рис. 4. Масштабирование с коэффициентом
Поворот (вращение) примитивов.
Пусть необходимо осуществить поворот точки на угол (рис. 5).
Рис. 5. Поворот в плоскости системы координат
Исходные координаты точки:
; (1.1)
.
После поворота точка будет иметь координаты:
;
. (1.2)
Преобразуем выражение (2.2):
;
. (1.3)
Подставим (1.1) в (1.3):
;
. (1.4)
В матричной форме поворот записывается следующим образом:
;
;
.
Тогда в векторной форме .
Поворот считается положительным ( ), если он осуществляется против часовой стрелки; отрицательным – если по часовой.
Рассмотрим пример вычисления матрицы композиции двухмерных аффинных преобразований.
Пусть задан отрезок, определенный координатами:
.
1. Перенос , :
.
2. Масштабирование :
.
3. Поворот градусов:
.