1. Сдвиг.
y
Сдвиг точки по OY обозначается Dy,
P’(x’,y’) по OX обозначается Dx,
Dy x’ = x + Dx,
P(x,y) y’ = y + Dy,
Важен знак коэффициента D.
x
Dx
[x’, y’] = [x, y] + [Dx, Dy]
P’ = P + T
Теоретически для любого изображения нужно выполнить такие действия над каждой точкой изображения. Если имеем дело с векторным изображением, то для отрезка (А, В) достаточно выполнить перенос концов отрезка (А’, В’). Данное утверждение справедливо для действий масштабирования и поворота. Три действия сдвиг, масштаб и поворот позволяют получить абсолютно любое пространственное преобразование объекта.
2. Масштабирование.
y
P’(x’, y’)
P(x,y)
x
При масштабировании координаты точки умножаются на коэффициент масштабирования.
x’ = x * Sx
y’ = y * Sy
Запишем в матричной форме коэффициент масштабирования S.
Тогда
P’ = P * S
Для пиксельных изображений такое преобразование нужно выполнить над каждой точкой, для векторного над концами каждого отрезка.
|
|
Для простоты промасштабируем по обеим осям.
Пример. Пусть начало отрезка проходит через начало координат.
1) y
Промасштабируем его по обеим осям с коэффициентом 2.
P2(1,1) Sx = Sy = 2.
P3(0.5;0.5)
x
P1(0,0)
Тогда получится
y
P2‘(2, 2)
P1‘(0,0)
2) Возьмём P3(0.5;0.5). Выполним масштаб по обеим осям с тем же коэффициентом. Зрительно отрезок как бы сместился вправо. При масштабировании это происходит всегда.
y
P2(2,2)
P3(1,1)
x
3. Поворот. Если известен угол поворота a, то
y
P2‘(x’,y’) x’ = x cos a – y sin a
y’ = x sin a + y cos a
a P(x,y)
x
В матричной форме
Или P’ = P * R, где R – это матрица поворота. При движении против часовой стрелки угол поворота считается положительным, при движении по часовой стрелке угол поворота отрицательный. Недостатки в преобразованиях: сдвиг выполняется через сложение, а масштаб и поворот через умножение. При достаточно сложном объекте это неудобно. Чтобы уйти от сложения в сдвиге объекта, из математики позаимствовали понятие однородных координат.
P(Wx,Wy,W)
То есть, для точки в двухмерном пространстве появляется фиктивная третья координата:
Тогда сдвиг выполняется в матричной форме через умножение P’ = P * T. Таким же образом третья координата добавляется в действие масштабирования и поворота.
Для масштабирования:
Для поворота:
P’ = P * T * S *R – даёт наименьшее количество операций умножения.