Celestial-mechanic-simulator

    • Beta
    • Open Source

    Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von φConst.

      Celestial-mechanic-simulator

      ~~~CMS~~~
      Celestial-mechanic-simulator

      In Folge eines Schulprojekts entstand diese Applikation, die die Bewegung der Himmelskörper, mittels des expliziten eulerschen Verfahrens , wiedergibt .
      Es sind implementiert ein N-Körper-Problem(stark approximiert), Konfiguration von Planeten,
      Umlaufbahnen, Sprachsteuerung.

      Die Repräsentation erfolgt im 3D-Raum.
      Die Applikation ist in C# programmiert.
      Dadurch, dass ich seit geraumer Zeit mit XNA arbeite, entstand auch dieses Projekt mithilfe des XNA-Frameworks( tut mir leid).

      Die Steuerung erfolgt entweder über die Tasten (W A S D) + Maus, oder durch "Point&Click&Move".


      Im Anhang finden sich Screenshots,
      die Simulation wird durch einen externen Hoster zur Verfügung gestellt( ZIP -Datei 75 MB ~ entpack: 189MB)

      Mindestanforderungen:
      - Framework: XNA 4.0
      - Framework: .NET 4 Client
      - Grafikkarte die Hardware-Instancing und Shader-Model 3.0 unterstützt.




      Download Beta(Google Drive)



      Bilder
      • Screenshot (237).png

        169,79 kB, 1.920×1.080, 365 mal angesehen
      • Screenshot (290).png

        176,99 kB, 1.920×1.080, 369 mal angesehen
      • Screenshot (291).png

        160,35 kB, 1.920×1.080, 311 mal angesehen
      • Screenshot (292).png

        88,98 kB, 1.920×1.080, 297 mal angesehen
      • Screenshot (293).png

        99,41 kB, 1.920×1.080, 300 mal angesehen
      • Screenshot (294).png

        156,14 kB, 1.920×1.080, 329 mal angesehen
      Und Gott alleine weiß alles am allerbesten und besser.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „φConst“ ()

      massenpixelhaltung.trade-programming.de/igtkrfvzqw.png
      Hatte mich auch schon gewundert, weil keine DLLs beiliegen.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Hallo φConst,

      φConst schrieb:

      mittels des expliziten eulerschen Verfahrens[...]Es sind implementiert ein N-Körper-Problem(stark approximiert)

      Gehe ich richtig in der Annahme, dass du Informatik studiert hast, wenn du Kenntnisse von Runge-Kutta-Verfahren hast? Wie sieht diese "starke Approximation" aus? Wird die Gravitation zwischen jedem Massenpunkt berechnet? Auch bei der Sonne? Musstest du aus Performance-Gründen auf das Euler-Verfahren zurückgreifen, oder gab es andere Gründe, weshalb kein RK-Verfahren höherer Ordnung benutzt wurde? Nur schon das Heun-Verfahren zweiter Ordnung hätte eine grosse Verbesserung erbracht bei lediglich doppelt so vielen Funktionsauswertungen - Das klassische Runge-Kutta-Verfahren vierter Ordnung wäre eventuell etwas übertrieben.

      Grüsse,

      Higlav
      Also ich würde es auch sehr begrüßen, wenn Du eventuell die Datei auch mal hier anhängst oder zumindest in Dropbox o. ä. und nicht bei irgendeinem werbeverseuchten Hoster.
      Auf dem Surface bekomme ich nämlich das beim Herunterladen:



      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      "mittels des expliziten eulerschen Verfahrens[...]Wird die Gravitation zwischen jedem Massenpunkt berechnet? Auch bei der Sonne"
      Hallo,
      auf einen Körper K wirken die Kräfte der anderen 8 Planeten + 1 Zwergplanet + Sonne.
      Die Simulation gibt nur die Bewegung der Himmelskörper unseres Sonnensystems zurück.. (die Sonne ist hier ein Fixstern(hypothetisch)).

      Das eulersche Verfahren, dass ich verwendete sieht folgendergestalt aus(siehe Anhang).

      "Gehe ich richtig in der Annahme, dass du Informatik studiert hast, wenn du Kenntnisse von Runge-Kutta-Verfahren hast? "
      Bin Schüler , ich habe auch nie postuliert, dass das N-Körper-Problem akkurat ist; es ist lediglich eine Modifikation eines eulerschen Verfahrens zur Simulation der Bewegung von Körpern und ihrer Wechselwirkung.(Siehe Anhang)

      @Trade: Ja, ich werde es durch Google-Drive zur Verfügung stellen.

      EDIT: Siehe Eingangspost.
      Bilder
      • formula.png

        12,34 kB, 1.112×78, 337 mal angesehen
      Und Gott alleine weiß alles am allerbesten und besser.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „φConst“ ()

      Was hat es denn mit dem EasterEgg auf sich? :P

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

      φConst schrieb:

      Das eulersche Verfahren, dass ich verwendete sieht folgendergestalt aus(siehe Anhang).
      [...] Bin Schüler , ich habe auch nie postuliert, dass das N-Körper-Problem akkurat ist; es ist lediglich eine Modifikation eines eulerschen Verfahrens zur Simulation der Bewegung von Körpern und ihrer Wechselwirkung.(Siehe Anhang)

      In dem Falle ist mir auch in etwa klar, wieso du "nur" das Eulerverfahren angewendet hast. Das Eulerverfahren ist das ungenaueste Runge-Kutta-Verfahren das es gibt und wird nur zum Anschauungszweck verwendet(oder man hat ein gigantisches System bei dem einzelne Funktionsauswertungen ewig dauern und man keine gute Genauigkeit wünscht).
      Das in deinem Anhang ist überigens nicht das Eulerverfahren, sondern die Funktion selbst - bzw. auch davon nur die Hälfte. Tatsächlich steckt dahinter ein dreidimensionales System von je zwei Differentialgleichungen erster Ordnung:
      $$\vec f(t,\vec\varphi)=\begin{pmatrix} \varphi_x'&=v_x\\ v_x' &=\color{red}{a_x}\\ \varphi_y'&=v_y\\ v_y'&=\color{red}{a_y}\\ \varphi_z'&=v_z\\ v_z'&=\color{red}{a_z} \end{pmatrix}$$

      Der rote Vektor
      $\color{red}{\vec a}$
      ist derjenige, der du in deinem Anhang formuliert hast.
      Die richtige Vorschrift für das Eulerverfahren sieht übrigens tatsächlich so aus:
      $\vec\varphi_{k+1}=\vec\varphi_k+h\cdot\vec f(t_k,\vec\varphi_k)$


      φConst schrieb:

      Die Simulation gibt nur die Bewegung der Himmelskörper unseres Sonnensystems zurück.. (die Sonne ist hier ein Fixstern(hypothetisch)).

      Also ist das die "starke" Approximation(vom Verfahren abgesehen, welches wahrscheinlich einen grösseren Fehler verursacht) - ich verstehe.
      @Trade: hahaha.

      Ich wollte einen Ray relativ zum Beobachter zeichnen; quasi, wie ein Projektil vom Lauf zum Ziel .
      Das EasterEgg ist eine funktionelle M4A1 ^^ .
      Auf Nachfrage bin ich gewillt das EasterEgg zu implementieren, sodass ihr Planeten terminieren könnt ( ;
      Und Gott alleine weiß alles am allerbesten und besser.
      Da sich mir außer dem Bildungssinn jeglicher Sinn dieser Anwendung nicht erschließt - wieso Closed Source?

      Grüße
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!