3.3. Преобразование в однородную систему координат
Как видно двумерные преобразования имеют различный вид. Сдвиг реализуется сложением, а масштабирование и поворот - умножением. Это различие затрудняет формирование суммарного преобразования и устраняется использованием двумерных однородных координат точки, имеющих вид:
[ X Y W ]. |
Здесь W - произвольный множитель не равный 0.
Двумерные декартовые координаты точки получаются из однородных делением на множитель W:
|
Однородные координаты можно представить как промасштабированные с коэффициентом W значения двумерных координат, расположенные в плоскости с Z = W.
В силу произвольности значения W в однородных координатах не существует единственного представления точки, заданной в декартовых координатах.
Преобразования параллельного переноса, масштабирования и поворота в однородных координатах относительно центра координат все имеют одинаковую форму произведения вектора исходных координат на матрицу преобразования.
Будем брать W=1.
![]() |
1 0 0
[X`, Y`, 1]=[X, Y, 1]· 0 1 0
Dx Dy 1
Перемножив, получим: [X + Dx, Y + Dy, 1].
P` = P·S; где
Рё = Р·R; где
Р` = Р·М,
где М = Т(-X0, - Y0) ∙R(φ)∙T(X0,
Y0) – матрица преобразований.
Смещаем точку Возвращаем точку
в начало координат в исходное состояние
В результате произведений матриц получаем матрицу преобразования M:
1 0 0 cos(φ) sin(φ) 0 1 0 0
M = 0 1 0 · –sin(φ) cos(φ) 0 · 0 1 0 =
–X1 –Y1 1 0 0 1 X1 Y1 1
![]() |
cos(φ) sin(φ) 0
= –sin(φ) cos(φ) 0
X1·(1–cos(φ))+Y1·sin(φ) Y1·(1–cos(φ)) –X1·sin(φ) 1
В общем случае матрицу преобразований можно записать следующим образом:
m11 m12 0
m31 m32 1
x’ = x · m11 + y · m21 + m31 Перейдём к алгебраическому выражению:
y’ = x · m12 + y · m22 + m32