Seite 1 von 6
Kürzeste Strecke zwischen zwei Punkten bei Kreisbewegung
Verfasst: 22.02.2005 18:44
von Dostej
Also mein Problem stellt sichfolgenermassen dar:
Ich hab ein Sonnensystem, das sich (immerhin) auf regulären Kreisbahnen bewegt. Nun habe ich bei einem Planet ein Schiff, das soll nun zu einem anderen Planet geschickt werden. Die Geschwindigkeit ist fix. Das schiff ist von der Bewegung nicht an die Kreisbewegung gebunden (unrealisitisch aber wahr

).
Ich find keinen Anfang, wie ich die Position finden kann, wenn sich der Zielplanet dort befindet, wo sich das Schiff befinden kann, damit das am schnellsten geht...
Letztlich gibt es ja viele Möglichkeiten, wo ein Rondevouz stattfinden kann. Wie finde ich die kürzeste Strecke?
Ich bin zwar mathmatisch nicht unbegabt (bin trotz allem bis zur Infinitesimalrechnung gekommen - ist aber schon etwas her). Nur hier stehe ich an.
Kann mir jemand helfen?
Verfasst: 01.03.2005 14:45
von Dostej
Ok, sieht so aus als wenn das ne glatt überforderung wäre...
Werd ich wohl was im Konzept ändern müssen --

Verfasst: 01.03.2005 14:52
von freedimension
Warte mal, wenn ich wieder daheim bin schaue ich mal nach. Schick mir einfach mal heute Abend so um 18 Uhr eine PN

Verfasst: 01.03.2005 15:01
von Dostej
Ein Hoffnungsschimmer...?
Ich schick die ne PM heute abend..

Verfasst: 01.03.2005 21:51
von freedimension
OK, hab mir gerade selber etwas den Kopf zerbrochen und bin auf einen Ansatz gekommen wie es funktionieren könnte, allerdings nicht über eine einzelne Rechnung, sondern durch "Simulation".
Da sich dein Raumschiff mit einer gleichbleibenden Geschwindigkeit bewegt, kannst du doch einfach vom Startpunkt aus einen Kreis ziehen (rein gedanklich, Finger weg von 2D Drawing

), welcher mit der Zeit immer größer wird. Gleichzeitig bestimmst du immer die Position des zweiten Planeten (am Besten mit einem Radius versehen) und versuchst nun in deiner Simulation den Zeitpunkt herauszufinden, wann sich die beiden Kreise schneiden (also Planetenradius und SoWeitHatEsDasRaumschiffSchonGeschafftRadius).
Billig und vielleicht nicht sehr performant, aber du musst es ja nur einmal ganz am Anfang der Animation ausrechnen, das dürfte nicht sehr lange dauern und ist mit etwas analytischer Geometrie leicht zu lösen.
Nochmal zum Verständnis ebbes Pseudocode
Code: Alles auswählen
Repeat
Zeit + dZeit
PosPlanet = Sin von Cos(blablabla)
ZeitradiusRaumschiff + KonstanteGeschwindigkeit
Until PosPlanet liegt auf ZeitradiusRaumschiff
Das Ganze dann ausreichend granular (also dZeit ausreichend klein), damit sich Schiff und Planet nicht aus Versehen verpassen.
Verfasst: 01.03.2005 23:52
von NicTheQuick
Ich habe das Problem nicht so ganz verstanden, sonst könnte ich sicherlich weiterhelfen. Zumindest klingt es mal so wie die Dinge, die ich gerne berechne.
Hast du vielleicht eine kleine Skizze für mich oder eine detailiertere Beschreibung des Problems?
Verfasst: 01.03.2005 23:58
von bluejoke
@NtQ: Vielleicht hilft dir ja das:
2 sich bewegende Standorte (mit unterschiedlicher Geschwindigkeit) - . Jetzt soll der kürzeste Weg zwischen beiden herausgefunden werden, aber auch beachtet werden, dass das Schiff, das sich zwischen beiden Standorten bewegt auch eine begrenzte Geschwindigkeit hat. (bei unendlicher Geschwindigkeit wäre die kürzeste Strecke ja der direkte Luftweg)
Also pathfinding für Profis
Idee: Krass wäre es, wenn man festlegen könnte, wie wichtig Energiesparsamkeit im Gegensatz zu Geschwindigkeit ist. Dann könnte das Schiff einfach an einer Position auf den anderen Planeten warten

