Kepler-Umlaufbahn: Position auf der Umlaufbahn im Laufe der Zeit

8

Ich entwickle ein Spiel im Zusammenhang mit der Weltraumsimulation und habe einige Probleme, die Bewegung von Doppelsternen wie folgt zu implementieren:

Doppelstern

Die beiden Sterne umkreisen ihren Schwerpunkt und ihre Flugbahnen sind Ellipsen.

Ich weiß im Grunde, wie man die Winkelgeschwindigkeit an jeder Position bestimmt, aber nicht die Winkelgeschwindigkeit über die Zeit. Für einen bestimmten Winkel kann ich die Position der Sterne sehr einfach berechnen (vgl. Http://en.wikipedia.org/wiki/Orbit_equation ).

Ich möchte die Position der Sterne im Laufe der Zeit erreichen. Die parametrischen Gleichungen der Ellipse funktionieren, geben aber nicht die richtige Geschwindigkeit an : { X(t) = a×cos(t) ; Y(t) = b×sin(t) }.

Ist es möglich und wie geht das?

Artefakt2
quelle
Dies könnte durch Simulation der Schwerkraft geschehen, die ziemlich einfach ist (addiere eine Kraft, die von der Masse * sqrt (Entfernung) abhängt, und mache einfache Physik)
Elva
7
Nein, mach keine einfache Physik! Umlaufbahnen sind numerisch instabil und alles wird implodieren oder explodieren.
Jonas Bötel

Antworten:

4

Wenn Sie ein paar Links von der Wikipedia-Seite folgen, auf die Sie verweisen, führt dies zu Position als Funktion der Zeit .

Peter Taylor
quelle
1
Vielen Dank. Sieht so aus, als müsste ich die Newton-Methode verwenden, um die zweite Gleichung zu lösen.
Artefakt2
0

Sie scheinen genug Daten gehabt zu haben, um die handliche Animation oben zu erstellen. Ihre Simulation benötigt möglicherweise mehr Genauigkeit als von meiner Lösung bereitgestellt:

Notieren Sie für jedes Bild Ihrer obigen Animation die Pixelpositionen der Zentren jedes Sterns. Geben Sie diese Werte in zwei Arrays in Ihrem Programm ein. Suchen Sie für eine gegebene Zeit t die entsprechenden vier aufeinanderfolgenden Einträge in jedem Array und führen Sie einen bikubischen Filter durch, um die Position jedes Sterns zu ermitteln.

bmcnett
quelle
Eigentlich ist die Animation von Wikipedia.
Artefakt2
0

Ich habe festgestellt, dass die numerische Integration der einfachste Weg ist. Das inverse Quadratgesetz (F = GM / r ^ 2) funktioniert ziemlich gut. Und Runge Kutta Order 4, oft RK4 genannt, ist einfach zu implementieren und funktioniert sehr gut. Sie beginnen mit dem Schreiben einer Routine, die eine Zeitableitung erster Ordnung benötigt, beispielsweise für ein einzelnes Objekt im 2D-Raum, Sie haben X- und Y-Koordinaten sowie X- und Y-Geschwindigkeiten. Die Ausgabe ist die Zeitableitung, die Zeitableitung der Position ist einfach Geschwindigkeit, also kopiert die Hälfte nur Werte, dann ist die Beschleunigung nur die Anziehungskraft. Dann folgen Sie dem Runge Kutta Rezept. Der Fehler eines einzelnen Zeitschritts ist proportional zum Zeitschritt zur fünften Potenz. Sie passen den Zeitschritt an, um das Ergebnis genau genug zu machen. Ein Vorteil der numerischen Integration besteht darin, dass Sie mit dem System spielen möchten, um es interessanter zu machen.


quelle
Ja, das ist eine Lösung, aber mein Programm ist keine Physiksimulation in Echtzeit. Es ist diskret und ich kann nicht überall alles aktualisieren. Deshalb ist die Position als Funktion der Zeit schön: Sie muss nicht berechnet werden, immer genau, egal wie oft die Positionen aktualisiert werden.
Artefakt2