En supposant Vector2
est (x, y)
Je veux le faire pivoter par le centre (ou tout point c'est juste une traduction afin que je puisse le faire) par un angle
donné en radians.
Ma langue cible est le javascript.Comment faire pivoter n'importe quel point par n'importe quel angle?
1
A
Répondre
1
La rotation peut être effectuée par une transformation linéaire ... une multiplication matricielle.
Étant donné un point p = (x, y)
et un angle de rotation θ
, le point résultant p' = (x', y')
est donnée par:
p' = R(θ)⋅p
où R (θ) est la matrice
| cos(θ) -sin(θ)|
R(θ) = | |
| sin(θ) cos(θ)|
La décomposition résultante est donnée par
x' = x⋅cos(θ) - y⋅sin(θ)
y' = x⋅sin(θ) + y⋅cos(θ)
Codage est en JavaScript est laissé comme un exercice pour le lecteur.
[Implémentation de la réponse] (https://gist.github.com/koziejka/17f89f9d81bee1eac3a46458f5211f77) –