Mein Ziel ist es, ein Objekt von Punkt a nach b zu bewegen (Verschiebung ) so schnell wie möglich unter Ausnutzung der maximal verfügbaren Beschleunigung , unter Berücksichtigung der Anfangsgeschwindigkeit und Endgeschwindigkeit .
Ich arbeite an der Physik von Raumschiffen, was bedeutet, dass es keine Reibung oder Luftwiderstand gibt. Die Richtung des Objekts ist nicht notwendigerweise parallel zur Richtung seiner Geschwindigkeit, noch sind die Anfangs- und Endgeschwindigkeiten notwendigerweise parallel.
Ich habe damit begonnen, dies in einer Dimension mit den Formeln für konstante Beschleunigung zu lösen , insbesondere:
Wir glauben, dass:
Auflösen für gibt:
Mit diesen Informationen kann ich das Objekt beschleunigen bis erreicht ist und dann abbremsen.
Dies in 3 Dimensionen zu tun ist etwas schwieriger. Ich gehe davon aus sollte konstant und gleich der maximal verfügbaren Beschleunigung sein . Mein erster Versuch hier war zu rechnen (wie oben) für jede Achse separat. Das Problem besteht jedoch darin, eine geeignete Beschleunigungsverteilung entlang jeder Achse zu finden, wenn sich die Verschiebung ändert (bei einem sich bewegenden Ziel), sodass das Objekt beispielsweise nicht in die Umlaufbahn geht.
In einem anderen Versuch habe ich die folgende feder-/dämpferähnliche Berechnung durchgeführt, um sie zu finden :
Ich habe versucht, im Internet nach diesen Informationen zu suchen, aber ohne Erfolg, irgendwelche Vorschläge?
Am Ende habe ich eine Lösung von Christer Swahn aus seinem Blog verwendet: http://mmoarch.blogspot.se/2012/05/computing-space-travel.html
Die Trajektorie wird angenähert und dann unter Verwendung der Bisektionsmethode optimiert. Ein nahezu perfektes Ergebnis wird normalerweise nach 10 Iterationen erreicht. Siehe vollständige Lösung (Java-Implementierung) unter: http://mmoarch.blogspot.se/2012/05/computing-space-travel-implementation.html
Problem. Auf Masseobjekt liegt bei mit Geschwindigkeit und muss Punkt erreichen mit Geschwindigkeit in der minimalen Zeitdauer, auf die die Beschleunigungsgröße begrenzt ist .
Gehen wir von einer allgemeinen Lösung aus und versuchen diese am Ende zu optimieren. Ich schlage einen fünfstufigen Prozess vor (inspiriert vom Rennwagenfahren). Ich ändere die Notation, um die Schritte besser verfolgen zu können. Auch der Richtungsvektor bei A ist und bei B ist . Auch die Normalenvektoren sind Und , Wo ist der erforderliche Drehwinkel zwischen A und B . Diese finden Sie unter . Um das Zeichen zu finden, verwenden Sie um zu sehen, ob Sie nach links oder rechts abbiegen müssen.
Beschleunigen Sie auf eine maximale Geschwindigkeit auf einer geraden Linie vom Startort und Geschwindigkeit . Die Endgeschwindigkeit ist , Stellung , und Zeit .
Verzögern Sie auf eine gewünschte Kurvengeschwindigkeit auf einer geraden Linie. Die Endgeschwindigkeit ist , Stellung , und Zeit .
Drehen Sie, um Ihre Geschwindigkeit an die Endgeschwindigkeit anzupassen und entlang der geraden Linie positionieren, die durch den endgültigen Standort definiert ist und Geschwindigkeitsrichtung. Der Kurvenradius ist . Die Endgeschwindigkeit ist , Stellung ist , und Zeit .
Beschleunigen Sie auf eine maximale Geschwindigkeit auf einer geraden Linie. Die Endgeschwindigkeit ist , Stellung , und Zeit .
Bremsen Sie bis zur endgültigen Position ab und Geschwindigkeit auf einer geraden Linie. Die Endgeschwindigkeit ist , Stellung , und Zeit .
Die Gesamtzeit ist
Die letzte Position wird verwendet, um Geschwindigkeiten zu finden Und
Am Ende ist die Zeit eine Funktion von nur, aber es ist nicht einfach, diese Funktion zu optimieren. Überlegen Sie, das Folgende zu lösen
QMechaniker
John Alexiou
Jonas Persson
Jonas Persson