2012-03-25 8 views
2

Ich versuche ein genaues Orbitalsystem mit box2d zu erstellen, grundsätzlich; Ich möchte in der Lage sein, eine Kugel auf die Erde zu schießen, und abhängig davon, wie schnell diese Kugel fliegt, wird sie von der Erde entkommen, in der Umlaufbahn um die Erde bleiben oder auf der Erdoberfläche z. B. 240 Grad oder 45 Grad landen. (vorausgesetzt, die Kugel feuert bei 0 Grad) Ich habe viel Forschung und tauchte bereits in die Physikgesetze von Newton etc. ein. Grundlegende applyforce scheint die Arbeit nicht genau genug zu machen. Ich fand auch die Formel, die die benötigte Geschwindigkeit für ein Objekt berechnet, um im Orbit zu bleiben, und ich schaffte es, dies innerhalb von box2d geschehen zu lassen. Wenn ich jedoch die Kugel stoppen will, wird die Kugel nicht wieder auf die Erde fallen. (Anwenden der Kraft wird für die radiale Schwerkraft verwendet und die zweite Anlegekraft wird verwendet, um die Kugel nach "rechts" zu bewegen.) Sie bleibt in der Umlaufbahn. Nur wenn ich Dämpfung hinzufüge, wird die Kugel auf die Erde fallen, aber das scheint mir falsch. Wenn das Geschoss mit etwas anderem kollidiert, wird es auch feucht.Irgendwelche Ideen, wie man mit box2d eine genaue Orbitalgravitation erzeugt?

Ich dachte, dass das Hauptproblem hier ist, die Geschwindigkeit für das Geschoss zu modifizieren. Die Kugel braucht eine x Zeit, um auf uns zu landen, sagen wir: 180 Grad. Je weiter die Kugel von der Erdoberfläche entfernt ist, desto mehr Geschwindigkeit benötigt sie, um die gleiche Zeit auf 180 Grad zu landen. Ich denke, dass Geschwindigkeit der Schlüssel ist, um wahre genaue radiale Schwerkraft zu machen, aber meine Frage ist; Ist das wahr, was denkst du, hat jemand ein ähnliches Szenario? Wie kontrolliert man die Geschwindigkeit am besten, ohne Dämpfung und eingestellte Lineargeschwindigkeit zu verwenden?

Ich möchte auch in der Lage sein, die Geschwindigkeit zu steuern, die benötigt wird, um die Kugel umkreisen, entkommen oder landen auf der Erde zurück. Dies sollte möglich sein, da es auch eine Formel gibt, die die Bahngeschwindigkeit berechnet. Zum Beispiel Wenn es schief geht, bewegt sich die Kugel zu schnell, wird von der Erde entkommen, wird sich aber zurückbewegen, weil die Schwerkraft der Erde den Weg der Kugel verändert.

Btw: Ich habe viel im Internet gesucht, aber kann nicht wirklich diese Sachen mit praktischen box2d Code verknüpfen, so hoffe ich, jemand kann mir die richtige Richtung zeigen. Mit freundlichen Grüßen!

+0

"Nur wenn ich Dämpfung hinzufüge, wird die Kugel auf die Erde fallen, aber das scheint mir falsch." An realen Satelliten scheint es nur wenig Widerstand zu geben, das scheint mir richtig zu sein. http://www.aero.org/capabilities/cords/faq1.html sorry kann mir nicht weiter helfen :) – iforce2d

+0

Hm ... das ist interessant, obwohl ich keinen Luftwiderstand im Weltraum habe ... aber das macht Sinn natürlich gibt es ... das erklärt auch das Gravitationsgesetz ... (Objekte bewegen sich für immer in einer geraden Linie ohne Kräfte usw.) ... in gues kommt es dazu, die Dämpfung gegen die Geschwindigkeit zu optimieren ... Bis du es richtig machst. Gibt es eine Formel, die die erforderliche Dämpfung berechnen kann, um die Geschwindigkeit zu reduzieren? Sagen wir, ich möchte die Geschwindigkeit von 10 auf 5 in 2 Sekunden verringern, was sollte das Dämpfungsverhältnis sein? Thnx für den Verweis auf diesen Link ... !! :-) – stationX

+0

Das wäre eine Beschleunigung von -2,5m/s/s, f = ma also könntest du für 2 Sekunden ApplyForce von Masse * 2,5. Dämpfung verringert die Geschwindigkeit des Körpers um einen Prozentpunkt bei jedem Zeitschritt, so dass es schwerer ist, sie zu berechnen. – iforce2d

Antwort

3

Ich fand diese http://www.emanueleferonato.com/2012/03/28/simulate-radial-gravity-also-know-as-planet-gravity-with-box2d-as-seen-on-angry-birds-space/ gab ein großartiges Beispiel für die Durchführung der radialen Schwerkraft (Planet Schwerkraft) mit Box2D für ActionScript3, kann aber leicht auf Box2D für C++ portiert werden. Es gibt einige Box2D-Beispiele für andere Tricks.

+0

Heey, thnx für die Antwort! Ja, das ist ein guter Ausgangspunkt. Ich konnte das in iOS machen. Ich habe jedoch festgestellt, dass es sehr schwierig ist, diese Box in diesem Beispiel im Orbit zu lassen oder sie sanft auf einem Planeten landen zu lassen! Wenn Sie eine Box erstellen, können Sie sie leicht aus dem Schwerefeld eines Planeten entkommen lassen, was nicht wirklich das ist, was ich möchte. Diese Box muss irgendwie "gefangen" werden. In ABS können Sie bemerken, dass diese Vögel etwas in einer zweiten Runde um den Planeten schlagen können. Wie auch immer ... ich habe versucht, einige Orbit-Formeln und einfache Dämpfung in box2d zu verwenden, um diesen Orbital-Effekt wiederherzustellen. – stationX

+0

Hey, ich habe deinen Link benutzt, um das Beispiel mit den Sachen zu verbessern, die ich brauche. http: // www.mvfusion.nl/no-this-is-not-going-to-be-angry-birds-space-v2/ Ich denke, oder hoffe, dass ich einen Weg gefunden habe, den Effekt der orbitalen Gravitation wiederherzustellen ... :-) – stationX

+0

Das Problem ist nur, dass die Objekte keine Ruheposition finden können, wie dies bei der normalen linearen Schwerkraft von box2d der Fall wäre, was ein Problem ist, wenn Sie viele "Trümmer" -Objekte haben. – SpoonMeiser

Verwandte Themen