Der Preprozessor berechnet Daten, welche während dem Programmablauf
immer wieder gebraucht werden, jedoch nur einmal berechnet werden
müssen.
Normalenvektor und Schwerpunkt werden im Weltsystem berechnet, da sie
schneller transformiert werden als jedesmal im Beobachtersystem neu berechnet.
Die Funktion normal_vectors_of_polygons berechnet im
Weltsystem aus den Polygoneckpunkten den normierten
Normalenvektor. Ein Polygon besitzt eine obere Seite (Aussenseite der
geschlossenen Figur) und eine untere Seite (Innenseite der
geschlossenen Figur). Bei einem von oben betrachteten Polygon sind die
Eckpunkte jeweils im Gegenuhrzeigersinn angeordnet; der Normalenvektor ist
nach oben definiert gerichtet. Abbildung
5.6 auf Seite
zeigt den Pseudocode der Funktion.
27
Abbildung 5.6: Pseudocode der Funktion normal_vectors_of_polygons
Die Funktion focal_points_of_polygons berechnet im Weltsystem
aus den Polygoneckpunkten den Schwerpunkt. Abbildung
5.7 auf Seite
zeigt den Pseudocode der Funktion.
27
Abbildung 5.7: Pseudocode der Funktion focal_points_of_polygons
Die Funktion max_radius berechnet für jedes Polygon eine Kugel mit Schwerpunkt als Mittelpunkt und dem Radius wobei sich alle Polygoneckpunkte innerhalb der Kugel befinden. Der Radius entspricht somit der maximalen Distanz alle Eckpunkte zum Schwerpunkt. Dieser Radius wird von der Funktion clip als schnelles Kriterium benützt, um Polygone zu klippen, welche ausserhalb des Bildschirmbereiches liegen. Der Vorteil dieser Kugel ist, dass nur auf einen Punkt (Polygonschwerpunkt = Mittelpunkt der Kugel) getestet werden muss. Abbildung 5.8 zeigt den Pseudocode der Funktion.
27
Abbildung 5.8: Pseudocode der Funktion max_radius