Skip to content

Commit

Permalink
Update documentation.md
Browse files Browse the repository at this point in the history
  • Loading branch information
IMFTC authored Jul 10, 2019
1 parent 5c6a01c commit 822bbd7
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion documentation/documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ Die Simulation basiert auf den beiden Klassen *phy::phySphere*, sowie *phy::phyP
- Es gibt keinerlei Reibung (somit auch kein Luftwiderstand)
- Die Spheren wechselwirken *nicht* untereinander

Ausgangspunkt für eine Plane ist eine 2D-Höhenkarte, die dem Konstruktor übergeben wird, der auf Basis dieser Daten einen vbo mit Vertices und Normalen berechnet. Aufgrund der systematischen Unterteilung der Ebene und Rechtecke, die wiederum jeweils in zwei Dreiecke unterteilt sind, kann die Bestimmung eines Dreiecks zu einer gegebenen Koordinate in O(1) erfolgen. Siehe dazu die beschreibenden Kommentare im Konstruktor des phyPlane Structs. Ist das Dreieck bekannt kann leicht berechnet werden ob die Koordinate unter oder über der Ebene liegt. Weitere Kommentare zu Berechnung der Kollision, die als elastischer Stoß behandelt wird, befinden sich im Quellcode der Funktion *phyPlane::reflect(phySphere *sphere))*.
Ausgangspunkt für eine Plane ist eine 2D-Höhenkarte, die dem Konstruktor übergeben wird, der auf Basis dieser Daten einen vbo mit Vertices und Normalen berechnet. Aufgrund der systematischen Unterteilung der Ebene und Rechtecke, die wiederum jeweils in zwei Dreiecke unterteilt sind, kann die Bestimmung eines Dreiecks zu einer gegebenen Koordinate in O(1) erfolgen. Siehe dazu die beschreibenden Kommentare im Konstruktor des phyPlane Structs. Ist das Dreieck bekannt kann leicht berechnet werden ob die Koordinate unter oder über der Ebene liegt. Weitere Kommentare zu Berechnung der Kollision, die als elastischer Stoß behandelt wird, befinden sich im Quellcode der Funktion *phyPlane::reflect(phySphere \*sphere))*.

Jede Sphere ist einer Plane zugeordnet (in unserem Programm kommt nur eine Plane zum Einsatz), mit der sie physikalisch interagiert. Für jeden Frame werden *phyPlane::step(float deltaT)* und *phySphere::step(float deltaT)* für die Ebene und jede Sphere aufgerufen um den neuen Zustand zu berechnen. Die Berechnung des Resultates der Kollision basiert auf dem elastischen Stoß, wobei die Geschwindigkeit der Sphere, als auch die Geschwindigkeit der Plane (in Richtung ihrer Normalen) bei der Berechnung berücksichtigt werden müssen. Die Simulation des Energieverlustes wird durch eine einfache Reduzierung der Geschwindigkeit nach dem Stoß um einen festen Faktor erzielt.

Expand Down

0 comments on commit 822bbd7

Please sign in to comment.