Je souhaite déplacer un objet (point) sur une trajectoire circulaire. Comment dois-je changer les coordonnées X et Y pour y parvenir?
mathematics
graphics
Ganapathy C
la source
la source
Vous pouvez utiliser l'équation paramétrique indiquée par Krom. Pour comprendre pourquoi nous avons utilisé cette formule, vous devez comprendre quelle est l'équation. Cette équation est dérivée de l' équation paramétrique du cercle .
Considérant que le cercle est dessiné avec le centre sur l'origine (O) comme indiqué dans le diagramme ci-dessous
Si nous prenons un point "p" sur la circonférence du cercle, ayant un rayon r.
Soit l'angle fait par OP (Origine à p) soit θ. Soit la distance de p de l'axe x soit y Soit la distance de p de l'axe y soit x
En utilisant les hypothèses ci-dessus, nous obtenons le triangle comme indiqué ci-dessous:
Nous savons maintenant que cos θ = base / hypoténuse et sin θ = perpendiculaire / hypoténuse
ce qui nous donne cos θ = x / r et sin θ = y / r
:: x = r * cos θ et y = r * sin θ
Mais si le cercle n'est pas à l'origine et plutôt à (a, b) alors on peut dire que le centre du cercle est décalé
a unités dans l'axe x
b unités dans l'axe y
Donc, pour un tel cercle, nous pouvons changer l'équation paramétrique en conséquence en ajoutant le décalage sur les axes x et y en nous donnant les équations suivantes:
x = a + (r * cos θ)
y = b + (r * sin θ)
Où a & b sont les coordonnées x, y du centre du cercle.
Nous avons donc trouvé x et y les coordonnées du point sur la circonférence du cercle de rayon r
la source
Il y a une autre astuce, où vous utilisez les formules sin (x + a) et cos (x + a), et qui vous permet de calculer sin (a) et cos (a) - a étant l'angle selon lequel vous voulez vous déplacer de votre position actuelle - une seule fois et faites simplement des multiplications et des ajouts à chaque étape.
sin (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc.
Bien sûr, cela suppose une vitesse angulaire constante.
Attention cependant à une précision arithmétique limitée. J'ai observé dans le passé un mouvement "circulaire" mis en œuvre de cette façon qui dessinerait une spirale à la suite d'arrondis occasionnels répétés au fil du temps. Il peut être nécessaire de réinitialiser la position sur (x0, y0) après chaque tour.
la source