Déplacement d'un objet sur une trajectoire circulaire

26

Je souhaite déplacer un objet (point) sur une trajectoire circulaire. Comment dois-je changer les coordonnées X et Y pour y parvenir?

Ganapathy C
la source

Réponses:

54

Vous pouvez le faire en utilisant des mathématiques simples:

X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;

(originX, originY) est le centre de votre cercle. rayon est son rayon. C'est ça.

Cela fonctionne parce que le sinus et le cosinus sont mathématiquement liés au cercle unitaire .

relation sinus et cosinus au cercle unité
Crédit d'image: LucasVB (Travail personnel) [Domaine public], via Wikimedia Commons . (Échelle réduite à 70%.)

Krom Stern
la source
Et si c'est un ovale? C'est-à-dire aucun rayon défini.
test du
2
@test: si l'ovale est orienté X ou Y, vous pouvez multiplier la position de l'axe correspondant par un facteur supplémentaire. Si vous avez besoin de plus de détails, vous devez poser une question distincte.
Kromster dit soutenir Monica le
@Anko: Je ne pense pas que l'animation l'explique mieux, mais que ce soit le cas, pour ceux qui en ont besoin. Converti en CW.
Kromster dit soutenir Monica
@Kromster, qu'en est-il du même résultat dans l'espace 3D?
Tomas
14

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 Cercle

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: Triangle

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

fer0x
la source
2
Merci, réponse vraiment sympa et brève pour ce problème,
bravo
5

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.

sylvainulg
la source