Предполагая, Vector2
is (x, y)
Я хочу повернуть его по центру (или любой точке, это просто перевод, чтобы я мог сделать это) любым заданным angle
, указанным в радианах.
Мой целевой язык - это javascript.Как повернуть любую точку на любой угол?
1
A
ответ
1
Вращение может выполняться посредством линейного преобразования ... матричного умножения.
Учитывая точку p = (x, y)
и угол θ
вращения, полученная точка p' = (x', y')
определяется по формуле:
p' = R(θ)⋅p
, где R (θ) является матрицей
| cos(θ) -sin(θ)|
R(θ) = | |
| sin(θ) cos(θ)|
Полученное разложение дается
x' = x⋅cos(θ) - y⋅sin(θ)
y' = x⋅sin(θ) + y⋅cos(θ)
Кодирование в JavaScript остается как упражнение для читателя.
[Реализация ответа] (https://gist.github.com/koziejka/17f89f9d81bee1eac3a46458f5211f77) –