В общем случае вращение около произвольной точки может быть выполнено путем переноса центра вращения координат, поворотом относительно начала координат, а потом переноса вращения в исходное положение.
Произвольная матрица вращения 2*2.
Общую матрицу 2*2, которая осуществляет вращение фигуры относительно начала координат, можно получить из вращения единичного квадрата.
Как следует из рисунка точка В с координатами (1; 0) преобразуется в точку В* с координатами (cosθ; sinθ); точка D с координатами (0; 1) преобразуется в точку D* с координатами (-sinθ; cosθ).
Учитывая полученные преобразования, общую матрицу вращения можно записать как:
Отметим, что в общей матрице 2*2 ввести константу переноса в общую структуру матрицы не представляется возможным.
Эту трудность можно устранить путем введения третьей компоненты для векторных точек.
→
В результате матрица преобразований превращается в размеры 3*2 и имеет вид:
Такая структура объясняется тем, что число столбцов матрицы, описывающих точку, должны равняться числу строк матрицы, выполняющих преобразование.
Преобразование будет выглядеть следующим образом:
*= =
Отсюда видно, что константы m и n вызывают смещение точки относительно точки с координатами (x; y), поскольку матрица 3*2 не является квадратной, следовательно, нельзя построить обратную матрицу. Эту трудность можно устранить, дополнив матрицу преобразований до квадратной.
Заметим, что третья компонента вектора положения точек не изменяет. Используя эту матрицу преобразований, получим:
Т.о. вектор положений (x; y) около точек m и n может быть выполнен с помощью преобразования: