Visualisierung von Scheibenaufbauten in Verglasungseinheiten mit Hilfe der neuen Microsoft .net-Framework 3.0 Technologie
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Visualisierung von Scheibenaufbauten in Verglasungseinheiten mit Hilfe der neuen Microsoft .net-Framework 3.0 Technologie Diplomarbeit zur Erlangung des akademischen Grades Diplom – Mathematiker (FH) vorgelegt von Mathias Schubert Friedberg 2007 Eingereicht am: 30.05.2007 Betreuer: Prof. Dr. Ulrich Abel (FH Gießen – Friedberg) Prof. Dr. Michael Guckert (FH Gießen – Friedberg)
I Inhaltsverzeichnis I I Inhaltsverzeichnis I Inhaltsverzeichnis I II Bildverzeichnis V 1.0 Vorwort 1 1.1 Erklärung 1 1.2 Danksagung 2 2.0 Einleitung 3 2.1 Ziel der Arbeit 3 2.2 Problemstellung 3 2.3 Umsetzung der Arbeit 3 2.4 Verzeichnis der Kurzzeichen und Symbole 4 2.5 Begriffserklärung 5 3.0 Delaunay-Triangulation 8 3.1 Einführung 8 3.1.2 Klassische Problemstellungen 8 3.1.3 Gründe für die Verwendung der Delaunay-Triangulation 9 3.1.4 Verwendung der Delaunay-Triangulierung 12 3.1.5 Bedingungen für eine Delaunay-Triangulation 12 3.2 Der inkrementelle Algorithmus 12 3.2.1 Voraussetzungen 12 3.2.1.1 Kriterien beim Triangulieren 12 3.2.1.2 Fälle bei der Triangulierung von 4 Punkten 16 3.2.1.2.1 Erster Fall 16 3.2.1.2.2 Zweiter Fall 17 3.2.1.2.3 Dritter Fall 17 3.2.1.3 Das Umkreiskriterium 18 3.2.1.4 Optimale Triangulierung 19
I Inhaltsverzeichnis II 3.2.2 Der inkrementelle Algorithmus 21 3.2.2.1 Ergebnis des Algorithmus 25 3.3 Mathematische Grundlagen 26 3.3.1 Konvexe und nichtkonvexe Hüllen 26 3.3.1.1 Definition 26 3.3.2 Flächeninhalt von Dreiecken 27 3.3.2.1 Berechnung 27 3.3.3 Kreis mit 3 Punkten erzeugen 29 3.3.3.1 Berechnung 29 3.3.3.2 Punkt im Kreis 31 3.3.4 Berechnung eines Kreisbogens 31 3.3.4.1 Analytische Lösung 31 3.4 Sonderfälle 32 3.4.1 Nichtkonvexe Hülle 32 3.4.1.1 Einleitung und Idee 32 3.4.2 Darstellung von Löchern 34 3.4.2.1 Einleitung und Idee 34 4.0 Exkurs Voronoi-Diagramm 36 4.1 Das Postamtproblem 36 4.2 Begriffe 37 4.3 Fälle bei der Voronoi-Konstruktion 39 4.3.1 Punkt im Umkreis 39 4.3.2 Weiterer Punkt im Dreieck selbst 40 5.0 Fenster- und Glaseigenschaften 41 5.1 Fensteraufbau 41 5.2 Eigenschaften von Glas 41 5.2.1 Materialarten des WPF 42 5.2.1.1 Lambert Material 42 5.2.1.2 Emissives Material 43 5.2.1.3 Specular Material 44 5.2.2 Verwendung der Materialien 45 6.0 Verwendete Programmiersprachen und Ressourcen 46
I Inhaltsverzeichnis III 6.1 C# (CSharp) 46 6.1.1 Unterschiede C++ und C# 46 6.1.1.1 Laufzeitumgebung 46 6.1.1.2 C#-Objekte 47 6.1.1.3 C#-Anweisungen 48 6.1.2 Funktionen, die in C# nicht zu Verfügung stehen 49 6.2 .net 3.0 49 6.2.1 Einführung in das .net 3.0 49 6.2.1.2 Einige wichtige Objekte und Methoden 50 6.2.1.2.1 Collection 50 6.2.1.3 WPF 51 6.2.1.3.1 Voraussetzung damit WPF einen 3-D Körper darstellt 52 6.2.1.3.2 Normalen 53 6.2.1.3.3 Texture mapping 54 6.2.1.4 x-Datei 56 6.3 XML 57 6.3.1 Einleitung 57 6.3.2 Aufbau einer XML Datei 58 6.3.3 Verschachtelung 58 6.3.4 Attribute 58 6.3.5 Elemente ohne echtes End-Tag 59 6.3.6 Nur ein Wurzel/Stamm Element ist erlaubt 60 6.3.7 XML Deklaration 60 6.3.8 Das Auslesen einer XML Datei 62 6.3.9 CamXML 62 7.0 Umsetzung in eine DLL 63 7.1 Dynamic-Link Library (DLL) 63 7.1.1 Die Schnittstelle (Interface) der DLL 63 7.1.2 Erstellen einer DLL mit MS Visual Studio 2005 64 7.2 Auslesen der Punkte mit der Funktion SortPoints 64 7.2.1 Voraussetzungen 64 7.3 Randgeometrien 65 7.3.1 Die verschiedenen Ausschnitte 65 7.3.1.1 Böhrlöcher 65
I Inhaltsverzeichnis IV 7.3.1.2 Senkbohrlöcher 66 7.3.1.3 Innenausschnitte 66 7.4 SpacerTriangulation 67 7.5 SideTriangulation 69 7.6 InCircle 71 7.7 TestToNotConvex 71 7.8 CreateRectangleMesh 72 7.8.1 Voraussetzungen 72 7.8.2 Der Algorithmus 73 7.8.3 Finde nichtkonvexe Seitenteile 74 7.8.4 Bohrlöcher und Senkbohrlöcher 75 7.8.5 Innenausschnitte 75 7.8.6 Schluss 76 7.9 CreateGlassMesh 77 7.10 Wireframe 78 7.11 Strukturglas 80 8.0 Fazit 82 8.1 Komplexität des Algorithmus 82 8.2 Probleme während der Umsetzung 82 8.3 Abschließende Betrachtungen 83 9.0 Anhang 84 9.1 Literaturverzeichnis 84 9.2 Bilder 86
II Bildverzeichnis V II Bildverzeichnis Bild 1: Höhenprofil eines Bergkamms, der trianguliert wurde. Bild 2: Modell der Triangulierung des Bergkamms von oben. Bild 3: Oben Kriterium der kürzeren Diagonalen, in der Mitte Max-Min- Winkelkriterium und unten Max-Min-Radiuskriterium [6]. Bild 4: Triangulation nach Min-Max-Kriterium. Lokal optimal, da a(T2) < a(T1). Jedoch ist es nicht global optimal. Deshalb ist eine bessere Triangulation möglich [8]. Bild 5: Allgemeiner Fall der Triangulierung von vier Punkten. Alle vier Punkte bilden die konvexe Hülle. Bild 6: Ein Punkt liegt nicht auf dem Rand. Bild 7: Drei Punkte liegen auf einer Linie. Bild 8: Umkreiskriterium. Links im Bild wird das Umkreiskriterium verletzt. Durch Diagonalentausch (edge flip) wird rechts eine gültige Triangulierung erreicht. Es genügt eines der beiden Dreiecke zu überprüfen. Das Umkreiskriterium verhält sich in beiden Fällen äquivalent. Bild 9: Zwei lokal optimale Triangulierungen. Beide sind bzgl. Min-Max- Winkelkriterium optimal. Bild 10: Startdreieck Bild 11: Ein Punkt wird in die Triangulation eingefügt [5]. Bild 12: Die Umkreise werden bestimmt [5]. Bild 13: Neue Dreiecke entstehen [5]. Bild 14: Links ist eine konvexe Hülle und rechts eine nichtkonvexe Hülle Bild 15: Konvexe Hülle Bild 16: Dreieck Bild 17: Kreis mit drei Punkten aufziehen, die auf dem Kreis liegen. http://local.wasp.uwa.edu.au/~pbourke/geometry/circlefrom3 Bild 18: Links nichtkonvexe und rechts konvexe Stellen Bild 19: Nichtkonvexe Hülle. Schwarz ist der eigentliche Rand und grün die Dreiecke, die entfernt werden müssen. Bild 20: Viereck mit Löchern Bild 21: Gebietsaufteilung Bild 22: Begriffe des Voronoi-Diagramm Bild 23: Voronoi-Knoten und -Kanten Bild 24: Veranschaulichung der Dualität
II Bildverzeichnis VI Bild 25: Punkt im Kreis Bild 26: Punkt im Dreieck Bild 27: Lambert Material von der Website http://www.cosc.brocku.ca/Offerings/3P98/2000/firstdate/boat.gif Bild 28: Emissives Material von der Website http://www.swirlx3d.com/tutorials/t010/matemis.png Bild 29: Specular Material von der Website http://www.evl.uic.edu/aej/488/diagrams/spherespec.gif Bild 30: Links: Oberfläche mit normierter Normalen; Rechts: Oberfläche mit Normalen und Winkel alpha Bild 31: Verhältnisse von alpha und der Helligkeit Bild 32: Texturen Bild 33: Eine x-Datei Bild 34: XML-Datei Bild 35: Gummirand einer Vorderseite bei einem Viereck (Die Zahlen stellen die Indexnummern der Punkte dar) Bild 36: Seitenteil des Gummirandes (Die Zahlen stellen die Indexnummern der Punkte dar) Bild 37: Ausschnitt nichtkonvexe Ecke Bild 38: Wireframe Bild 39: Strukturglas Bild 40: Strukturglas mit Loch Bild 41: Bohrloch Bild 42: Senkbohrloch Bild 43: Fenster mit Kreisbögen Bild 44: Bogen Bild 45: Nichtkonvexe Ecken (ein Testbild; keine Fensterform) Bild 46: Testbild
1.0 Vorwort Seite 1 1.0 Erklärung Ich erkläre hiermit, dass ich die vorliegende Arbeit selbständig und ohne Benutzung anderer als der angegebenen Hilfsmittel angefertigt habe. Die aus fremden Werken wörtlich oder sinngemäß übernommenen Gedanken sind unter Angabe der Quellen gekennzeichnet. Ich versichere, dass ich bisher keine Prüfungsarbeit mit gleichem oder ähnlichem Thema bei einer Prüfungsbehörde oder anderen Hochschule vorgelegt habe. ………………………………… ……………………………………… Ort, Datum Unterschrift
1.0 Vorwort Seite 2 1.1 Danksagung Herrn Jürgen Makowka danke ich für das Hilfe und die Möglichkeit zu die- ser Arbeit. Herrn Michael Hartmann danke ich für die Teilnahme an dem Projekt. Mein besonderer Dank gilt Herrn Prof. Dr. Ulrich Abel, der mir als Betreuer immer mit Rat und Tat zur Seite stand, und auch Herrn Prof. Dr. Michael Guckert, der mich als Zweitprüfer unterstützt hat. Zuletzt möchte ich noch meiner Familie für ihre Unterstützung danken.
2.0 Einleitung Seite 3 2.0 Einleitung 2.1 Ziel der Arbeit Im Unternehmen Albat und Wirsam (A+W) werden Fenster(-scheiben) im 2-Dimensionalen dargestellt. Da die Komplexität dieser Fensterscheiben immer mehr zu nimmt, wird eine 3-dimensionale (3D) Visualisierung be- nötigt. Zum Beispiel können einzelne Scheiben, aus denen ein Vielschei- benglas (VSG) besteht, unterschiedlich groß (z. B. durch eine Stufe) sein. Um zu wissen, an welcher Stelle diese einzelnen Scheiben sind, ist eine 3- dimensionale Ansicht hilfreich. Mit dieser Arbeit wird ein Teil dazu beige- tragen, dass dies realisiert werden kann. 2.2 Problemstellung Gesucht wurde ein Algorithmus, der Oberflächen von Körpern in Dreiecke zerlegt. Diese Körper sind in unserem Fall Fensterscheiben, der Abstand- halter (das Metallstück zwischen zwei Fensterscheiben) des Fensters und der schwarze Gummi, der zwischen Glasrand und Abstandhalter liegt (Bild siehe Kapitel 9.2). Der Algorithmus sollte zudem erweitert werden, damit ein vorgegebener Glasrand und Löcher in der Scheibe möglich sind. Auch wichtig ist, dass wir uns in der Ebene befinden, also im R². Durch eine sorgfältige Internet- und Bücherrecherche wurde in kurzer Zeit der Begriff Delaunay-Triangulation gefunden, der die obigen Vorgaben er- füllte und eine Umsetzung ermöglichte. 2.3 Umsetzung der Arbeit Zur Umsetzung der Arbeit gehörten die Programmierung eines Delaunay- Algorithmus für das Projekt AWVision und das Nutzen von Ressourcen, die andere Programme des Unternehmens A+W bieten. Zur Umsetzung der Arbeit siehe Kapitel 5 bis 9. In Kapitel 3 werden die mathematischen Vor- aussetzungen für die nachfolgenden Kapitel geschaffen. Das vierte Kapitel beschäftigt sich mit einem Exkurs über Voronoi-Diagramme.
2.0 Einleitung Seite 4 2.4 Verzeichnis der Kurzzeichen und Symbole K Kriterium Bezeichnung für Winkelkriterium P Punktmenge T Triangulation axb Vektorprodukt a(T) sei ein Winkelmaß für ein Dreiecks aus T (z.B. kleins- ter/größter Innenwinkel). p Punkt aus einer Punktmenge
2.0 Einleitung Seite 5 2.5 Begriffserklärung - Konvexe Menge Eine allgem. Teilmenge von M aus R² wird konvex genannt, wenn mit je zwei ihrer (beliebig gewählten) Punkte auch deren Verbindungsstrecke in der Menge liegt, d.h. wenn für alle gilt, dass ist. Eine Menge, die nicht konvex ist, wird nichtkonvexe Menge genannt. Oft wird dafür auch die Bezeichnung konkave Menge verwendet. Dies ist je- doch irreführend, weil konkav nicht die Negation von konvex ist. - Konvexe Hülle Der Durchschnitt (Schnittmenge) beliebig vieler konvexer Mengen ist kon- vex. Die konvexe Hülle einer Menge ist die kleinste konvexe Obermenge. Sie ist der Durchschnitt aller konvexen Mengen, in denen sie enthalten ist. - Nichtkonvexe Menge Diese Menge ist nichtkonvex. Polygone, die nichtkonvex sind, haben ein- springende Ecken bspw. ein T (Gemeint ist die Form, nicht der Buchstabe) oder ein Loch (bspw. ein Torus). Warum nennt man diese Menge nicht konkav? Mit konkav und konvex bezeichnet man zwei zueinander gegensätzliche Eigenschaften (betreffend die Krümmung von Flächen und Kurven), wobei konkav aber nicht das Gegenteil von konvex bedeutet. Eine Fläche (oder Kurve) ist lokal (d.h. in der Nähe eines Punktes) • konvex gekrümmt, wenn sie nach "außen" gewölbt ist, und sie ist • konkav gekrümmt, wenn sie nach "innen" gewölbt ist. Ein Körper (oder eine Figur) wird immer von außen betrachtet. Er wird konvex genannt,
2.0 Einleitung Seite 6 • wenn seine Oberfläche (der Rand) überall konvex gekrümmt ist. In analoger Weise würde man einen Körper konkav nennen, • wenn seine Oberfläche (der Rand) überall konkav gekrümmt ist. Einen solchen Körper gibt es jedoch nicht. Natürlich kann man definieren, dass eine Menge konkav ist genau dann, wenn sie nicht konvex ist. Eine solche Definition wäre jedoch nicht tref- fend, sondern irreführend und würde auch der Bedeutung (nach innen gewölbt) nicht entsprechen. Eine Funktion, die nicht konvex ist, ist des- halb noch nicht konkav (Beispiel eine Linie parallel zu x-Achse y = c). - Triangulation für R² Die Punkte der Dreiecke werden als Indexe angegeben, d. h. der erste Punkt aus der Punktmenge P erhält den Indices eins usw. Eine Menge aus Tripeln T:= {(ai, bi, ci) | ai, bi, ci ε {1, ..., M}, 1 ≤ i ≥ P} heißt Triangulation von P, wenn folgendes gilt: - Für jedes i ε {1, ..., M} Dreieck bilden die Punkte Pai, Pbi, Pci die Eck- punkte eines Dreiecks. - Jedes Dreieck aus T enthält keine weiteren Punkte aus P außer genau den drei Eckpunkten. - Die Menge der inneren Punkte eines Dreiecks ist disjunkt zu der Menge der inneren Punkte jedes anderen Dreiecks. - Die Vereinigung aller Dreiecke aus T ist gleich der konvexen Hülle [P] von P. - Bei der Triangulation entstehen keine entarteten Dreiecke, d. h. die Drei- ecke besitzen keine Punkte, die auf einer Linie liegen. - Ein Ziel sind wohlgeformte Dreiecke, d. h. die Dreiecke besitzen keine spitzen Winkel. Sei T eine Triangulation von P und sei D ein Dreieck aus T mit Eckpunkten Pai, Pbi, Pci, dann heißen die Verbindungen PaiPbi, PbiPci, PbiPci Kanten (Dabei gilt: PaiPbi = PbiPai). Eine innere Kante ist die gemeinsame Kante zweier
2.0 Einleitung Seite 7 benachbarter Dreiecke aus T. Eine Kante, die nur zu einem Dreieck ge- hört, heißt eine Randkante. - Dreiecksnetz Das Resultat der Triangulation ist ein Netz aus Dreiecken. Es wird Drei- ecksnetz genannt. - Planarer Graph Ein planarer Graph (auch plättbarer Graph) ist in der Graphentheorie ein Graph, der auf einer Ebene mit Punkten für die Knoten und Linien für die Kanten dargestellt werden kann, so dass sich die Kanten nicht schneiden. - Kollinear Punkte liegen auf einer Linie. - Startdreieck Ein Dreieck, welches zur Initialisierung der Triangulation dient. Dieses Dreieck schließt in seiner Fläche alle Punkte ein, die trianguliert werden sollen. Es wird auch als Initialisierungsdreieck oder Superdreieck bezeich- net. - WPF (Windows Presentation Foundation) WPF, enthalten im .net 3.0 (enthält Klassen), dient zur Ausgabe von 2-D- /3-D-Grafiken, Video, Audio und Bildern. Es setzt, im Gegensatz zu seinen Vorgängern GDI und GDI+, auf Directx auf und bietet dadurch volle Hard- warebeschleunigung.
3.0 Delaunay-Triangulation Seite 8 3.1 Einführung 3.1.1 Boris Nikolaevich Delone Die Delaunay-Triangulation erhielt ihren Namen von dem russischen Ma- thematiker Boris Nikolaevich Delone [1]. Boris Delone wurde 1890 in St. Petersburg geboren und verstarb 1980. Er absolvierte sein Studium im Jahr 1913, in dem er unter anderem Algebra und Zahlentheorie studierte, an der Universität von Kiew. Seine Arbeiten führten ihn in seine Geburts- stadt St. Petersburg zurück. Dort arbeitete er in verschiedenen mathema- tischen Instituten und machte sich dadurch einen Namen als Mathemati- ker. Von 1935 bis 1942 war er Professor an der Universität Moskau. Der Namen Delaunay entstand durch die Übersetzung seiner Werke in die französische Sprache. Das Wort Triangulation definiert der Duden folgen- dermaßen: „Die Triangulation ist das Festsetzen eines Netzes von Drei- ecken zur Landvermessung (Geodäsie).“. Damit ist die Aufteilung einer bestimmten Fläche in einzelne Dreiecke gemeint, die die gegebene Fläche komplett abdecken. 3.1.2 Klassische Problemstellungen Ein klassisches Problem der algorithmischen Geometrie ist die Ermittlung der konvexen Hülle. Es handelt sich dabei um folgendes Problem: Gege- ben seien n Nägel in einem Holzbrett, und um diese wird ein Gummiband gespannt. Die Lage des Gummibandes, nachdem es losgelassen wurde, soll bestimmt werden. Auch in höheren Dimensionen ist die konvexe Hülle für Punktmengen interessant. Im 3–dimensionalen Raum etwa können wir uns vorstellen, dass um die Punkte eine elastische Gummihaut gelegt wird. Das Problem wurde ausgiebig behandelt. Gründe dafür sind, dass es ein einfaches, sehr natürliches Problem ist. Viele andere Probleme sind darauf zurückzuführen. Natürlich gibt es aber auch Anwendungen, die aus anderen Teilbereichen kommen:
3.0 Delaunay-Triangulation Seite 9 • Beispielsweise sind verschiedene Mixturen gegeben, die zwei Substanzen in verschiedenen Konzentrationen enthalten. Kann ein vorgegebenes Mi- schungsverhältnis durch Mischung dieser Mixturen erreicht werden? • Das automatische Erkennen von verschiedenen Holzsorten. Dazu misst man für ausreichend viele Bretter einer Holzsorte (z. B. Buche) zwei Pa- rameter z. B. Maserung und Helligkeit. Im Anschluss trägt man diese Punkte in eine Ebene ein und zeichnet die konvexe Hülle. Sollten nun Messwerte für eine unbekannte Holzsorte in der konvexen Hülle liegen, so kann man davon ausgehen, dass es sich um ein Buchenbrett handelt. • Man ordne z. B. vier Tennisbälle so an, dass man möglichst wenig Verpa- ckungsmaterial benötigt. Das ist eine Minimierung der Oberfläche der kon- vexen Hülle. 3.1.3 Gründe für die Verwendung der Delaunay-Triangulation Landschaftsoberflächen sind ebenfalls eine Einsatzmöglichkeit für die De- launay-Triangulation. Wenn die Koordinaten in eine Ebene transformiert werden, kann eine Delaunay-Triangulation durchgeführt werden. Deswe- gen erhält man eine Fläche, die in einzelne Dreiecke vollständig aufgeteilt ist. Wird diese Fläche im 3-dimensionalen Raum unter Beibehaltung der Einteilung in Dreiecke auf ihre gegebene Höhe „gezogen“, wird man einen Körper (in diesem Beispiel eine Landschaftsfläche) erhalten, der aus ein- zelnen Dreiecksflächen gebildet wurde und eine Nährung der Höhe an ei- nem beliebigen Punkt erlaubt. Das Bild 1 auf der nächsten Seite stellt eine solche Höheninterpolation dar. Es ist das Ergebnis der Delaunay- Triangulation in der Ebene zu erkennen. Die fett markierten Punkte in der Ebene stellen die gegebenen Punkte der Landschaftsoberfläche dar.
3.0 Delaunay-Triangulation Seite 10 Bild 1: Höhenprofil eines Bergkamms, der trianguliert wurde [2]. Sicherlich stellt sich jetzt die Frage, warum bei so einem Problem die De- launay-Triangulation verwenden werden sollte und nicht irgendeine ande- re. Das nächste Bild veranschaulicht, welche möglichen Fehler auftreten, wenn nicht die Delaunay-Triangulation verwendet wird. Bild 2: Modell der Triangulation des Bergkamms von oben [2]. Die Abbildung zeigt den Verlauf eines Bergkamms. Dabei muss man sich vorstellen, dass man von oben auf den Bergrücken schaut. Der Bergkamm wird durch die senkrechte Line, die von oben nach unten verläuft,
3.0 Delaunay-Triangulation Seite 11 dargestellt. Wenn die Höhe des Punkte q gefragt ist, müssen nun die Hö- hen interpoliert werden. Der linke Teil in Bild 2 gibt eine realistische Aus- kunft von genau 985 Meter. Blickt man nun den rechten Teil der Abbildung an, erhält man den Wert 23 Meter, der eindeutig zu niedrig ist. Der Grund für dieses Ergebnis ist das Kriterium (siehe Kapitel 3.2.1.1), unter dem die Triangulation durchgeführt wurde. Die Triangulation im linken Teil wurde auf möglichst maximale Winkel (Max-Min-Winkelkriterium, siehe 3.2.1.1) durchgeführt. Der Fehler im rechten Teil entsteht durch Zulassen von sehr kleinen, spitzen Winkel. Eine wichtige Eigenschaft der Delaunay- Triangulation ist, dass sie den minimalen Winkel in einem Dreieck opti- miert. Damit wird der minimale Winkel möglichst groß und somit werden spitze Dreiecke vermieden. Bei der Delaunay-Triangulation wird das soge- nannte Max-Min-Winkelkriterium benutzt. Die Delaunay-Triangulation ist dafür bekannt wohlgeformte Dreiecke (es werden spitzwinklige Dreiecke vermieden) zu erzeugen, d. h. es wird an- gestrebt die Bildung von langen, dünnen Dreiecken zu vermeiden. Die re- sultierenden Dreiecke überlappen sich nicht und vermaschen eine beliebig große Punktmenge flächendeckend und eindeutig. Die Delaunay- Triangulation ist die zum Voronoi-Diagramm, auch als Dirichlet-Tesselation (Parkettierung) bezeichnete, duale1 Struktur (Der Exkurs Voronoi- Diagramme ist in Kapitel 4 zu finden). 1 Dual: Zu einen zusammenhängenden, ebenen Graphen ist der duale Graph G* derjeni- ge Graph, dessen Ecken in den Flächen von G liegen und dessen Kanten wie folgt be- stimmt sind: Ist e eine Kante von G mit Fläche X auf der einen und Fläche Y auf der an- deren Seite, so sind die Ecken X*, Y* (X* liegt in der Fläche X und Y* liegt in der Fläche Y) von G* durch eine Kante e* verbunden. (Siehe Bild 38 und Kapitel 4).
3.0 Delaunay-Triangulation Seite 12 3.1.4 Verwendung der Delaunay-Triangulation Sie wird verwendet zur Darstellung von Landschaftsbilder, Spielen, Anima- tionen (Filme), menschlichen Körperansichten und bei CAD-Programmen und Lasertechnik, usw. 3.1.5 Bedingungen für eine Delaunay-Triangulation Siehe 2.5. 3.2 Der inkrementelle Algorithmus 3.2.1 Voraussetzungen Die Nachbarschaft einer Kante wird von maximal zwei Dreiecken gebildet. Randkanten haben nur ein Nachbardreieck (Das Dreieck, welches die Kan- te besitzt). Definition: Wenn ein Dreieck die Kante eines anderen Dreiecks besitzt, bezeichnet man das als eine Nachbarschaft. Demnach besitzt ein Dreieck maximal drei Nachbardreiecke. 3.2.1.1 Kriterien beim Triangulieren Bei einer Triangulation von vier Punkten gibt es bereits mehr als ein Drei- eck und die Triangulation ist nicht eindeutig. Dabei ist bereits für diesen einfachen Fall eine Technik zur Auswahl der geeigneten Triangulation not- wendig. (Notation a() bezeichnet ein Winkelmaß. Siehe 2.4). In diesem Abschnitt wird immer von vier Punkten ausgegangen, die trianguliert wer- den sollen. ● Kriterium der kürzeren Diagonalen
3.0 Delaunay-Triangulation Seite 13 Eine Triangulation T von vier Punkten heißt bessere Triangulation als T' genau dann, wenn gilt d < d', wobei d die Länge der Diagonalen DT der Triangulation T und d' die Länge der Diagonalen DT’ der Trian- gulierung T' bezeichnet. Dieses Kriterium ist nicht in der Lage die Erzeugung langer, dünner, also spitzer, Dreiecke zu vermeiden. In der Charakteranimation wie auch in der FEM (Finite-Element-Methode) ist man bestrebt, kleine Winkel zu vermeiden, um „wohlgeformte" Dreiecke (s. Kap. 2.5) zu erhalten. ● Max-Min-Winkelkriterium: der kleinste vorkommende Dreieckswinkel wird maximiert Eine Triangulation T von vier Punkten heißt bessere Triangulation als T' genau dann, wenn gilt a(T) > a(T') mit a(T) = min{a(Tj) | Tj ∈ T}, wobei a(Tj) den kleinsten Winkel im Dreieck Tj bezeichnet. Es ist das Kriterium des größten, kleinsten Winkels und vermeidet lange, spitze Dreiecke. Es liefert stets für vier Punkte eine eindeutige Entscheidung. Es gilt als nicht allgemein, wenn von vier Punkten drei Punkte kollinear sind. Es existiert dann in diesem Fall ohnehin nur eine gültige Triangulierung (siehe folgenden Abschnitt). ● Min-Max-Winkelkriterium: der größte vorkommende Dreieckswinkel wird minimiert Eine Triangulation T von vier Punkten heißt bessere Triangulation als T' genau dann, wenn gilt a(T) < a(T') mit a(T) = min{a(Tj) | Tj ∈ T}, wobei a(Tj) den größten Winkel im Dreieck Tj bezeichnet. Finite-Element-Methoden approximieren, basierend auf einer endli- chen Zahl von Dreiecksflächensegmenten, eine Funktion und erlau- ben das dynamische Verhalten von Objekten zu simulieren. Es wer- den beispielsweise das Verformungsverhalten von Automobilkarosse- rien oder thermodynamische Vorgänge in Turbinen und Verbren- nungsmotoren simuliert. Die Konvergenz dieser Verfahren und damit die Fehlerabschätzung hängen nicht allein von der Größe des kleins- ten Winkels ab. Zu große Winkel sind ebenfalls ungünstig.
3.0 Delaunay-Triangulation Seite 14 BERN und EPPSTEIN (vgl. [3] und [4]) weisen auf Arbeiten hin, in denen theoretisch dargelegt wird, wie sich die Konvergenz der FEM bei Auftreten großer Dreieckswinkel verschlechtert. Statt den kleins- ten Winkel zu maximieren, minimiert das Min-Max-Winkelkriterium daher den größten Winkel (Häufig führen das Max-Min- und das Min- Max-Winkelkriterium zur gleichen Triangulierung. Vergleichende Tests mit Zufalls-Punktmengen zeigten Abweichungen in nur ca. 10 % der Fälle. Durch diese Methode wird eine lokale Optimalität er- reicht, die die globale Optimalität nicht mit einbezieht. Siehe Kapitel 3.2.1.4). Weitere Kriterien, die kurz vorgestellt werden: ● Max-Min-Radiuskriterium Maximiere für die Triangulation von vier Punkten den kleinsten Radi- us, der Kreise, die in die beiden angrenzenden Dreiecke einbeschrie- benen sind. ● Min-Max-Radiuskriterium Minimiere für die Triangulation von vier Punkten den größten Radius, der Kreise, die in die beiden angrenzenden Dreiecke einbeschriebe- nen sind. ● Max-Min-Flächenkriterium Maximiere bei der Triangulation von vier Punkten den kleinsten Flä- cheninhalt der beiden Dreiecke. ● Max-Min-Höhenkriterium Maximiere für die Triangulation von vier Punkten die kleinste Höhe in beiden Dreiecken.
3.0 Delaunay-Triangulation Seite 15 ● Minimale Summe der Kantenlängen Minimiere die Summe der Längen der fünf Kanten der vier Punkte (minimum weight triangulation oder minimum length triangulation). Dies ist ein einfaches Maß für die Größe der Dreiecke. Beispiele: Bild 3: Oben Kriterium der kürzeren Diagonalen, in der Mitte Max-Min-Winkelkriterium und unten Max-Min-Radiuskriterium [6]
3.0 Delaunay-Triangulation Seite 16 Bild 4: Triangulation nach Min-Max-Kriterium. Lokal optimal, da a(T2) < a(T1). Jedoch ist es nicht global optimal. Deshalb ist eine bessere Triangulation möglich [8]. Das Max-Min-Winkelkriterium ist das einzige bekannte Kriterium, für das alle lokalen Optima stets auch globale Optima sind, da der Algorithmus stets das lokale Optimum (Siehe 3.2.1.4) durch das Umkreiskriterium (Siehe 3.2.1.3) einhält. 3.2.1.2 Fälle bei der Triangulierung von vier Punkten Definition (Lokal optimale Triangulierung): Eine Triangulierung T heißt lokal optimal bzgl. eines Kriteriums K genau dann, wenn jedes Viereck in T, das von zwei Dreiecken gebildet wird, die sich eine Kante teilen, optimal trianguliert ist bzgl. K. 3.2.1.2.1 Erster Fall Man betrachte nun - als lokalen Fall - die Triangulation einer Menge von vier Punkten, die ein konvexes Viereck bilden. Das heißt, dass Viereck ist identisch mit der konvexen Hülle seiner vier Eckpunkte. Außerdem sind die Punkte nicht kollinear. Dann ist die Triangulierung nicht eindeutig. Es gibt zwei Möglichkeiten (siehe Bild 5).
3.0 Delaunay-Triangulation Seite 17 Bild 5: Allgemeiner Fall der Triangulierung von vier Punkten. Alle vier Punkte bilden die konvexe Hülle. 3.2.1.2.2 Zweiter Fall Die Bedingung des konvexen Vierecks bedeutet (Erster Fall), dass sich alle Punkte ausschließlich auf dem Rand der konvexen Hülle befinden. Befindet sich einer der Punkte innerhalb der konvexen Hülle, dann gibt es nur eine mögliche Triangulierung bei der drei Dreiecke entstehen (siehe Bild 6). Bild 6: Ein Punkt liegt nicht auf dem Rand. 3.2.1.2.3 Dritter Fall Sind drei Punkte kollinear, dann ist ebenfalls nur eine Triangulierung mög- lich und es entstehen zwei Dreiecke (Bild 7).
3.0 Delaunay Triangulation Seite 18 Bild 7: Drei Punkte liegen auf einer Linie. 3.2.1.3 Das Umkreiskriterium Hierbei wird zu einem Dreieck ein weiterer Punkt hinzugefügt. Durch das bekannte Dreieck kann der Umkreis des Dreiecks errechnet werden. Nun muss ermittelt werden, ob der neue Punkt innerhalb oder außerhalb des Umkreises liegt. Sobald er außerhalb liegt, wird der Punkt mit den nächs- ten zwei Eckpunkten des Dreiecks durch Kanten verbunden. Wenn er in- nerhalb liegt, wird er auch mit den nächsten zwei Eckpunkten verbunden. Jedoch wird zusätzlich die Diagonale des entstanden Vierecks vertauscht (siehe Bild 8), damit der eingefügte Punkte nicht im Umkreis liegt. Die lokale Eigenschaft „das Innere eines Umkreises jedes Dreiecks enthält keine weiteren Punkte“ (Siehe Abb. unten) ist äquivalent zum Max-Min- Winkelkriterium und ein Verstoß dagegen lässt sich durch Diagonalen- tausch (Edge flip) aufheben. Das lokale Umkreiskriterium zur Triangulie- rung von jeweils vier Punkten impliziert das globale Umkreiskriterium für große Punktmengen. Bei dem für sämtliche Dreiecke der Triangulierung gelten muss, dass ihr jeweiliger Umkreis keine weiteren Punkte aus der Punktmenge P beinhalten darf.
3.0 Delaunay-Triangulation Seite 19 Bild 8: Umkreiskriterium. Links im Bild wird das Umkreiskriterium verletzt. Durch Diago- nalentausch (edge flip) wird rechts eine gültige Triangulierung erreicht. Es genügt eines der beiden Dreiecke zu überprüfen. Das Umkreiskriterium verhält sich in beiden Fällen äquivalent. Dieses einfache Kriterium ersetzt somit das Max-Min-Winkelkriterium ab Kapitel 3.2.1.5. Im nächsten Kapitel wird das Max-Min-Winkelkriterium allerdings noch benötigt. 3.2.1.4 Optimale Triangulation Mit Hilfe der für Vierecke eingeführten Entscheidungskriterien aus 3.2.1.2 können auch größere Punktmengen trianguliert werden. Man beginnt bei einer Triangulation mit einem Dreieck und nimmt jeweils einen Punkt hin- zu. Damit kann eine optimale Triangulierung erzeugt werden. Dabei stellt sich die Frage, welches Kriterium aus einem lokalen Optimum ein globales Optimum erzeugt? Definition: Eine Triangulation heißt global optimal bzgl. eines Kriteriums K genau dann, wenn jedes Viereck, definiert - durch je zwei entlang ihrer Kanten aneinander anschließenden Dreiecke von T - optimal trianguliert ist bzgl. K. Problem: Es können dabei verschiedene lokal optimale Triangulierungen entstehen (siehe Bild 9). Das ganze ist abhängig von der Reihenfolge.
3.0 Delaunay-Triangulation Seite 20 Bild 9: Zwei lokal optimale Triangulierungen. Beide sind bzgl. Min-Max-Winkelkriterium optimal. Hierzu werden die lokalen Maße des betrachteten Kriteriums für alle Drei- ecke der Triangulation T in einem lexikographisch sortierten Vektor zu- sammengefasst und die Vektoren lexikographisch verglichen. Für jede Tri- angulierung T der Punktmenge P mit m Dreiecken wird ein Vektor a(T) = (a1,…, am) durch das lokale Entscheidungskriterium aufgestellt, bei dem die Komponenten ai = ai (Tj) der Größe nach sortiert werden. Wenn z. B. beim Min-Max-Winkelkriterium nun M Dreiecke entstehen, sind 3*m Win- kel vorhanden, die sortiert werden müssen. Nun wird jede Triangulation, die durch das Min-Max-Winkelkriterium erzeugt wurde, miteinander vergli- chen. Dadurch wird die beste Triangulation ermittelt. Denn eine Triangula- tion T gilt als global optimal, falls keine von T verschiedene Triangulation T' existiert, deren Vektor kleiner (minimierendes Kriterium) oder größer (maximierendes Kriterium) ist. Definition: Eine Triangulierung T einer Punktmenge P heißt global optimal bzgl. eines Kriteriums K genau dann, wenn mit dem obigen Vektormaß a(T) gilt: a(T) >= a(T') (bzw.
3.0 Delaunay-Triangulation Seite 21 3.2.2 Der inkrementelle Algorithmus 1. Als erstes werden drei neue Punkte eingefügt mit denen ein Startdrei- eck aufgebaut wird. Das Startdreieck soll alle Punkte in seiner Fläche beinhalten, die trianguliert werden sollen. Das Startdreieck initialisiert die Triangulation. Es ist sozusagen die Startinitialisierung. 2. Ein Punkt wird zu der bestehenden Triangulation eingefügt. 3. Feststellen der Dreiecke aus der bereits bestehenden 4. Entfernen dieser Dreiecke aus der bestehenden Triangulation, 5. Verbinden der Randpunkte der Umgebung (Fläche), in der der neue Punkt liegt. So entstehen die neuen Kanten und somit auch Dreiecke. Zuerst muss das Startdreieck erzeugt werden. Die vier letzten obigen Punkte werden dann immer wieder abgearbeitet für alle Punkte, die trian- guliert werden sollen. Nun die ersten fünf Punkte nochmals erläutert mit jeweils einem Bild. Zu 1:
3.0 Delaunay-Triangulation Seite 22 Bild 10: Startdreieck Es wird ein Startdreieck gebaut, das alle Punkte, die trianguliert werden sollen, in seiner Fläche enthält. Zu 2: Bild 11: Ein Punkt wird in die Triangulation eingefügt [5]
3.0 Delaunay-Triangulation Seite 23 Ein Punkt wird zu der bestehenden Triangulation eingefügt. Zu 3 und 4: Bild 12: Die Umkreise werden bestimmt [5] Die Dreiecke, deren Umkreis den Punkt (der in die Triangulation aufge- nommen werden soll) enthalten, werden gelöscht. Zu 5: Bild 13: Neue Dreiecke entstehen [5]
3.0 Delaunay-Triangulation Seite 24 Es entstehen neue Dreiecke zwischen dem hinzugefügtem Punkt und den Ecken der Umgebung (Fläche), in der der Punkt liegt. Am Ende der Trian- gulation werden alle Dreiecke, die einen Punkt des Startdreiecks haben, gelöscht. Pseudo-Code for each sample point in the vertex list initialize the edge buffer for each triangle currently in the triangle list calculate the triangle circumcircle center and radius if the point lies in the triangle circumcircle then add the three triangle edges to the edge buffer remove the triangle from the triangle list endif endfor delete all doubly specified edges from the edge buffer this leaves the edges of the enclosing polygon only add to the triangle list all triangles formed between the point and the edges of the enclosing polygon endfor remove any triangles from the triangle list that use the supertriangle ver- tices remove the supertriangle vertices from the vertex list end Wie zu sehen ist, ist dies nur der Algorithmus für eine Triangulation ohne das Herausnehmen der Löcher oder das Einhalten des Randes. Das wird noch ergänzt (siehe Kapitel 7 und 3.4).
3.0 Delaunay-Triangulation Seite 25 3.2.2.1 Ergebnisse des Algorithmus Graphentheoretisch stellt die Triangulation einen planaren (Def. siehe 2.5), zusammenhängenden Graph dar, der die konvexe Hülle der Punktmenge vollständig umschließt. Wenn jeder Punkt in die Triangulation aufgenommen wurde, gibt es einen Zusammenhang. Die Anzahl der Dreiecke ist etwa gleich groß wie die An- zahl der Außenkanten, da die Delaunay-Triangulation ein planarer Graph ist. Nun der Beweis: Voraussetzungen P habe n Außenkanten t entspricht der gesuchten Zahl der Dreiecke Beweis Lemma Eulersche Polyederformel Der Satz besagt: Seien e die Anzahl der Ecken, f die Anzahl der Flächen und k die Anzahl der Kanten eines konvexen Polyeders. Dann gilt: e+f−k=2 In Worten bedeutet, dass: Anzahl der Ecken plus Anzahl der Flächen mi- nus Anzahl der Kanten gleich zwei. Bei der Triangulation gehört jede Innenkante zu genau 2 Dreiecken und jede der n Außenkanten zu einem Dreieck ⇒ Gesamt-Kantenzahl k = (3t + n)/2 (Jedes Dreieck besitzt drei Kanten. Addiert mit den Außenkanten und dividiert durch 2, da alle Kanten doppelt gezählt wurden). Die Euler- sche Polyederformel beschreibt eine Eigenschaft von konvexen Polyedern, die auch bei planaren Graphen gilt. Für k setzt man (3t + n)/2 ein. Für e wird die Zahl der Außenkanten n eingesetzt und f wird durch t + 1 (Anzahl der Dreiecke und ein Außengebiet) ersetzt: e – k + f = 2 ⇒ n – (3t+n)/2 + t + 1 = 2 ⇒ t = n – 2 ⇒ die Zahl der Dreiecke liegt fest. Die Formel gilt nur, wenn P keine Löcher hat und der Rand konvex ist. Wenn es Punkte gibt, die kollinear auf dem Rand liegen, müssen diese kol-
3.0 Delaunay-Triangulation Seite 26 linearen Punkte abzogen werden. Also würde das Ergebnis n – 2 – (Anzahl der kollinearen Punkte) lauten. 3.3 Mathematische Grundlagen 3.3.1 Konvexe und nichtkonvexe Hüllen 3.3.1.1 Definition Als konvex (lat.: convexus gewölbt, gerundet) bezeichnet man Formen (Flächenteile, Linien), die nach außen gewölbt sind. Definition siehe 2.5. Bild 14: Links ist eine konvexe Hülle und rechts eine nichtkonvexe Hülle
3.0 Delaunay-Triangulation Seite 27 Konvexe Hülle Definition siehe 2.5 Bild 15: Konvexe Hülle Als nichtkonvex bezeichnet man Formen, die nach innen gewölbt sind. Definition siehe 2.5 3.3.2 Flächeninhalt von Dreiecken Wenn man eine Dreiecksfläche berechnen möchte und man gegen den Uhrzeigersinn das Dreieck durchläuft, kann man die Punkte markieren mit z. B. (siehe Bild 16) P0, P1 und P2 und bekommt die Koordinaten x0 und y0 für P0, x1 und y1 für P1, x2 und y2 für P2. 3.3.2.1 Berechnung Durch die Hälfte der Determinante von
3.0 Delaunay-Triangulation Seite 28 1 x0 y0 1 x1 y1 1 x2 y2 kann der Flächeninhalt der drei Punkte bestimmt werden. Als Lösung, wenn die Determinante ausgerechnet wird, erhält man (x1 * y2 + x2 * y0 + x0 * y1 - x2 * y1 - x0 * y2 - x1 * y0)*0.5. Die Ergebnisse können negativ und positiv sein. Wenn die Durchlaufrichtung im Uhrzeigersinn ist, sind die Ergebnisse negativ und mit (-1) zu multiplizieren. Die Ergebnisse bei die- ser Berechnung gegen den Uhrzeigersinn sind positiv. Das Ergebnis hängt also von der Orientierung der Punkte ab. Ein anderer Rechenweg wäre über das Kreuzprodukt (auch: Vektorprodukt genannt). Die Rechnung lautet dort: 0.5 * |a x b| Bild 16: Dreieck
3.0 Delaunay-Triangulation Seite 29 3.3.3 Kreis mit 3 Punkten erzeugen Für das Umkreiskriterium wird diese Rechung benötigt, da immer wieder ausgerechnet werden muss, ob der Punkt, welcher zu der Triangulation hinzugefügt werden soll, im Umkreis der Dreiecke ist, die bereits durch die Triangulation entstanden sind. 3.3.3.1 Berechnung Bild 17: Kreis mit drei Punkten aufziehen, die auf dem Kreis liegen. Wie auf dem Bild oben zu sehen, ist der Kreismittelpunkt relativ einfach zu berechnen. Als erstes muss die Steigung ma der Geraden a zwischen den Punkten P1, P2 und die Steigung mb der Geraden b zwischen den Punkten P2, P3 ermittelt werden. Die Punkte haben die Koordinaten x1 und y1 für P1, x2 und y2 für P2 und x3 und y3 für P3. ma = (y2 – y1) / (x2 - x1) mb = (y3 - y2) / (x3 – x2) Diese beiden Steigungen (ma und mb) müssen negiert und davon der Kehr- wert genommen werden, da die Steigung der Geraden ya und yb. (im Bild 17 sind die Indices groß geschrieben) lotrecht/senkrecht sind zu den Stei- gungen ma und mb. -1/ma = -(x2 - x1) / (y2 – y1) (Steigung der Geraden a im Bild 17)
3.0 Delaunay-Triangulation Seite 30 -1/mb = -(x3 – x2) / (y3 - y2) (Steigung der Geraden b im Bild 17) Nun wird der Kreismittelpunkt berechnet. Dazu wurden die beiden Glei- chungen ya und yb der Geraden aufgestellt. Diese erhält man, da die Ge- raden, die Steigungen von oben besitzen und die neuen Geraden ya und yb durch die Mittelpunkte der Geraden zwischen den Punkten P1 und P2 bzw. P2 und P3 gehen. So das x verschoben ist, um den Mittelpunkt der Gera- den zwischen den Punkten P1 und P2 bzw. P2 und P3. Der y- Achsenabschnitt ist der Mittelpunkt der Geraden zwischen den Punkten P1 und P2 bzw. P2 und P3. ya = -1/ma (x – (x1 + x2)/2) + (y1 + y2)/2 yb = -1/mb (x – (x2 + x3)/2) + (y2 + y3)/2 Die beiden Gleichungen ya und yb werden für y (ya = yb) gleichgesetzt und nach x aufgelöst. xc (der x-Wert des Kreismittelpunktes) wird somit er- rechnet. Heraus kommt, nach einigem Umformen, die Gleichung: Dann wird die Lösung xc für x entweder in die Gleichung ya oder yb einge- setzt, um yc (der y-Wert des Kreismittelpunktes) zu berechnen. Der Radius wird in folgender Weise berechnet. dx = x2 – xc dy = y2 - yc rsqr = √(dx * dx + dy * dy)
3.0 Delaunay-Triangulation Seite 31 3.3.3.2 Punkt im Kreis Da man den Kreisradius kennt durch die Berechung in 3.3.3.1, kann ein Punkt P darin unterschieden werden, ob dieser im Kreis ist oder nicht. Dazu muss nur verglichen werden, wie groß der Abstand zwischen P (Mit den Punkten (Px/Py)) und Kreismittelpunkt Mk (Mit den Punkten (Mkx/Mky)) ist. dx = Px – Mkx dy = Py – Mky drsqr = √(dx * dx + dy * dy) Ist der Abstand drsqr kleiner wie der Radius rsqr (aus dem Abschnitt vorher) liegt der Punkt im Kreis. Bei gleichen Werten liegt er auf dem Kreisrand, und ist der Abstand größer liegt der Punkt außerhalb des Kreises. 3.3.4 Berechnung eines Kreisbogens 3.3.4.1 Analytische Lösung Auf diese Berechnung wird im gesamten Algorithmus immer wieder zu- rückgegriffen, wenn z. B. Kreisbögen oder Bohrlöcher ins Spiel kommen. Deshalb wird kurz vorgestellt wie man Kreisbögen berechnet. Dazu benö- tigt man nur den Startwinkel des Kreisbogen im Bogenmaß (bei welchem Bogenmaß der Kreisbogen beginnt. 0 für 0°, PI/2 für 90°, PI für 180° usw.), Endwinkel des Kreisbogen im Bogenmaß (bei welchem Bogenmaß der Kreisbogen endet), Radius des Kreisbogen, Kreismittelpunkt des Kreisbogen und die Auflösung, das heißt mit wie vielen Punkten der Kreis aufgespannt werden soll. Der Gesamtwinkel ist nichts weiter als Endwinkel minus Startwinkel. Dieser wird einfach durch die Anzahl der Punkte, die den Kreis aufziehen sollen, dividiert und man erhält den Wert, der in die Variable „resolution“ geschrieben wird. In einer For-Schleife, welche von Start- zum Endwinkel läuft und immer um den Wert resolution erhöht wird, werden die Kreisbogenpunkte durch die zwei Formeln auf der nächs- ten Seite berechnet:
3.0 Delaunay-Triangulation Seite 32 arcs.Centre.x + radius * Math.Cos(alpha) die den x-Wert und arcs.Centre.x + radius * Math.Sin(alpha) die den y-Wert berechnet. Alpha hat herbei denselben Wert wie der Gesamtwinkel. 3.4 Sonderfälle Sonderfälle sind Probleme, die nicht durch die Delaunay-Triangulation ge- löst werden, jedoch so wichtig sind, dass sie analysiert und gelöst werden müssen. 3.4.1 Nichtkonvexe Hülle 3.4.1.1 Einleitung und Idee Die Definition konvexer und auch nichtkonvexer Hüllen kann man in 2.5 und 3.3.1.1 nachlesen. Ein Objekt, welches trianguliert werden soll, kann auch eine nichtkonvexe Hülle besitzen. Es muss ein Weg gefunden wer- den, der diese nichtkonvexen Stellen finden kann, da das Ergebnis der Tri- angulation eine konvexe Hülle ist. Dazu sollte erst mal erklärt werden, woran sich konvexe und nichtkonvexe Stellen unterscheiden. Wie in der Definition beschrieben, sind konvexe Stellen nach außen gewölbt. Wäh- rend nichtkonvexe nach innen gewölbte Stellen sind. Alle Stellen bestehen aus Dreiecken und deshalb kann man 3.3.2 benutzen. Denn konvexe Hül- len haben ein positives Ergebnis beim Berechnen des Flächeninhalt der einzelnen Dreiecke und nichtkonvexe ein negatives, da bei einer konvexen Stelle die Durchlaufrichtung gegen und bei einer nichtkonvexen Stelle die Durchlaufrichtung mit dem Uhrzeigersinn (siehe Bild 18) ist. Der nächste Punkt ist immer der Nachbar und damit kann dies genutzt werden. Das ist so, weil die Punkte, die man bekommt, gegen den Uhrzei- gersinn sortiert sind.
3.0 Delaunay-Triangulation Seite 33 Bild 18: Links nichtkonvexe und rechts konvexe Stellen Es gibt ganze Seitenteile, die nichtkonvexe seien können (Siehe Bild 19). Bild 19: Nichtkonvexe Hülle. Schwarz der eigentliche Rand und grün die Dreiecke, die entfernt werden müssen.
3.0 Delaunay-Triangulation Seite 34 Wie auf Bild 19 zu sehen, sind die nichtkonvexen Stellen einfach nach in- nen gewölbte Dreiecke. Die durch 3.3.2 unterscheidbar von nach außen gewölbten Dreiecken, also konvexen, sind. In 3.3.2 wird der Flächeninhalt von Dreiecken durch das halbe Vektorprodukt berechnet und das Ergebnis ist positiv, wenn die Durchlaufrichtung gegen den Uhrzeigersinn und das Dreieck konvex ist. Bei einem nichtkonvexen Dreieck, ist das Ergebnis ne- gativ. Wichtig ist auch, dass die Punkte gegen den Uhrzeigersinn gespei- chert sind. Man muss also nur den Rand durchgehen und sich alle Dreiecke merken, welche einen Flächeninhalt kleiner Null besitzen und diese dann löschen. 3.4.2 Darstellung von Löchern 3.4.2.1 Einleitung und Idee In diesem Abschnitt wird der Sachverhalt ausgenutzt, dass mehrere lokale Triangulationen eine globale ergeben. In der XML-Datei sind diese Punkte gesondert als Innenkonturen (inner contours) gespeichert. Die Punkte der Bohrlöcher werden ans Ende zu den anderen Punkte (Randpunkte der Scheibe), die trianguliert werden müssen, angehängt. Dann werden alle Punkte trianguliert und das Ergebnis sieht folgendermaßen aus:
3.0 Delaunay-Triangulation Seite 35 Bild 20: Viereck mit Löchern Wie man sieht, sind die Löcher durch Dreiecke aufgezogen, welche nicht nach außen ragen. Also muss man nun einfach alle Dreiecke löschen, de- ren Punkte einen höheren Indexwert haben als die Randpunkte (Indexwert siehe 2.5). Dabei dürfen aber die Dreiecke zwischen den Bohrlöchern nicht gelöscht werden. Im Kapitel 7 wird das Thema ausführlicher behandelt.
4.0 Exkurs Voronoi-Diagramm Seite 36 4.0 Exkurs Voronoi-Diagramm Wenn von der Delaunay-Triangulation gesprochen wird, fällt immer wieder ein Name, der hier kurz erläutert werden soll, da es durch aus interessant ist, was sich dahinter verbirgt. 4.1 Das Postamtproblem Das Voronoi-Diagramm2 befasst sich unter anderem mit dem Problem, welchen Einzugsbereich Postämter haben. Wenn sich z. B. ein Kunde fragt, welches Postamt für ihn liegt am nächsten? Es sind also Entfernungs- und Aufteilungssprobleme, die damit bearbeitet werden können. Ein Voronoi- Diagramm unterteilt eine Ebene mit Punkten in Regionen auf. Das Voro- noi-Diagramm ist auch eine Struktur zur Speicherung von Mengen von Punkten, die sich auf Nachbarschaftsanfragen stützen. 2 Die Voronoi-Diagramme erhielten ihren Namen von dem Mathematiker M. G. Voronoi, der diese geometrische Konstruktion 1908 entdeckte. G. L. Dirichlet kannte dieses Prob- lem bereits 1850, weshalb das Voronoi-Diagramm manchmal auch Dirichlet Tesselation genannt wird. Voronoi-Diagramme sind wichtige Konstruktionen, die durch Gitter definiert werden. Sie sind weit verbreitet in der Wissenschaft und werden auf den unterschied- lichsten Gebieten eingesetzt. Oft wurden sie nach der Person benannt, die sie als erstes in einem spezifischen Fachgebiet einsetzten. In der Meteorologie sind sie als Thiessen Polygone bekannt, um Polygone zu definieren, in deren Mitte sich eine Wetterstation be- findet. Die Voronoi-Diagramme sind zudem bekannt als Wigner-Seitz cells in der Metal- lurgie oder als Blum's transform in der Biologie.
4.0 Exkurs Voronoi-Diagramm Seite 37 Bild 21: Gebietsaufteilung [6] Bild 22: Begriffe des Voronoi-Diagramm [6] In Bild 22 sind die Sprachkonventionen bei Voronoi-Diagrammen zu er- kennen. 4.2 Begriffe Die wichtigsten Begriffe der Voronoi-Diagramme werden hier kurz erläu- tert.
4.0 Exkurs Voronoi-Diagramm Seite 38 Bild 23: Voronoi Knoten und Kanten [6] 1) Ein Voronoi-Knoten, der Mittelpunkt eines Kreises, (mittlerer blauer Punkt in Bild 15) definiert sich dadurch, dass der Umkreis des Kno- tens mindestens drei Punkte enthält, die die Postämter aus dem Bei- spiel (schwarze Punkte in Bild 15) darstellen sollen. 2) Am oberen blauen Punkt erkennt man eine Voronoi-Kante, die sich durch die Mittelsenkrechten der beiden Postämter (schwarzen Punk- te in Bild 15) ergibt. 3) Voronoi-Zellen besitzen die Eigenschaft, dass sie konvexe Polygone (die weiße Fläche zwischen den Kanten in Bild 15) sind.
4.0 Exkurs Voronoi-Diagramm Seite 39 Bild 24: Veranschaulichung der Dualität Das Voronoi-Diagramm teilt eine Menge von Punkten (in der Ebene) in Gebiete ein. Dies wird erreicht durch Zeichnen der Mittelsenkrechten, die jede Seite des Dreiecks in der Mitte schneiden (siehe Bild 24). Diese Mit- telsenkrechten treffen sich im Mittelpunkt des Umkreises bzw. im Voronoi- Knoten. Die Delaunay-Triangulation der Punktmenge P ergibt sich dann als duale Struktur (siehe Fußnote Seite 10) des Voronoi-Diagramms und er- zeugt ein globales Optimum. Als nächstes einige Fälle, die beim Voronoi- Diagramm beachtet werden müssen. 4.3 Fälle bei der Voronoi-Konstruktion 4.3.1 Punkt im Umkreis
4.0 Exkurs Voronoi-Diagramm Seite 40 Bild 25: Punkt im Kreis Die Dreiecke müssen nochmals berechnet werden. Die Umkreise der Drei- ecke dürfen mehr als drei Voronoi-Punkte enthalten, wobei der Voronoi- Knoten der Mittelpunkt des Umkreises ist (siehe Abschnitt vorher). 4.3.2 Weiterer Punkt im Dreieck selbst Bild 26: Punkt im Dreieck Bei einem weiteren Punkt im Dreieck entstehen drei neue Dreiecke. Also müssen diesmal neue Dreiecke im alten erzeugt werden. Das alte Dreieck fällt zudem weg, da es nun die drei neuen beinhaltet.
5.0 Fenster- und Glaseigenschaften Seite 41 5.0 Fenster- und Glaseigenschaften Dieser Abschnitt ist wichtig für den Aufbau der Fensterscheibe und die Verwendung von Materialien, die in .net (Engl.: ausgesprochen dot net) 3.0 (Siehe Kapitel 6.2) zu Verfügung gestellt werden. 5.1 Fensteraufbau Das Fenster besteht natürlich aus Fensterscheiben, einem Abstandhalter zwischen den Glasscheiben, der meist eine silbrig, glänzende Oberfläche besitzt. Ein schwarzer, matter Gummi liegt zwischen Scheibenrand und Abstandhalter. Bis jetzt werden 2-fach-ISO-Fenster animiert, d. h. der Auf- bau besitzt folgende Struktur: Scheibe, Abstandhalter, Scheibe Mehrfachisoliertes Glas (3-fach-ISO usw.) hat pro Scheibe, die es mehr enthält, noch einen Abstandhalter zwischen der neuen Scheibe und der, wo der Abstandhalter sonst noch aufliegt. Bei Glas im Innenausbau und den ISO-Fenstern müssen Dinge wie Innen- ausschnitte und Bohrlöcher berücksichtigt werden. Türen oder Dekorati- onsglas sind auch mehr als dekoratives Element bedacht und bestehen aus einer oder mehreren Scheiben ohne Abstandhalter. Außerdem kann Strukturglas vorkommen, d. h. die Vorder- und Rückseite der Glasscheibe ist z. B. aufgeraut.
5.0 Fenster- und Glaseigenschaften Seite 42 5.2 Eigenschaften von Glas In diesem Abschnitt interessiert uns, welche Reflektions- und Refraktions- eigenschaften Glas besitzt. Glas bricht einen Teil der Lichtstrahlen und re- flektiert den anderen Teil. Wenn man durch Glas schaut, ist die andere Seite um wenige Millimeter versetzt. Also wird das Licht gebrochen. Wird jedoch auf Glasflächen geschaut, die viel Sonnenlicht reflektieren, sieht man ein weiß-gelbes Glanzlicht. Das sind die reflektierten Sonnenstrahlen. Am Übergang von Licht zwischen Luft und Glas kommt es abhängig vom Einfallswinkel und der Glassorte zu einer Reflektion von ca. 4-9% des ein- fallenden Lichts. Somit wird das restliche Sonnenlicht gebrochen. Diese Eigenschaften sollten nachgebildet werden mit Hilfe des .net 3.0 und des- sen WPF (Windows Presentation Foundation beschrieben in Kapitel 6.2.1.3). Durch das WPF kann man auf einige Materialarten zugreifen und diese bei Verlangen unterschiedlich stark transparent erscheinen lassen. 5.2.1 Materialarten des WPF Das WPF stellt einige Materialen zu Verfügung. Diese werden hier vorge- stellt. 5.2.1.1 Lambert Material Das Lambert Material (auch diffuses Material genannt) eignet sich gut für matte Oberflächen. Es simuliert eine Art raue Oberfläche, welche die meis- ten Lichtstrahlen absorbiert und somit auch keine Glanzlichter (Specular Highlights) hat. Die Flächen erscheinen aus allen Richtungen betrachtet gleich hell, da sie das Licht mit gleicher Intensität in alle Richtungen gleichförmig reflektieren. Die Helligkeit eines Punktes hängt nur vom Win- kel zwischen der Richtung zur Lichtquelle und der Flächennormalen ab. Im WPF kann zudem noch die Transparenz (Opacity) eingestellt werden. Viele Materialen unserer Alltagswelt können gut mit diesem Material nachgebil- det werden, z. B. Papier, Holz usw.
5.0 Fenster- und Glaseigenschaften Seite 43 Bild 27: Lambert Material 5.2.1.2 Emissives Material Die Eigenschaft "Emissive" gibt die Farbe an, die ein Objekt von Natur aus emittiert, unabhängig von dem Licht, welches auf das Objekt fällt. Diese Eigenschaft ist auch dann wichtig, wenn es kein Licht gibt. Sie lässt ein Objekt glühend erscheinen. Ein Objekt strahlt durch diese Eigenschaft je- doch selbst kein Licht aus. Benachbarte Objekte werden dadurch nicht heller dargestellt. Hier kann ebenfalls die Transparenz eingestellt werden. Lampen wären zum Beispiel mit einem solchen Material auszustatten. Bild 28: Emissives Material
5.0 Fenster- und Glaseigenschaften Seite 44 5.2.1.3 Specular Material Mit der Eigenschaft Specular (Glanzpunkte) kann ein Effekt berücksichtigt werden, der in der Realität so oft vorkommt, dass er kaum noch wahrge- nommen wird. Dieser Effekt entsteht durch Unregelmäßigkeiten in der O- berflächenstruktur eines Materials und ist als heller Fleck auf der Oberflä- che eines Objektes sichtbar. Denken wir an ein Bild mit einem Apfel. Der Apfel selbst ist grün. Aber an der Stelle, an der besonders viel Licht auf den Apfel fällt, erscheint ein heller Fleck. Wenn stattdessen eine Farbe verwendet wird, die näher an der Farbe des dargestellten Objektes liegt, erscheint der Fleck weniger hell. Solche Farbwerte werden häufiger zur Darstellung von metallischen Gegenständen verwendet. Ansonsten werden glänzende Materialien - wie zum Beispiel Kunststoffe - auf diese Weise gut dargestellt. Auch hier kann optional eine Transparenz und dazu noch der Wert SpecularPower, der angibt wie stark die Reflektion sein soll, einge- stellt werden. Bild 29: Specular Material
5.0 Fenster- und Glaseigenschaften Seite 45 5.2.2 Verwendung der Materialen Im Fensteraufbau im Abschnitt 5.1 wurden die einzelnen Fensterteile be- schrieben, die animiert werden sollen. Das Lambert Material wird für die matten Oberflächen des Gummis benutzt. Das Glas erhält ein Emissives und ein Specular Material. Der Abstandhalter bekommt ein Specular Mate- rial.
Sie können auch lesen