Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [2k3] Formel für Kreisbahn eines Planeten



IndependentArt
02.10.2017, 20:28
Hey,

ich habe einen Planeten und der soll eine hübsche Kreisbahn ziehen. Das ganze muss ich natürlich irgendwie mit Variablen steuern.
Da ich nicht viel von Formeln und solchem Kram verstehe, dachte ich mir, ich poste die Frage gleich schonmal, ohne großartig selber herumprobiert zu haben.

Nichts desto trotz würde mein Ansatz wohl irgendwie so aussehen:
Ich denke, ich würde versuchen, das ganze mit nur einem Move Befehl zu machen, der zB auch nur 0,1 Sek. dauert.
Dann brauche ich neben meinen aktuellen Koordinaten noch 2 Variablen, die von den Koordinaten abgezogen bzw. addiert werden, je nachdem wo man gerade ist auf der Kreisbahn.
Und wenn ich es richtig sehe, brauch ich noch ein paar Koordinaten in ... an der Stelle bekomme ich allerdings schon wieder nen Knoten im Gehirn. Ich weiß nur, dass die Kurve und damit der Wert der abgezogen/hinzugefügt werden muss, irgendwie exponentiell steigen/abfallen muss. :)

edit: Es sollte dabei außerdem die Größe der Bahn und die Umlaufgeschwindigkeit flexibel eingestellt werden können.

Ich weiß, dass hier Leute sind, die das wesentlich schneller durchdenken können oder einfach ausm Ärmel ziehen, deshalb frag ich einfach mal und freue mich auf Auskünfte. :)
_________________________________

EDIT: Geschafft! :D

24316

Eventcode sieht so aus, falls es jemanden interessiert.
24317

Ich gebe quasi mit der -5 für die Variable 704 den Radius vor (welcher für das Gif jetzt sehr klein gewählt ist). Dann ziehe ich von Y kontinuierlich ab und gebe zu X kontinuierlich zu. Das mach ich dann für alle 4 Quadranten einzeln.
Ich glaube, die Kreisbahn ist nicht perfekt und in den Scheitelpunkten wird er auch langsamer aber die Endgeschwindigkeit für den Mond wird eh sehr langsam sein, so dass mich das nicht stört.

MarcL
03.10.2017, 08:15
Hey Indy

du nutzt doch DynRPG, d.h. du könntest auch die Kreisfunkionen sin und cos nutzen, wenn du das Mathe Plugin verwendest ;) Dass macht es etwas schöner, flüssiger und einfacher zu bauen :)

PS: Falls du keine Ahnung von sin und cos hast, hier die Formeln: y(a) = r * sin(a) und x(a) = r * cos(a) (a ist der winkel alpha zur x achse, den du hochzählen müsstest, r ist der radius des kreises)

IndependentArt
03.10.2017, 12:03
Danke für den Tipp. Ich steige allerdings gerade um aus easyrpg, deshalb wäre es unpraktisch noch mehr Plugins zu benutzen, die für mich nachgecodet werden müssten. :)

Caledoriv
05.10.2017, 17:05
Das müsste eigentlich auch einfacher gehen... Aber dann kommst du an einer Wurzel nur schwer vorbei.

Die Kreisbahn kann auch beschrieben werden durch:
y = sqrt(r² - x²)

Dabei "bewegt" sich x immer zwischen -r und +r und dein Objekt auf der Kreisbahn hat dann den Punkt:
(Vektor zum Mittelpunkt des Kreises) + (Vektor x y)

Ark_X
05.10.2017, 17:41
@Caledoriv: Da hast du aber das Problem, dass eine gleichmäßige Kreisbewegung nicht (ohne weiteres?) möglich ist, da y sich nicht gleichmäßig ändert, wenn x gleichmäßig zu- bzw. abnimmt. An den x-Rändern (d.h. x nahe bei r bzw. -r) würde sich der Planet schnell bewegen, rund um x = 0 dagegen etwas langsamer.

