Visualisierung von Scheibenaufbauten in Verglasungseinheiten mit Hilfe der neuen Microsoft .net-Framework 3.0 Technologie

Die Seite wird erstellt Darian Bruns
 
WEITER LESEN
Visualisierung von Scheibenaufbauten in Verglasungseinheiten mit Hilfe der neuen Microsoft .net-Framework 3.0 Technologie
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)
Visualisierung von Scheibenaufbauten in Verglasungseinheiten mit Hilfe der neuen Microsoft .net-Framework 3.0 Technologie
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
Visualisierung von Scheibenaufbauten in Verglasungseinheiten mit Hilfe der neuen Microsoft .net-Framework 3.0 Technologie
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