1.10. Поворот вокруг произвольной точки
Ранее мы рассматривали вращение, совершаемое вокруг начала координат. Однородные координаты предусматривают механизм выполнения поворотов вокруг точек, отличных от начала координат. В общем случае поворот вокруг произвольной точки может быть реализован посредством ее перемещения в начало координат, выполнения требуемого поворота и последующего перемещения результата обратно в исходный центр вращения. Таким образом, поворот вектора [x y 1] вокруг точки m, n на произвольный угол можно осуществить следующим образом:
[x* y* 1] = [x y 1] | 1 0 0 0 1 0 -m -n 1 |
cosθ sinθ 0 -sinθ cosθ 0 0 0 1 |
1 0 0 0 1 0 m n 1 |
||||||||
Выполняя действия над двумя внутренними матрицами, можно записать
[x* y* 1] = [x y 1] | cosθ sinθ 0 -sinθ cosθ 0 -m(cosθ - 1) + n sinθ -n(cosθ - 1) - m sinθ 1 |
||