Kürzeste Strecke zwischen zwei Punkten bei Kreisbewegung

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Kürzeste Strecke zwischen zwei Punkten bei Kreisbewegung

Beitrag 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?
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Beitrag von Dostej »

Ok, sieht so aus als wenn das ne glatt überforderung wäre...
Werd ich wohl was im Konzept ändern müssen -- :cry:
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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 ;)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Beitrag von Dostej »

Ein Hoffnungsschimmer...?
Ich schick die ne PM heute abend.. :allright:
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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. :wink:

Hast du vielleicht eine kleine Skizze für mich oder eine detailiertere Beschreibung des Problems?
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag 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 :D


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 :D
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Beitrag 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...
Bild

und hier eins von der etwas kompexeren (wobei für mich beide DInge ziemlich komplex sind...)
Bild

//EDIT: kann mir jemand sagen, warum die Bilder nicht angezeigt werden?
Zuletzt geändert von Dostej am 02.03.2005 11:33, insgesamt 1-mal geändert.
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Wegen den Bildern: Da war jeweils ein Leerzeichen zuviel, das zweite Bild läuft bei mir aber trotzdem immer in einen Timeout :(
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Antworten