Seite 2 von 6
Verfasst: 02.03.2005 11:35
von Dostej
@FD
Thx - habs noch mal getscheckt - jetzt geht auch das 2. Bild
Die Linie im 2. Bild übrigends gerade, ist ne klassische optische Täuschung...
Verfasst: 02.03.2005 15:16
von bluejoke
das ganze findet auf einer 2 dimensionalen Ebene statt?
Verfasst: 02.03.2005 15:24
von Dostej
Ja, ich wollte nicht noch mehr Probleme haben (zum anderen soll es für die Spieler noch vorstellbar sein) - Wer kann sich Bewegungen im 3D-Raum noch vorstellen, wenn sie letztlich am Screen auf 2D projiziert werden? (ich jedenfalls nicht)
Zum andern geht es mir nur um eine Annäherung an die Realität, die sich leider der Spielbarkeit unterordnen muss.
(Die Realität ist es ja schon gewohnt, immer nur Ansatzweise erkannt zuwerden... es macht ihr daher vermutlich nicht mehr so viel aus...

)
Verfasst: 04.03.2005 18:13
von Dostej
Eigentlich habe ich gehofft, das jetzt nach der etwas detailierteren Beschriebung NtQ anspringt ...
(Das könnte man jetzt mit dem Apellohr hören...)
Verfasst: 11.03.2005 10:06
von yxin
also ich würde es irgendwie über den pythagoras machen...
erstmal musste ja die minimale entfernung in der näheren zukunft rausfinden (muss halt vorweg ausgerechnet werden)
oder kann dein schiff so lange warten, bis die absolut kürzeste entfernung (abstand der beiden ringe) erreicht ist?
wenn du jetzt die minimalste entfernung hast, musst du quasi die zeit, die dein schiff samt beschleunigung benötigt, mit einberechnen... (irgendwie der nullpunkt der ersten ableitung... blabla *g*)
der abflugzeitpunkt muss dabei ja vor dem erreichen der kürzesten entfernung liegen (stichwort abfang-/rendezvouskurs)
kannst mal bei der nasa anrufen, wie die das gelöst haben
also so grob kann man schonmal anfangen zu denken

Verfasst: 11.03.2005 13:51
von Laurin
So einfach ist das nicht yxin, glaub mir. Ich hab mir schon ein paar Stunden lang darüber den Kopf zerbrochen.
Grob gesagt, würde ich das so rechnen:
1. Schleifenanfang
2. Position des Planeten zu einer gewünschten Zeit in der Zukunft berechnen.
3. Berechnen, wie lange das Raumschiff bis zu der errechtneten Position braucht.
4. Zeit vergleichen, wie lange der Planet und das Raumschiff jeweils dafür brauchen um diese Position zu erreichen.
5. Wenn der Planet länger braucht als das Raumschiff, gehe zu 2. und rechne die Position des Planeten in nicht so weit entfernter Zukunft aus.
6. Wenn der Planet schneller ist als das Raumschiff, dann gehe zu 2. und rechne noch weiter in der Zukunft.
7. Zeiten sind gleich, Idealkurs gefunden.
8. Schleifenende
Das erinnert mich an diese Funktionen, Mensch wie hießen die den...? Ich meine die Funktionen, die sich einem Wert immer weiter annähern, aber nie erreichen. Wie diese hier: f(x)=1/n. Sie geht immer weiter in Richtung 0, aber erreicht sie nie. So ähnlich wird das bei meinem Algorithmus oben auch passieren.
Greetz Laurin
Verfasst: 11.03.2005 14:40
von bluejoke
Limes?
und du meinst sicher 1/x und nicht 1/n, oder?
1/x geht für x -> unendlich gegen 0
Verfasst: 11.03.2005 15:03
von freedimension
Er meinte sicherlich Iterationen

Verfasst: 11.03.2005 15:21
von jear
@Dostej
Das Ganze ist nicht trivial mit einer einfachen Formel zu lösen. Da hoffst Du umsonst.
Iteration ist ein Weg. Das Schiff fliegt für einen festzulegenden Zeitabschnitt den Kurs, mit dem es das Ziel sieht. Danach wird der Kurs für die nächste Iteration neu berechnet. Das ganze nennt man Hundekurve, weil ein Hund so einen Hasen verfolgt.
Wenn das Schiff so fliegt, dass die Peilung zum Ziel "steht" dann hat es den richtigen Kollisionskurs und fliegt mit Vorhalt. Den Kurs kannst Du, sofern es überhaupt eine Lösung gibt, mit einer Vektoren-Berechnung ermitteln. Da hilft Dir irgendein Navigationsbuch aus der Segelei.
Du brauchst aber eine Lösung, die beides auf vernünftige Weise miteinander verbindet und ausschließt, dass das Schiff durch die Sonne oder andere Himmelskörper hindurchfliegt.
Verfasst: 11.03.2005 17:55
von Dostej
Das Schiff fliegt für einen festzulegenden Zeitabschnitt den Kurs, mit dem es das Ziel sieht. Danach wird der Kurs für die nächste Iteration neu berechnet. Das ganze nennt man Hundekurve
das habe ich praktisch bis jetzt so drin. Das Schiff rennt wie ein blöder dem Planeten hinterher, der sich dreht - wenn das ein Pilot machen würde...das wäre schon eher peinlich... ausserdem kann es passieren, falls der Antrieb langsam ist und sich der Mond um einen Planeten dreht, der sich um die Sonen dreht, das das zu schenll fürs Schiff ist, so dass es ewig dahinter her hechelt (wie ein doofer Hund eben...)
Dann wäre es effektiver, einfach stehenzubleiben udn zu warten, bis der Planet wiederkommt...)
Hm, also die ganze Sache mit der Beschleuningung ist zu vernachlässigen, das Schiff fliegt pro Runde mit einer Geschwindigkeit 0 <= x <= max. Das geht ohne Beschleunigung...
Das Ziel ist der am schnellsten zu erreichende Rondevouz-punkt mit einem gegeben Planeten (im Sinne das der Punkt gewählt wird, der insgesamt die wenigste Zeit benötigt). Es kann durchaus auch dann dort auf den Planeten warten. das wäre ok.
Ich habe überlegt, wie ich es graphisch lösen würde. Ich würde die Position des Planeten auf der Umlaufbahn (des Planeten) in den verschiedenen Runden einzeichnen (mit der Anzahl der Runden). Dann würde ich das Schiff mögliche Schnittpunkte mit der Kreisbahnpositionen finden lassen, an denen der Planet ist und die Zeiten vergleichen. Es zählt die Schiffszeit, wenn diese <= der Planetenzeit ist (sonst ist der ja wieder weg...) Das Minimum aller Schnittpunkt-Daten sollte die ideale Rondevouz-position sein. Falls das stimmen sollte, wüsste ich immer noch nicht, wie ich das Programmmässig umsetzen sollte. Aber irgendwie beschleicht mich das Gefühl, das das da noch ein Denkfehler meinerseits drinsteckt...
(was passiert, wenn das Schiff so langsam ist, das sich der Planet derweilen mehrmals die volle Drehung ausführt?)