Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss16:physiksimulation_doc_python

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_doc_python [2016/08/13 17:06]
markumnus Parser hinzugefügt
ss16:physiksimulation_doc_python [2016/08/14 22:37] (aktuell)
markumnus
Zeile 3: Zeile 3:
 </​a></​center></​html>​ </​a></​center></​html>​
  
-<- [[ss16:​Physiksimulation_doc_components|zurück zur Liste der Komponenten]] +**[[ss16:​Physiksimulation|Physiksimulation]]/​[[ss16:​Physiksimulation_Doc_Main|Dokumentation]]/​[[ss16:​Physiksimulation_doc_components|Komponenten]]/** 
- +=====Python-Teil=====
-=====Physiksimulation | Python-Teil=====+
  
  
Zeile 49: Zeile 48:
   
     return result     return result
 +</​code>​
 +
 +
 +====Reader.py====
 +In der Datei Reader.py wird die Klasse Reader definiert. Wir haben uns hier für eine Klasse entschieden (anstatt nur einer Funktion wie beim Parser), da wir die //​%%__getitem__()%%//​-Funktion nutzen wollten, um die Ergebnis-Datei wie eine Liste indizierbar zu machen. Mit reader[time_step] kann man bequem auf die Positionsdaten des jeweiligen Zeitschritts zugreifen.
 +<code Python>
 +#######################################​
 +# IMPORTE
 +#######################################​
 +import Parser
 +
 +class Reader:
 +
 +    time_steps = []
 +
 +    def __init__ (self, filename):
 +        # Deklarationen
 +        self.FILENAME = filename
 +
 +        # File lesen
 +        with open (self.FILENAME) as f:
 +            file_cont = f.read()
 +
 +        # Zeitschritte voneinander trennen |
 +        self.time_steps = file_cont.split('​|'​)
 +        ​
 +        # letztes, leeres Element entfernen
 +        self.time_steps.pop()
 +
 +
 +    def __getitem__ (self, key):
 +        """​
 +        Indiziert einen Zeitschritt und gibt die Koordinaten der Objects zu diesem Zeitschritt zurueck.
 +        """​
 +        return Parser.parse(self.time_steps[key])
 +    ​
 +    ​
 +    def __len__ (self):
 +        """​
 +        Gibt Anzahl der verfuegbaren Zeitschritte zurueck.
 +        """​
 +        return len (self.time_steps)
 +    ​
 +    def __str__ (self):
 +        s = "​Reader auf \""​ + self.FILENAME + "​\"​ mit " + str(len(self)) + " Zeitschritten."​
 +        return s
 +
 +    def __repr__(self):​
 +        return self.__str__()
 +
 </​code>​ </​code>​
  
Zeile 54: Zeile 103:
 ====Visualizer.py==== ====Visualizer.py====
 Diese Datei deklariert die Klasse //​Visualizer//​. Im Konstruktor nimmt sie eine Liste mit Objekten entgegen, die visualisiert werden sollen. Außerdem wird die //scene// für Visual initialisiert.\\ Diese Datei deklariert die Klasse //​Visualizer//​. Im Konstruktor nimmt sie eine Liste mit Objekten entgegen, die visualisiert werden sollen. Außerdem wird die //scene// für Visual initialisiert.\\
-Mit der Methode //run()// wird die Animation gestartet. Die benötigten Positionsdaten werden mithilfe ​eines [[abc|Readers]] ausgelesen.+Mit der Methode //run()// wird die Animation gestartet. Die benötigten Positionsdaten werden mithilfe ​des Readers ausgelesen.
 <code Python> <code Python>
 from visual import * from visual import *
Zeile 126: Zeile 175:
     self.w.show()     self.w.show()
 </​code>​ </​code>​
-... welches wiederum Buttons hat, die z.B. beim Klicken auf "​OK"​ ein Objekt erstellen und es zunächst per [[abc|Interface]] im [[abc|Universe]] speichern:+... welches wiederum Buttons hat, die z.B. beim Klicken auf "​OK"​ ein Objekt erstellen und es zunächst per [[ss16:​Physiksimulation_Doc_cpp#​Interface.cpp|Interface]] im [[ss16:​Physiksimulation_Doc_cpp#​Universe.cpp|Universe]] speichern:
 <code Python> <code Python>
 def output0(self):​ def output0(self):​
ss16/physiksimulation_doc_python.1471100776.txt.gz · Zuletzt geändert: 2016/08/13 17:06 von markumnus