Abschnitte
Copyright by Franz Baumann & Roman Kurmanowytsch, 1998, Vienna, Austria. No animals were harmed in the creation of this page.
|
Datenstrukturen
|
|
|
|
Das Programm "Labyrinthos tu Minotauru" beinhaltet - leider - eine große Menge von Datenstrukturen. Alle in dieser README vorzustellen, würde lediglich der Übersichtlichkeit schaden. Aus diesem Grund werden nur die wichtigsten Datenstrukturen vorgestellt.
Die Labyrinthe und die Objekte, die sich in diesen Labyrinthen bewegen sind allesamt BSP-Objekte. Damit ist gemeint, daß sie in AutoCAD erstellt und im 3D Studio texturiert wurden. Dann wurden sie via VRML Format in das Programm ViewBSP eingespeist und zu einem BSP-Baum umportiert. Obwohl theoretisch auch Flat-shaded Objekte möglich wären, haben wir uns dazu entschlossen, ausschließlich texturierte Objekte zu verwenden. Die BSP-Files von ViewBSP wurden um #pointnormals erweitert, die die Normalen der Punkte darstellen (gemittelt über die angrenzenden Flächen). Diese werden für Gouraud-Shading benötigt.
Jedes Objektfile wird nur einmal in den Speicher geladen, um Speicherplatz zu sparen. Jedes Objekt wird in der Klasse LTM_Object gespeichert. Verwaltet werden alle Objekte in der Klasse LTM_ObjectList. Jedes Objekt bekommt einen Namen, damit bei mehrerer Verwendung des selben Objektes auf das gleiche instantiierte LTM_Object zurückgegriffen werden kann. Gespeichert werden die spezifischen Daten wie Position, Ausrichtung, etc. in der Klasse LTM_ObjectHandler.
Um die einzelnen Daten eines BSP-Objektes zu speichern, werden diverse Hilfsklassen verwendet. Dazu zählen: LTM_Triple (Verwaltung eines 3D-Punktes), LTM_Polygon (allgemeine Polygone), LTM_Face (Face-Property, Normalvektoren,...) und die Klasse LTM_BSPNode (eigentliche Speicherung des BSP-Baums). Der BSP-Baum wird tatsächlich als lineare Liste gespeichert, in der die einzelnen Elemente auf andere Indizes Verweisen.
|
|