Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss16:physiksimulation_doc_cpp [2016/08/14 17:38] markumnus auswertung.cpp hinzugefügt |
ss16:physiksimulation_doc_cpp [2016/08/14 22:11] (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]]/** |
- | + | =====C++-Teil===== | |
- | =====Physiksimulation | C++-Teil===== | + | |
**INFO**: Soweit nicht anders angegeben, sind die Code-Bestandteile auf dieser Seite aus den jeweiligen Header-Dateien. | **INFO**: Soweit nicht anders angegeben, sind die Code-Bestandteile auf dieser Seite aus den jeweiligen Header-Dateien. | ||
Zeile 252: | Zeile 251: | ||
====auswertung.cpp==== | ====auswertung.cpp==== | ||
Die Auswertung-Klasse dient dem Sammeln von Daten über das Universum. Hier werden zum Beispiel auch die Positionsdaten der //Object//s in die Ergebnis-Textdatei geschrieben. Dazu dienen die folgenden Funktionen: | Die Auswertung-Klasse dient dem Sammeln von Daten über das Universum. Hier werden zum Beispiel auch die Positionsdaten der //Object//s in die Ergebnis-Textdatei geschrieben. Dazu dienen die folgenden Funktionen: | ||
- | <code Python> | + | <code cpp> |
#include "simulation.hpp" | #include "simulation.hpp" | ||
Zeile 274: | Zeile 273: | ||
</code> | </code> | ||
Die Funktionalität ist einfach: In jedem Zeitschritt werden die Positionsdaten in den Buffer (hier ein std::vector<std::string>) geschrieben, um das Textdokument nicht permanent öffnen und wieder schließen zu müssen. Sobald eine bestimmte Anzahl an Elementen im Buffer sind (bei uns 50), wird der Inhalt in die Textdatei geschrieben und der Buffer geleert. | Die Funktionalität ist einfach: In jedem Zeitschritt werden die Positionsdaten in den Buffer (hier ein std::vector<std::string>) geschrieben, um das Textdokument nicht permanent öffnen und wieder schließen zu müssen. Sobald eine bestimmte Anzahl an Elementen im Buffer sind (bei uns 50), wird der Inhalt in die Textdatei geschrieben und der Buffer geleert. | ||
+ | |||
+ | |||
+ | ====interface.cpp==== | ||
+ | Diese Klasse ist dazu da, eine Schnittstelle zum C++-Teil zur Verfügung zu stellen. Mithilfe der Methoden des Interfaces kann man alle relevanten Funktionen des C++-Teils steuern: | ||
+ | <code cpp> | ||
+ | #include "auswertung.hpp" | ||
+ | |||
+ | class Interface | ||
+ | { | ||
+ | private: | ||
+ | // DEKLARATION DER ATTRIBUTE | ||
+ | Universe* u; | ||
+ | Simulation* s; | ||
+ | Auswertung* a; | ||
+ | | ||
+ | public: | ||
+ | // KONSTRUKTOR | ||
+ | Interface(); | ||
+ | Interface (double G); | ||
+ | | ||
+ | // METHODEN | ||
+ | void add(std::string, double, double, double, double, double, double, double); | ||
+ | void modify (std::string, double, double, double, double, double, double, double); | ||
+ | void run (unsigned int); | ||
+ | std::string step (); | ||
+ | void setG (double); | ||
+ | void setDT (double); | ||
+ | }; | ||
+ | </code> | ||
+ | Wie man sieht, sind vor allem die add()- und modify()-Methode sehr unübersichtlich. Deshalb werden wir später, im [[ss16:Physiksimulation_Doc_cython|Cython-Teil]], eine besser benutzbare Version davon erstellen. Hier an dieser Stelle vereinfacht es die Benutzung sogar, eine Methode zu haben, die beispielsweise ein Objekt nur im Ganzen hinzufügt.\\ | ||
+ | //setG()// und //setDT()// stellen die Parameter für die Berechnung ein: G ist die Gravitationskonstante und DT die Genauigkeit bei der Berechnung.\\ | ||
+ | //step()// führt einen Berechnungsschritt aus, //run()// so viele, wie angegeben. |