CrossSections Hilfe
CrossSections ist ein interaktives Programm zur Visualisierung von Körpern (Polyedern) und deren Schnitt durch eine Ebene.
Im linken Teilfenster sehen Sie den Körper mit der Schnittebene. Im rechten Teilfenster ist noch einmal der Schnitt der Ebene mit dem Körper explizit aufgezeigt. Das kleine rote Dreieck im Eck ermöglicht jederzeit eine eindeutige Zuordnung beider Sichten.
Sowohl Körper als auch Schnittebene können mit der Maus manipuliert werden. Wählen Sie dazu im Kasten Manipulation aus, was Sie bewegen möchten: Körper (Body), Schnittebene (Cut Plane) oder beides zusammen (World). Mit der linken Maustaste können Sie jeweils rotieren, mit der rechten die Entfernung verändern bzw. die Ebene entlang ihrer Normalen verschieben. Mit dem Knopf Reset können Sie zur Ausgangsstellung zurückkehren. Mit den Pfeil-Knöpfen kann man um die in der Mitte eingestellte Gradzahl rotieren und somit reproduzierbare Ergebnisse erhalten. Alle Änderungen werden in Echtzeit auf den Schnitt übertragen und angezeigt.
Im Kasten Body lässt sich der angezeigte Körper auswählen. Sie können zwischen sechs eingebauten Körpern wählen oder eine externe Datei laden. Das Dateiformat basiert auf XML und ist weiter unten dokumentiert.
Das Programm unterstützt weiterhin das Auffalten der Körper zu einem Netz. Alle zugehörigen Schaltelemente finden Sie im Kasten Unfolding. Mit dem Schieberegler können Sie den Grad der Auffaltung bestimmen: von geschlossen (ganz links) bis komplett geöffnet (ganz rechts). Mit den Knöpfen nach links und rechts lässt sich die Animation in beide Richtungen starten und auch mit einem zweiten Klick wieder stoppen. Weiterhin können Sie wählen, wie CrossSections das Netz erzeugen soll: mittels einer Breitensuche (breadth-first) oder einer Tiefensuche (depth-first). Es ist nicht ausgeschlossen, dass es zu Überlappungen kommt, insbesondere bei nicht-konvexen Facetten.
Im Kasten Graphics schließlich lässt sich der Detailgrad festlegen: Wünschen Sie eine isometrische (Isometric) oder perspektivische (Perspective) Darstellung? Sollen Facetten (Faces), Kanten (Edges), die Schnittebene (Cut Plane) und/oder deren Schnitte (Cuts) angezeigt werden? Mit Cut Unfolded legen Sie fest, ob das (teilweise) aufgefaltete Netz des Körpers geschnitten werden soll, oder ob sich die ursprünglichen Schnitte nur mit dem Auffalten mitbewegen sollen. Ein sichtbarer Unterschied ergibt sich somit nur bei Auffaltung.
Bei Fragen oder Problemen können Sie sich gerne per E-Mail an mich wenden. Ich freue mich über jeden Kommentar zu dem Programm und zu meiner Website :-)
Dateiformat
Das von CrossSections verwendete Dateiformat basiert auf XML und hat die Endung ".poly". Sie können sich anhand der Beispieldateien im Unterordner Samples sowie dem mitgelieferten XML-Schema Polyhedron.xsd einen ersten Eindruck machen.
Die Datei beginnt mit dem XML-Header
<?xml version="1.0" encoding="utf-8"?>
und enthält genau ein polyhedron
-Objekt mit Namen und Verweis auf das Schema:
<polyhedron name="Example" xmlns="http://www.jsingler.de/Polyhedron">
</polyhedron>
Diese enthält wiederum eine beliebige Anzahl Ecken mit drei-dimensionalen Koordinaten und einer eindeutigen ID:
<vertex id="5" x="-0.6" y="1.0" z="0.0"/>
Danach folgen die Facetten des Körpers. Jede Facette hat als Eigenschaft eine Farbe (Möglichkeiten), und enthält die Ecken gegen den Uhrzeigersinn (von außen gesehen). Dabei müssen die vergebenen IDs referenziert werden. Jede Kante darf in jede Richtung jeweils nur höchstens einmal verwendet werden, bei geschlossenen Körpern jeweils genau einmal. Um sinnvolles Auffalten zu erhalten, sollten die Facetten alle zusammenhängen. Das Auffalten beginnt immer bei der ersten Facette. Alle Facetten müssen absolut flach sein, sonst können unvorhergesehene Effekte auftreten. Dies wird vom Programm nicht überprüft.
<face color="Red">
<v>2</v>
<v>1</v>
<v>4</v>
</face>
Eine komplette Datei mit nur zwei Facetten könnte also so aussehen:
<?xml version="1.0" encoding="utf-8"?>
<polyhedron name="MostSimple" xmlns="http://www.jsingler.de/Polyhedron">
<vertex id="0" x="-0.6" y=" 1.0" z=" 0.0"/>
<vertex id="1" x=" 1.0" y=" 1.0" z=" 0.0"/>
<vertex id="2" x=" 1.0" y=" 1.0" z=" 1.0"/>
<vertex id="3" x="-0.6" y=" 1.0" z=" 1.0"/>
<vertex id="4" x=" 1.5" y="-1.0" z=" 0.5"/>
<face color="Green">
<v>0</v>
<v>1</v>
<v>2</v>
<v>3</v>
</face>
<face color="Red">
<v>2</v>
<v>1</v>
<v>4</v>
</face>
</polyhedron></code>
Der Körper sollte einigermaßen symmetrisch um den Ursprung liegen und einen Durchmesser von ungefähr 2.0 haben, um eine gute Darstellung zu erhalten.
Falls Sie einen neuen Körper erstellen, würde es mich freuen, wenn Sie mir die Datei zur zukünftigen Aufnahme in das Programm-Paket schicken würden. Ich bin besonders an den archimedischen Körpern interessiert (nachdem die platonischen schon alle drin sind).