Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss16:physiksimulation

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss16:physiksimulation [2016/07/22 21:32]
markumnus [Physiksimulation] Formatierung
ss16:physiksimulation [2016/09/22 21:59] (aktuell)
stefanborn
Zeile 1: Zeile 1:
-=====Physiksimulation=====+===== HINWEISE ZUR VERBESSERUNG ===== 
 + 
 +1. Die Dokumentation des Codes und der Programmkomponenten  
 +ist vorbildlich,​ zur Dokumentation des Projekts würde 
 +aber auch noch eine (kurze) physikalisch-mathematische  
 +Einführung gehören, die erklärt: 
 + 
 +  *  Wie das physikalische System beschrieben wird (Newton'​sche Gesetze) 
 +  *  Was ein Euler-Verfahren,​ bzw. rk4 ist (das ist teilweise im Vorsemester von Philipp schon erklärt worden, aber die damalige Dokumentation ist nur ein Fragment, man könnte einen Teil durch Cut-and-Paste übernehmen);​ dabei wäre es gut, zu erklären, was die Ordnung eines Lösungsverfahrens für gewöhnliche Differentialgleichungen ist. 
 + 
 +Sonst geht es für einen Leser, der nicht eh schon ungefähr weiß, wie so etwas geht, zu schnell. 
 + 
 +2. Für den Verlauf habt ihr auf die Protokolle verwiesen. Darüber hinaus würde ich einen kurze "​Erzählung"​ des Verlaufs gut finden. Auch hier habe ich wieder jemanden vor Augen, der eure Dokumentation liest, um sich ein Bild zu machen. In so einer Erzählung kann man eben auch erwähnen, an welchen Sachen ihr länger hängen geblieben sei o.ä.. 
 + 
 + 
 + 
 +**Physiksimulation** 
 +=====Hauptseite=====
  
 Herzlich willkommen auf der Seite der Gruppe **Physiksimulation**! Herzlich willkommen auf der Seite der Gruppe **Physiksimulation**!
Zeile 8: Zeile 25:
  
 ====Gruppenmitglieder==== ====Gruppenmitglieder====
- 
   * Dustin   * Dustin
   * Philipp   * Philipp
   * Mark   * Mark
- 
  
  
 ====Projektidee==== ====Projektidee====
- 
 Die grundlegende Idee dieses Projektes ist es, ein Programm zu schreiben, das einen physikalischen Sachverhalt realitätsnah simulieren kann. Dafür sollen Objekte auf dem Bildschirm erzeugt und ihre Parameter wie Größe, Masse und Bewegung verändert werden können. ​ Die grundlegende Idee dieses Projektes ist es, ein Programm zu schreiben, das einen physikalischen Sachverhalt realitätsnah simulieren kann. Dafür sollen Objekte auf dem Bildschirm erzeugt und ihre Parameter wie Größe, Masse und Bewegung verändert werden können. ​
  
 Das Besondere an unserem Projekt ist es, dass wir in zwei Programmiersprachen entwickeln: Wir nutzen Python für die Grafik und die Benutzerinteraktion,​ während wir die Berechnungen in C++ durchführen. Philipps Erfahrungen aus dem letzten Semester haben gezeigt, dass Python dafür zu langsam ist und C++ hier mit seiner höheren Geschwindigkeit besser geeignet ist. Das GUI schreiben wir in Python, da wir dieses als komfortabler zum Programmieren erachten. Das Besondere an unserem Projekt ist es, dass wir in zwei Programmiersprachen entwickeln: Wir nutzen Python für die Grafik und die Benutzerinteraktion,​ während wir die Berechnungen in C++ durchführen. Philipps Erfahrungen aus dem letzten Semester haben gezeigt, dass Python dafür zu langsam ist und C++ hier mit seiner höheren Geschwindigkeit besser geeignet ist. Das GUI schreiben wir in Python, da wir dieses als komfortabler zum Programmieren erachten.
  
-Die Simulation wird dafür voraussichtlich in 2D stattfinden. Dabei ist aber auch eine 3D-Umsetzung denkbar, wenn wir am Ende die Zeit dazu haben. 
 Als Sachverhalt wollen wir in erster Linie die Gravitation zwischen Objekten simulieren. Genaueres steht im nächsten Abschnitt: Als Sachverhalt wollen wir in erster Linie die Gravitation zwischen Objekten simulieren. Genaueres steht im nächsten Abschnitt:
  
Zeile 27: Zeile 40:
 ===Simulation von Gravitation=== ===Simulation von Gravitation===
 Hierbei nutzen wir Philipps Arbeit aus dem letzten Jahr, die [[ws1516:​himmelskoerper|Simulation von Himmelskörpern]],​ sodass wir nicht bei Null beginnen müssen. Hierbei nutzen wir Philipps Arbeit aus dem letzten Jahr, die [[ws1516:​himmelskoerper|Simulation von Himmelskörpern]],​ sodass wir nicht bei Null beginnen müssen.
-Hierbei wird der Benutzer ​2D-Objekte erzeugen, ihnen Massen und Größen, sowie Abstände zwischeneinander verleihen. Anschließend ​wird er beobachten ​können, wie sich die Objekte verhalten. Idealerweise kann man damit am Ende z.B. einen Teil des Sonnensystems simulieren. +Der Benutzer ​wird 3D-Objekte erzeugen, ihnen Massen und Größen, sowie Abstände zwischeneinander verleihen. Anschließend ​kann er beobachten, wie sich die Objekte verhalten. Idealerweise kann man damit am Ende z.B. einen Teil des Sonnensystems simulieren ​oder //​gravitational choreographies//​ laufen lassen.
  
-====Grober Umsetzungsplan==== 
-Zunächst ist es natürlich notwendig, sich erst einmal tiefgehend mit den physikalischen Grundlagen zu beschäftigen. Parallel dazu sollte im Labor eine Oberfläche entstehen, auf der die Objekte erzeugt, verschoben und modifiziert werden können.\\ 
-In den nächsten Schritten werden wir die einzelnen Elemente der Simulation einarbeiten:​ die Berechnung der Kräfte zwischen den Objekten mit zunächst nur einer Eigenschaft (wie die Masse), dann mit mehreren, und dann schließlich die Animation der Bewegungen. 
-Sollten wir am Ende des Labors noch Zeit dafür haben, ist natürlich eine 3D-Umsetzung mit Licht und Schatten denkbar, z.B. mithilfe von Blender. 
  
 +====Umsetzungsplan====
 +Zunächst ist es natürlich notwendig, sich mit den physikalischen Grundlagen zu beschäftigen. Parallel dazu sollte im Labor eine Oberfläche entstehen, auf der die Objekte erzeugt, verschoben und modifiziert werden können.\\
 +Im nächsten Schritt wird dann der Teil geschrieben,​ der für die Berechnungen zuständig ist. Dafür gibt es mehrere Möglichkeiten;​ wir verwenden das Verfahren von Runge-Kutta. Gleichzeitig wird an der Ausgabe der Daten gearbeitet. Unsere Wahl fiel auf VPython.\\
 +Als letztes schreiben wir das Interface zwischen Python und C++ in Cython, um die Vorteile beider Sprachen optimal zu nutzen.
  
-====Logbuch-Einträge==== 
  
-  * [[ss16:​Physiksimulation_Log1|Logbucheintrag 1 (26. Mai)]] ​ -- Planung +====Weiterführende Links==== 
-  * [[ss16:Physiksimulation_Log2|Logbucheintrag 2 (02. Juni)]] -- GUI und C++-Basis +  * [[ss16:Physiksimulation_Doc_Main|Dokumentation des Projekts]] 
-  * [[ss16:Physiksimulation_Log3|Logbucheintrag 3 (09Juni)]] -- Anpassen der Einheiten +  * [[https://github.com/​merkrafter/​gravitation|Git-Repository]] 
-  * [[ss16:​Physiksimulation_Log4|Logbucheintrag 4 (16. Juni)]] ​-- erste grafische Ausgabe +  * [[https://gminton.org/​choreointro.html|gravitational choreographies]]
-  * [[ss16:​Physiksimulation_Log5|Logbucheintrag 5 (23. Juni)]] -- Beginn Cython und Visual +
-  * [[ss16:Physiksimulation_Log6|Logbucheintrag 6 (30Juni)]] -- Runge-Kutta und Cython-setup;​ Animation fertiggestellt +
-  * [[ss16:​Physiksimulation_Log7|Logbucheintrag 7 (07Juli)]] -- Cython-Debugging +
-  * [[ss16:​Physiksimulation_Log8|Logbucheintrag 8 (14. Juli)]] -- Cython fertiggestellt,​ Benutzung des Interfaces vereinfacht +
-  * [[ss16:​Physiksimulation_Log9|Logbucheintrag 9 (21. Juli)]] -- Hinarbeiten auf einfache Verwendung des Codes+
ss16/physiksimulation.1469215948.txt.gz · Zuletzt geändert: 2016/07/22 21:32 von markumnus