Ich schreibe eine Software, die die Umlaufbahn eines Raumfahrzeugs von einer anfänglichen Erdumlaufbahn auf eine interplanetare Umlaufbahn überträgt. Meine einfache Zwei-Körper-Ausbreitung funktioniert sowohl in einer geozentrischen als auch in einer heliozentrischen Umlaufbahn. Allerdings kann ich den Übergang nicht richtig handhaben.
Hier sind die Schritte dieses Übergangs (ich kann relevanten Code teilen, falls nützlich):
Holen Sie sich die ekliptische J200-Position der Erde (über https://github.com/soniakeys/meeus/blob/master/planetposition/planetposition.go#L195 ) und berechnen Sie die Geschwindigkeit der Erde (über Gleichungen auf den ersten Seiten von Vallado - Fundamentals in Astrodynamik). Beachten Sie, dass die Bibliothek "meeus/planetposition" die Ekliptikpositionen in L, B, R zurückgibt, die ich in kartesische Koordinaten umwandle (über https://en.wikipedia.org/wiki/Ecliptic_coordinate_system#Rectangular_coordinates )
Drehen Sie die Radius- und Geschwindigkeitsvektoren meiner geozentrischen Umlaufbahn um die erste Achse und um die axiale Neigung der Erde (gemäß https://en.wikipedia.org/wiki/Ecliptic_coordinate_system#Converting_Cartesian_vectors )
Addieren Sie die in Schritt 2 berechneten R- und V-Vektoren des Raumfahrzeugs zu den in Schritt 1 berechneten Radius- und Geschwindigkeitsvektoren des Planeten (seit )
Bei der Visualisierung beider Trajektorien in Cosmographia kann ich definitiv feststellen, dass die Berechnung falsch ist (vgl. die beiden Screenshots unten). Ich stecke jetzt seit ein paar Stunden in diesem Thema fest (etwa zwölf, würde ich sagen), also wäre jede Hilfe sehr dankbar.
Sie könnten natürlich eine grobe Z-Achsen-Rotationsmatrix (relativ zur Erde) erstellen und die Erdrotation als zeitlich konstant schätzen, aber das ist nicht ganz genau. Sie können die computeFixedToICRF-Methode von CäsiumJS neu erstellen. Es ist sehr Reverse-Engineering-y und keine vollständige Lösung, aber der Versuch, diese Transformationen durchzuführen, ist gelinde gesagt nicht trivial.
Link zur Dokumentation der ComputeFixedToICRF-Methode in Cäsium: https://cesiumjs.org/Cesium/Build/Documentation/Transforms.html?classFilter=transf#.computeFixedToIcrfMatrix
Es gibt ein Paket namens satellite.js, das hier auch eine Umwandlung von ECF zu ECI durchführt: https://github.com/shashwatak/satellite-js/blob/develop/src/transforms.js
äh
Markus Adler
ChrisR