Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИГС / Lab_02 / labor_02.doc
Скачиваний:
34
Добавлен:
17.04.2018
Размер:
431.1 Кб
Скачать

Элементарные аффинные преобразования.

Любое сложное аффинное преобразование, можно представить композицией нескольких элементарных аффинных преобразований. Анализ показывает, что в 2D-графике существуют четыре элементарные аффинные преобразования – поворот, растяжение, отражение, перенос.

Поворот.

Рассмотрим поворот произвольной точки Aвокруг начала координат на угол(Рис. 6).

Рис. 6.

Элементарное аффинное преобразование – поворот на угол .

Из аналитической геометрии известно, что поворот описывается следующим аффинным преобразованием.

(5)

Удобно координаты точки объединить в виде 2-х мерного вектора (столбика). Тогда переход точки Aв положение точкиA*можно представить, как преобразование векторов.

(6)

В этих обозначениях поворот можно выразить в виде матричного умножения.

(7)

Здесь R– матрица поворота (Rotation- вращение). Структуру этой матрицы получаем из уравнений (5).

(8)

Растяжение-сжатие, масштабирование.

Рассмотрим операцию растяжения-сжатия вдоль координатных осей с коэффициентами растяжения k1,k2. Часто эту операцию называют масштабированием (Scaling- масштабирование). Для примера покажем (Рис. 7) растяжение отрезка с коэффициентами растяжения равными.

Рис. 7.

Элементарное аффинное преобразование – растяжение с коэффициентами .

Растяжение описывается следующим аффинным преобразованием.

(9)

Преобразование (9) можно выразить в виде матричного умножения.

(10)

Здесь S– матрица масштабирования. Структуру этой матрицы получаем из уравнений (9).

(11)

Отражение.

Рассмотрим операцию отражения относительно координатных осей. Для примера покажем (Рис. 8) отражение относительно оси x.

Рис. 8.

Элементарное аффинное преобразование – отражение относительно оси Ox.

Отражение описывается следующим аффинным преобразованием.

(12)

Преобразование (12) можно выразить в виде матричного умножения.

(13)

Здесь M– матрица отражения (Mirror– зеркало, отражение). Структуру этой матрицы получаем из уравнений (12).

(14)

Аналогично находим матрицу отражения относительно оси y.

(15)

Перенос.

Рассмотрим операцию переноса на вектор трансляции . При этой операции любой объект перемещается без искажения, и любая сторона остается параллельной самой себе. Для примера покажем на рисунке 9 перенос отрезка.

Рис. 9.

Элементарное аффинное преобразование – перенос на вектор трансляции t.

Перенос описывается следующим аффинным преобразованием.

(16)

Преобразование (16) нам хотелось бы выразить в виде матричного умножения тип.

(17)

Здесь T– должна быть матрицей трансляции (Translation– трансляция, перенос). Однако невозможно построить матрицуTразмерностью 22, чтобы одновременно удовлетворялись уравнения (16) и (17).

И все же, такую матрицу можно создать, если формально рассматривать аффинные 2D-преобразования в 3-х мерном пространстве. Для этого надо перейти к однородным координатам.

Однородные координаты.

Понятие однородных координат пришло к нам из проективной геометрии. Пусть точка Aлежит на плоскости и имеет координаты (x,y). Тогдаоднородными координатамиэтой точки называется любая тройка чиселx1,x2,x3, связанных с заданными числамиxиyследующими соотношениями.

(18)

При решении задач компьютерной графики в качестве однородных координат обычно выбирают следующую тройку чисел.

(19)

Таким образом, произвольной точке A(x,y) плоскости ставится в соответствие точкаA(x,y, 1) в пространстве. По сути дела мы рассматриваем аффинные преобразования в плоскостиz= 1 , как это показано на рисунке 10.

Рис. 10.

Аффинное преобразование в однородных координатах.

Координаты точек лежащих в плоскости z= 1 объединяем в виде 3-х мерных векторов. Переход точкиAв положение точкиA*можно представить, как преобразование векторов.

(20)

В этих обозначениях общее аффинное преобразование (1) можно выразить в виде матричного умножения.

(21)

Здесь матрица Pразмерности 33 является матрицей общего аффинного преобразования (1) и имеет вид.

(22)

Отметим важный момент, связанный с однородными координатами. Переход к трехмерным векторам и матрицам (20, 21, 22) можно было выполнить совершенно формально, не привязываясь к реальному трехмерному пространству (x,y,z). Этот подход позволяет для 3D-аффинных преобразований ввести однородные координаты и производить матричные умножения в 4-х мерном векторном пространстве.

Введенные раньше матрицы элементарных аффинных преобразований, теперь в однородных координатах примут следующий вид.

Матрица поворота Rв однородных координатах будет иметь следующий вид.

(23)

Матрица растяжения Sизменится следующим образом.

(24)

Матрицы отражения Mотносительно координатных осей будут иметь вид.

(25)

Матрица переноса Tна вектор трансляциив однородных координатах будет иметь следующий вид.

(26)

Соседние файлы в папке Lab_02