Ich kenne mich mit den Basismöglichkeiten des Makers nicht aus, enthält der diese mathematischen Grundfunktionen überhaupt nicht?

Caledoriv
05.10.2017, 18:51
Guter Punkt! Daran hatte ich nicht gedacht.

Dazu fallen mir aber zwei Lösungsmöglichkeiten ein:
a) Keine fixe Schrittgröße. Wenn man die Schrittgröße variiert, kann man bestimmt eine annähernd gleichförmige Bewegung hinbekommen. Das bedeutet aber nochmal extra Aufwand und viel Rumgespiele...
b) Man nutzt das aus, baut noch einen weiteren Faktor ein und sollte so ein ellipsenartiges Konstrukt bekommen. Ist es nicht auch "in echt" so, dass Planeten auf Ellipsen fliegen und sich ihre Geschwindigkeit mit dem Abstand zum Mittelpunkt ändert?

Ark_X
05.10.2017, 21:27
b) Man nutzt das aus, baut noch einen weiteren Faktor ein und sollte so ein ellipsenartiges Konstrukt bekommen. Ist es nicht auch "in echt" so, dass Planeten auf Ellipsen fliegen und sich ihre Geschwindigkeit mit dem Abstand zum Mittelpunkt ändert?
Ist schon so, allerdings weichen die Bahnen der meisten Planeten extrem wenig von der Kreisform ab. In unserem Sonnensystem ist dies bei Pluto noch am extremsten (ja, mittlerweile selbst kein Planet mehr) bzw. als Ellipse erst bei Kometen wirklich erkennbar.

Und es würde auch am grundsätzlichen Problem nichts ändern, da die Formeln für die Ellipse der des Kreises sehr verwandt sind (der Kreis ist schließlich eine spezielle Ellipse):
Parameterform: x = a*cos(t), y = b*sin(t) (t wäre der Parameter, den man für die reale Bewegung gleichmäßig steigern müsste)

funktionaler Zusammenhang: y = +- (b/a)*sqrt(a² - x²)
->Wieder das gleiche Problem wie beim Kreis - gleichmäßiges Erhöhen von x führt zu einer Veränderung von y, die nicht der Realität entspricht (also bei gleichmäßigem Fortschreiten der Zeit).

Und zu Vorschlag a): Die richtige Schrittgröße für x herauszubekommen dürfte dich letztendlich auch wieder zu den Winkelfunktionen führen...

MarcL
06.10.2017, 05:42
In diesem Sinne möchte ich auch gern nochmal Werbung für Kazesui machen, der ein Script geschrieben hat, mit dem man sinus und cosinus (und anderes) auch ohne DynRPG im Maker ausrechnen lassen kann.
Das heißt, das folgende Script müsste auch im offiziellen Maker 2k3 funktionieren:

https://rpgmaker.net/tutorials/479/

Man callt dann einfach das Common Event CoSinusA und das errechnet dann für den Winkel alpha den Cosinus und den Sinus den man z.B. für den Kreis braucht :)
Einziges Problem ist, dass man die Variablen 101 zu 160 benötigt, was bei bereits vorhandenen Projekten u.U. schwierig ist, wenn sie schon verwendet wurden. Wer das Script mit nem anderen Variablenbereich benötigt, kann auch in LotS nachsehen, ich hatte mir mal mir die Arbeit gemacht, die ganzen Variablen zu ändern -.-

Cherry
08.10.2017, 15:03
Oder man nimmt sich RMEventFactory (http://cherrytree.at/cms/download/?did=11) und baut sich somit ein CE was Sinus berechnet - mit beliebigen Variablen.

Ich glaube Sinus-CE ist sogar eines der beiliegenden und in der Hilfedatei beschriebenen Beispiele.

IndependentArt
09.10.2017, 07:30
Danke, Cherry. Kannte das Teil noch nicht, check aber so auf Anhieb auch noch nicht was man wie damit machen kann. Muss ich mich mal mit beschäftigen.