Verschieben eines Objekts auf einer Kreisbahn


26

Ich möchte ein Objekt (Punkt) auf einer Kreisbahn bewegen. Wie soll ich die X- und Y-Koordinaten ändern, um dies zu erreichen?

Antworten:


54

Sie können das mit einfachen mathematischen Methoden tun:

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

(originX, originY) ist der Mittelpunkt Ihres Kreises. Radius ist sein Radius. Das ist es.

Dies funktioniert, weil der Sinus und der Cosinus mathematisch mit dem Einheitskreis verknüpft sind .

Verhältnis von Sinus und Cosinus zum Einheitskreis
Bildnachweis : LucasVB (Eigene Arbeit) [Public Domain], über Wikimedia Commons . (Verkleinert auf 70%.)


Was ist, wenn es ein Oval ist? Dh kein festgelegter Radius.
Test

2
@test: Wenn das Oval X- oder Y-orientiert ist, können Sie die entsprechende Achsposition mit einem zusätzlichen Faktor multiplizieren. Wenn Sie weitere Informationen benötigen, sollten Sie eine separate Frage stellen.
Kromster sagt Unterstützung Monica

@Anko: Ich denke nicht, dass die Animation es besser erklärt, aber lass es sein, für diejenigen, die es brauchen. In CW konvertiert.
Kromster sagt Unterstützung Monica

@Kromster Was ist mit dem Erreichen des gleichen Ergebnisses im 3D-Raum?
Tomas

14

Sie können die von Krom markierte parametrische Gleichung verwenden. Um zu verstehen, warum wir diese Formel verwendet haben, müssen Sie verstehen, wie die Gleichung lautet. Diese Gleichung leitet sich aus der parametrischen Kreisgleichung ab .

Berücksichtigt man, wird der Kreis mit dem Mittelpunkt auf dem Ursprung (O) gezeichnet, wie im folgenden Diagramm gezeigt Kreis

Nehmen wir einen Punkt "p" am Umfang des Kreises mit einem Radius r.

Der von OP (Ursprung zu p) gemachte Winkel sei θ. Der Abstand von p von der x-Achse sei y. Der Abstand von p von der y-Achse sei x

Unter Verwendung der obigen Annahmen erhalten wir das Dreieck wie folgt: Dreieck

Jetzt wissen wir, dass cos θ = Base / Hypotenuse und sin θ = Senkrecht / Hypotenuse ist

was uns cos θ = x / r und sin θ = y / r gibt

:: x = r * cos θ und y = r * sin θ

Befindet sich der Kreis jedoch nicht am Ursprung, sondern an (a, b), so kann man sagen, dass der Mittelpunkt des Kreises verschoben ist

a-Einheiten in der x-Achse
b-Einheiten in der y-Achse
Für einen solchen Kreis können wir die parametrische Gleichung entsprechend ändern, indem wir die Verschiebung auf der x- und y-Achse addieren, wodurch wir die folgenden Gleichungen erhalten:

x = a + (r * cos θ)
y = b + (r * sin θ)


Wobei a & b die x, y-Koordinaten des Mittelpunkts des Kreises sind.

Daher fanden wir x und y die Koordinaten des Punktes auf dem Umfang des Kreises mit dem Radius r


2
Danke, wirklich nette und kurze Antwort für dieses Problem, Daumen hoch
Ali.Ghodrat

5

Es gibt einen anderen Trick, bei dem Sie die Formeln sin (x + a) und cos (x + a) verwenden und mit dem Sie sin (a) und cos (a) berechnen können - ein Winkel, um den Sie sich bewegen möchten von Ihrer aktuellen Position aus - nur einmal und multiplizieren und addieren Sie einfach bei jedem Schritt.

sin (x + a) = sin (x) · cos (a) + cos (x) · sin (a) iirc.

Das setzt natürlich eine konstante Winkelgeschwindigkeit voraus.

Beachten Sie jedoch die begrenzte arithmetische Genauigkeit. Ich habe in der Vergangenheit beobachtet, dass eine "kreisförmige" Bewegung so implementiert wurde, dass eine Spirale als Ergebnis einer gelegentlichen Abrundung gezogen wurde, die sich im Laufe der Zeit wiederholte. Möglicherweise muss die Position nach jeder Umdrehung auf (x0, y0) zurückgesetzt werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.