Матрица преобразований

Матрица преобразований применяется для вычисления новых координат объекта при его трансформации. Изменяя значения элементов матрицы преобразования, к объектам можно применять любые трансформации (например: масштабирование, зеркальное отражение, поворот, перемещение и т. п.). При любой трансформации сохраняется параллельность линий объекта.

Координаты в PDF выражаются в терминах двумерного пространства. Точка (x, y) в пространстве может быть выражена в векторной форме [x y 1]. Постоянный третий элемент этого вектора (1) нужен для использования вектора с матрицами 3х3 в вычислениях, описанных ниже.

Преобразование между двумя системами координат представлено, как матрица 3х3 и записывается следующим образом:

Координатные преобразования выражаются в виде матричных умножений:

Так как последняя колонка не оказывает ни какого влияния на результаты расчета, то она в вычислениях не принимает участия. Координаты трансформации высчитываются по следующим формулам:

Единичная матрица

Единичной матрицей называется, та у которой значения матрицы a и d равны 1, а остальные равны 0. Такая матрица применяется по умолчанию, так как не приводит к трансформации. Поэтому единичную матрицу используют как основу.

Масштабирование

Для увеличения или уменьшения размера объекта по горизонтали/вертикали следует изменить значение a или d соответственно, а остальные применить из единичной матрицы.

Например: Для увеличения размера объекта в два раза по горизонтали, значение a необходимо принять равным 2, а остальные оставить такими как в единичной матрице.

Высчитываем новые координаты объекта:

Отражение

Чтобы получить зеркальное отображение объекта по горизонтали следует установить значение a = -1, по вертикали d = -1. Изменение обеих значений применяется для одновременного отображения по горизонтали и вертикали.

Наклон

Наклон объекта по вертикали/горизонтали обеспечивается изменением значений b и c соответственно. Изменение значения b/-b — наклон вверх/вниз, c/-c – вправо/влево.

Например: Для наклона объекта по вертикали вверх установим значение b = 1

Высчитываем новые координаты объекта:

В итоге к наклону объекта приводит только координата y, которая увеличивается на значение x.

Поворот

Поворот — это комбинация масштабирования и наклона, но для сохранения начальных пропорций объекта, преобразования должны проводится с точными вычислениями при использовании синусов и косинусов.

Сам поворот происходит против часовой стрелки, α задаёт угол поворота в градусах.

Перемещение

Перемещение осуществляется изменением значений e (по горизонтали) и f (по вертикали). Значения задаются в пикселях.

Например: Перемещение с использованием матрицы применяется редко из-за того, что эту операцию можно проделать другими методами, например, изменить положение объекта во вкладке Геометрия.

Поскольку матрица трансформации имеет только шесть элементов, которые могут быть изменены, визуально она отображается в PDF [a b c d e f]. Такая матрица может представлять любое линейное преобразование из одной координатной системы в другую. Матрицы преобразований образуются следующим образом:

  • Перемещения указываются как [1 0 0 1 tx ty], где tx и ty — расстояния от оси системы координат по горизонтали и вертикали, соответственно.
  • Масштабирование указывается как [sx 0 0 sy 0 0]. Это масштабирует координаты так, что 1 единица в горизонтальном и вертикальном измерениях в новой координатной системе такого же размера, как и sx и sy единиц в старой координатной системе соответственно.
  • Повороты производятся матрицей [cosθ sinθ −sinθ cosθ 0 0], что соответствует повороту осей координатной системы на θ градусов против часовой стрелки.
  • Наклон указывается как [1 tanα tanβ 1 0 0], что соответствует наклону оси x на угол α и оси y на угол β.

На рисунке ниже показаны примеры трансформации. Направления перемещения, угол поворота и наклона, показанные на рисунке, соответствуют положительным значениям элементов матрицы.

Умножения матрицы не коммутативны — порядок, в котором перемножаются матрицы, имеет значение.

В таблице ниже приведены допустимые преобразования и значения матрицы.

Исходный рисунок Трансформированный рисунок Матрица Описание
1       0
0       2
0       0

Масштаб по вертикали. Если значение матрицы больше 1, объект расширяется, меньше 1 — сжимается.

2       0
0       1
0       0

Масштаб по горизонтали. Если значение матрицы больше 1, объект расширяется, меньше 1 — сжимается.

-1      0
0       1
0       0

Отражение по горизонтали.

1       0
0      -1
0       0

Отражение по вертикали.

1       1
0       1
0       0

Наклон по вертикали вверх.

1      -1
0       1
0       0

Наклон по вертикали вниз.

1       0
1       1
0       0

Наклон по горизонтали вправо.

1       0
-1      1
0       0

Наклон по горизонтали влево.

1       0
0       1
0       1

Смещение по вертикали вверх в пикселях.

1       0
0       1
0      -1

Смещение по вертикали вниз в пикселях.

1       0
0       1
1       0

Смещение по горизонтали вправо в пикселях.

1       0
0       1
-1      0

Смещение по горизонтали влево в пикселях.

Несмотря на все выше сказанное, матрица преобразований очень простой и эффективный инструмент для трансформации. Конечно, применять ее, например, для поворота нецелесообразно, так как во вкладке Геометрия имеется функция Поворот, но для отражения объекта она просто необходима.