6
с координатами не совпадающей с началом системы координат, необходимо реализовать
следующую последовательность преобразований: перенос системы координат для совмещения
начала координат с точкой, вокруг которой будет вращаться объект; поворот объекта вокруг точки
на заданный угол; возвращение системы координат в начальное положение. Используя выше
принятые обозначения матриц геометрических преобразований, данное преобразование можно
записать следующим об
разом:
[x’ y’] =[x y]
−1
Для перемножения матрицы переноса на матрицу поворота, как и для любого умножения матриц,
необходимым условием является равенство количества строк матрицы переноса и количества
столбцов матрицы поворота. Даже используя свойство ассоциативности матриц, то есть,
комбинируя перемножение,
(AB) C = A (BC)
мы сталкиваемся с тем, что матрица переноса имеет размер 3х2, а матрица поворота 2х2.
Следовательн
о, умножение их не может быть реализовано.
Для решения этой проблемы (и во многих других ситуациях) компьютерная графика использует
понятие однородных координат. Под однородными координатами понимают такую тройку чисел
Х
1,
Х
2
, Х
3 ,
для которых выполняется следующее соотношение:
3
2
3
1
X
X
X
X
=
Системы уравнений геометрических преобразований дополняются уравнением 1=1, а матричные
записи этих преобразований в однородных координатах обретают следующий вид:
Перенос - [x’ y’ 1] = [x y 1 ]
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
1
010
001
ba
Поворот - [x’ y’ 1 ] = [x y 1 ]
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
100
0cossin
0sincos
ϕϕ
ϕϕ
Масштабирование - [x’ y’1] =[x y1]
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
100
00
00
y
x
S
S
Отражение - [x’ y’1] =[x y1]
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
100
00
00
y
x
Теперь все матрицы преобразований на плоскости имеют размеры 3х3, что позволяет выполнять
любые последовательности преобразований. Так, для примера поворота вокруг точки с
координатами ( x
0
, y
0
, ) эта последовательность реализуется путем выполнения следующих шагов:
1. Преобразование для переноса точки ( x
0
, y
0
, ) в начало координат О