Сначала необходимо перевести (50, 50) в начало координат, выполнить вращение, а затем перевести начало координат обратно в (50, 50).
В частности, с учетом матриц A, B, гдеA переводит центр вращения в начало координат и обычно принимает вид:
|1 0 S<sub>x</sub>|
A = |0 1 S<sub>y</sub>|
|0 0 1 |
И B - ваша матрица вращения:
|cos θ -sin θ 0|
B = |sin θ cos θ 0|
| 0 0 1|
Тогда точное вычисление, необходимое для вектора p= <p<sub>x</sub> p<sub>y</sub> 1>
, повернутый вокруг точки (S x , S y ) на угол θ, заданный как p' = ABA<sup>-1</sup>p<sup>T</sup>
.Дополнительное измерение необходимо в матрицах A и B и в векторе p, чтобы учесть тот факт, что, поскольку умножение матриц является просто линейным преобразованием, оно приводит к тому, что начало координат всегда отображается на начало координат.Это означает, что мы не можем сделать перевод;хитрость заключается в том, чтобы добавить дополнительное измерение и убедиться, что все преобразования находятся на векторах от начала координат.
Как предполагает Джейсон С., дополнительную информацию можно найти в записи Википедии о Аффинные преобразования или Запись Вольфрама на ту же тему.