Verfasst: 02.03.2005 01:05
von Kaeru Gaman
ich glaube, FD hat das problem gut definiert.
wenn die zeit da ist, eine solche schleife zu fahren, ist das praktikabel.
ich dachte zuerst an ein gleichungssystem, hab aber leider nicht die zeit gefunden,
mich eingehender damit zu beschäftigen.
@BJ
der erste standort bewegt sich nicht, das ist der startpunkt des raumschiffes.
(also startplanet-momentan)
aber zielplanet-momentan ist unbrauchbar, da sich dieser in der zeit,
die das raumschiff braucht, weiterbewegt.
@NTQ
also, um das problem mal zu spezifizieren...
Das Raumschiff startet an einer festen Koordinate XYstart mit Vnull=0,
kann in einer gegebenen zeit Vmax(=90%c z.b.) erreichen,
und muss vor dem Rendezvous wieder auf Vend=0 abbremsen.
der punkt des Rendezvous muss jetzt ermittelt werden, da sich XYziel verändert,
nämlich anhand der Kreisbahnbewegung des Zielplaneten.
sollte nich sooooo schwer sein, eine schleife zur wertermittlung ist evtl.
infacher zu implementieren, als eine extreme formel...
sorry, hab grad net den kopp frei genug für diese problemlösung....
Verfasst: 02.03.2005 09:58
von Dostej
@FD
Ich habe mir deinen Lösungsvorschlag mal durch den Kopf gehen lassen: Im Prinzip müsste das doch auf Schnittpunkt zweier Kreise rauslaufen, Und dann die jeweils kürzere Strecke rausfinden... oder denke ich da grad falsch?
@KG
also, um das problem mal zu spezifizieren...
Das Raumschiff startet an einer festen Koordinate XYstart mit Vnull=0,
kann in einer gegebenen zeit Vmax(=90%c z.b.) erreichen,
und muss vor dem Rendezvous wieder auf Vend=0 abbremsen.
der punkt des Rendezvous muss jetzt ermittelt werden, da sich XYziel verändert,
nämlich anhand der Kreisbahnbewegung des Zielplaneten.
Gaaanz so kompliziert ist es nicht...
Das ganze geht in runden. Jede Runde legt das Schiff maximal die Entfernung x (z.B. 4) zurück. Wenn die letzte Strecke nur 3 ist, dann eben nur 3, sodas es genau am Ziel ankommt. (Beschleunigung und bremsen is nicht...)
Das Ziel bewegt sich aber auf einer Kreisbahn bei Planeten (bzw. auf einer Kreisbahn um eine Kreisbahn bei Monden...)
Jetzt möchte ich den schnellesten Rondevouz-punkt bestimmen, damit das Schiff dorthin fliegen kann und dann (evtl.) dort auf den Planet warten kann (oder sich dort genau treffen, ist egal)
Dabei sollte das gnaze bestimmt sein (also Ausgangspunkte, Geschwindigkeit der Drehung) in Grad pro Runde, der Abstand von der Mitte (sprich der Radius)
Hier ein Bild von der einfachen Variante...
und hier eins von der etwas kompexeren (wobei für mich beide DInge ziemlich komplex sind...)
//EDIT: kann mir jemand sagen, warum die Bilder nicht angezeigt werden?
Verfasst: 02.03.2005 11:09
von freedimension
Wegen den Bildern: Da war jeweils ein Leerzeichen zuviel, das zweite Bild läuft bei mir aber trotzdem immer in einen Timeout
