Algorithmische Geometrie: Delaunay Triangulierung (Teil 1) Nico Düvelmeyer WS 2009/2010, 26.1.2010
Überblick 1 Motivation Interpolation von Höhendaten 2 Triangulierungen von ebenen Punktmengen 3 Delaunay Triangulierungen 4 Berechnung der Delaunay Triangulierung Möglichkeit 1 Randomisiert inkrementeller Ansatz Rahmen des Algorithmus
Überblick 1 Motivation Interpolation von Höhendaten 2 Triangulierungen von ebenen Punktmengen 3 Delaunay Triangulierungen 4 Berechnung der Delaunay Triangulierung Möglichkeit 1 Randomisiert inkrementeller Ansatz Rahmen des Algorithmus
Terrain f : A R 2 R in P A bekannt f (x) in A approximieren stetige linear innerhalb von Dreiecken sehr viele Triangulierungen Welche?
Güte der Approximation langgestreckte Dreiecke gleichseitige Dreiecke kleine Innenwinkel schlimmster Innenwinkel
Überblick 1 Motivation Interpolation von Höhendaten 2 Triangulierungen von ebenen Punktmengen 3 Delaunay Triangulierungen 4 Berechnung der Delaunay Triangulierung Möglichkeit 1 Randomisiert inkrementeller Ansatz Rahmen des Algorithmus
Definition Triangulierung maximale Ebenenaufteilung: keine weiteren Kanten Triangulierung von P: maximale Ebenenaufteilung mit Eckenmenge P
Satz 10.1 Gegeben: P n Punkte der Ebene (nicht kollinear) k Anzahl von Punkten aus P auf Rand von conv P Dann hat jede Triangulierung von P genau 2n 2 k Dreiecke 3n 3 k Kanten Beweis. T: Triangulierung von P mit m Dreiecken, n f = m + 1 Flächen, n k Kanten Inzidenzen Kanten Gebiete: 2n k = 3m + k n k = 3m+k 2 Eulerschen Formel n n k + n f = 2 n 3m+k 2 + m + 1 = 2 2n m k = 2 m = 2n k 2 n k = 3m+k 2 = 3(2n k 2)+k 2 = 3n 3 k
Definition 10.2 Winkel-Vektor Triangulierung T von P α 1,..., α 3m Innenwinkeln aller Dreiecke in T α 1 α 2 α 3m Winkel-Vektor von T: W (T) := (α 1,..., α 3m )
Peripheriewinkelsatz (Satz 10.3) Gegeben: Kreis K Gerade g a und b Schnittpunkte K g Punkte p, q, r, s auf selber Seite von g p und q auf K r innerhalb K s ausserhalb von K dann gilt: arb > apb = aqb > asb
Definition 10.4 Kantendrehung: Triangulierung T T Kante p i p j in T wird p k p l in T p i p k p j p l ein konvexes Viereck Dreiecke p i p j p k und p i p j p l aus T werden p i p k p l, p j p k p l in T Winkel α 1,..., α 6 in W (T) α 1,..., α 6 in W (T ) p i p j heißt unzulässige Kante, wenn min α i < min α i 1 i 6 1 i 6
Beobachtung 10.5 Triangulierung T unzulässigen Kante k von T Triangulierung T durch drehen von k in T Dann ist W (T ) > W (T)
Lemma 10.6 Gegeben: Triangulierung T Kante p i p j p i p j p k und p i p j p l i T K : Umkreis von p i p j p k p i p j unzulässig p l liegt innerhalb von K Zusätzlich: p i p k p j p l konvexes Viereck nicht auf einem Kreis genau eine Kante unzulässig: p i p j oder p k p l
Beweis von Lemma 10.6 p l innerhalb von K : auch Punkt p k innerhalb K (p i p j p l ) mehrfach Peripheriewinkelsatz für jeden neuen Innenwinkel gibt es kleineren alten Innenwinkel neues Minimum größer altes Minimum p i p j unzulässig p l außerhalb von K : p l auf K Viereck p i p k p j p l entartet oder nicht konvex? Rollentausch p i, p j p k, p l neues Minimum kleiner altes Minimum p i p j zulässig Gleichheit von vier Winkelgrößen minimale Innenwinkel dabei
Definition 10.7 Wir nennen T zulässige Triangulierung, falls T keine unzulässigen Kanten enthält.
Algorithmus 10.8 Eingabe: eine Triangulierung T der Punktmenge P Ausgabe: eine zulässige Triangulierung von P 1: Funktion ZULÄSSIGETRIANGULIERUNG(T) 2: Solange T eine unzulässige Kante p i p j enthält, mache drehe p i p j 3: Bestimme die mit p i p j inzidierenden Dreiecke p i p j p k und p i p j p l. 4: Entferne p i p j aus T und füge dafür p k p l zu T hinzu. 5: Liefere T.
Terminiertheit Der Algorithmus 10.8 (ZULÄSSIGETRIANGULIERUNG(T)) terminiert, da der Winkel-Vektor stets größer wird und nur endlich viele Werte annehmen kann. Die Laufzeit ist uns aber zu groß.
Überblick 1 Motivation Interpolation von Höhendaten 2 Triangulierungen von ebenen Punktmengen 3 Delaunay Triangulierungen 4 Berechnung der Delaunay Triangulierung Möglichkeit 1 Randomisiert inkrementeller Ansatz Rahmen des Algorithmus
Delaunay Graph Definition 10.9 P Menge von n Punkten Voronoi-Diagramm Vor(P) besteht aus je einem Gebiet je Punkt aus P dualer Graph G Knoten: Voronoi-Gebiet V(p) (p P) Kanten in G: Gebiete von Vor(P) mit gemeinsamer Kante in Vor(P) Einbettung von G: V(p) p, {V(p), V(q)} pq Delaunay Graph DG(P) von P
Satz 10.10 Der Delaunay Graph einer ebenen Punktmenge ist ein ebener Graph. Beweis. z.z.: Kanten überschneidungsfrei Satz 8.5, Aussage 2: p i p j in DG(P) Kreisscheibe K i,j mit p i und p j im Rand gibt, enthält keine weiteren Punkte aus P Mittelpunkt M i,j von K i,j Dreieck D i,j := p i p j M i,j p i M i,j innerhalb V(p i ) p j M i,j innerhalb V(p j ) M i,j und M k,l auf Kanten von Vor(P) Annahme: p i p j und p k p l von DG(P) schneiden sich
Satz 10.10 Der Delaunay Graph einer ebenen Punktmenge ist ein ebener Graph. Beweis. Annahme: p i p j und p k p l von DG(P) schneiden sich i, j, k, l paarweise verschieden p k und p l nicht D i,j K i,j p k p l schneidet Streckenzug p i, M i,j, p j Streckenzug p i, M i,j, p j schneidet weitere Kante von D k,l (in s) s liegt in verschiedenen Voronoizellen oder Kanten oder beides
Definition 10.11 Delaunay Triangulierung P: endliche Punktmenge eine Delaunay Triangulierung von P: beliebige Triangulierung von DG(P) ausgehend die Delaunay Triangulierung von P: nur wenn DG(P) eine Triangulierung ist letzteres gilt, wenn P in allgemeiner Lage ist: keine vier Punkte auf einem Kreis
Satz 10.12 Es sei P eine endliche Menge von Punkten der Ebene. 1. Die Punkte p i, p j, p k P sind genau dann Ecken eines gemeinsamen Gebietes von DG(P), wenn der Kreis durch p i, p j, p k keine Punkte aus P in seinem Inneren enthält. 2. Zwei Punkte p i, p j P bilden genau dann eine Kante von DG(P), wenn es eine abgeschlossene Kreisscheibe K i,j mit p i und p j im Rand gibt, die keine weiteren Punkte aus P enthält. Beweis. Umformulierung von Satz 8.5
Satz 10.13 Gegeben: P endliche Menge von Punkten T Triangulierung von P T Delaunay Triangulierung von T der Umkreis jeden Dreiecks aus T enthält keine Punkte aus P im Inneren Beweis. T Delaunay Triangulierung von T die Ecken jedes Dreiecks von T sind Ecken eines gemeinsamen Gebietes von DG(P)
Satz 10.14 Triangulierung T zulässig T Delaunay Triangulierung Beweis. klar nach Lemma 10.6 und Satz 10.13 : indirekt T zulässig, aber nicht Delaunay Triangulierung Satz 10.12: p i p j p k T: K (p i p j p k ) enthält p l P im Inneren p l liegt nicht im Dreieck p i p j p k oeda ist e := p i p j Diagonale vom konvexen Viereck p i p k p j p l unter allen Möglichkeiten für (p i p j p k, p l ) wählen wir eine mit maximalem Winkel p i p l p j
Satz 10.14 Triangulierung T zulässig T Delaunay Triangulierung Beweis. unter allen Möglichkeiten für (p i p j p k, p l ) wählen wir eine mit maximalem Winkel p i p l p j p i p j p m T e zulässig p m nicht im Inneren von K (p i p j p k ) Teil von K (p i p j p k ) mit Rand e, der nicht p k enthält, K (p i p j p m ) p l K (p i p j p m ) oeda p j p m Diagonale von p i p j p l p m p j p l p m > p j p l p i
Satz 10.15 1. T Triangulierung mit maximalem W (T) T Delaunay Triangulierung 2. T Delaunay Triangulierung minimaler Winkel in W (T) ist maximal Beweis. 1. Triangulierung mit maximalem Winkel-Vektor ist zulässig und Satz 10.14 2. Unterschied Delaunay Triangulierungen von P: Triangulierungen der Gebiete von DG(P) mit > 3 Ecken Peripheriewinkelsatzes: für konvexe Gebiete, alle Ecken auf einem Kreis minimaler Innenwinkel jeder Triangulierung gleich
Überblick 1 Motivation Interpolation von Höhendaten 2 Triangulierungen von ebenen Punktmengen 3 Delaunay Triangulierungen 4 Berechnung der Delaunay Triangulierung Möglichkeit 1 Randomisiert inkrementeller Ansatz Rahmen des Algorithmus
Überblick 1 Motivation Interpolation von Höhendaten 2 Triangulierungen von ebenen Punktmengen 3 Delaunay Triangulierungen 4 Berechnung der Delaunay Triangulierung Möglichkeit 1 Randomisiert inkrementeller Ansatz Rahmen des Algorithmus
via Voronoi Voronoi-Diagramm berechnen dualisieren einzeln beliebig triangulieren Laufzeit in O(n log n) Speicherplatz in O(n)
Überblick 1 Motivation Interpolation von Höhendaten 2 Triangulierungen von ebenen Punktmengen 3 Delaunay Triangulierungen 4 Berechnung der Delaunay Triangulierung Möglichkeit 1 Randomisiert inkrementeller Ansatz Rahmen des Algorithmus
Randomisiert inkrementeller Ansatz Start: großes Dreieck p 0 p 1 p 2 enthält P = {p 0, p 1,..., p n } bestimmen eine Delaunay Triangulierung von Q i := {p 2, p 1, p 0, p 1,..., p i } entfernen p 1, p 2 samt inzidenter Kanten und Dreiecke Delaunay Triangulierung von P
Überblick 1 Motivation Interpolation von Höhendaten 2 Triangulierungen von ebenen Punktmengen 3 Delaunay Triangulierungen 4 Berechnung der Delaunay Triangulierung Möglichkeit 1 Randomisiert inkrementeller Ansatz Rahmen des Algorithmus
Algorithmus 10.16 Eingabe: eine Menge P von n + 1 Punkten der Ebene Ausgabe: eine Delaunay Triangulierung von P 1: Funktion DELAUNAYTRIANGULIERUNG(P) 2: Bestimme den lexikographisch höchsten Punkt p 0 von P, d.h. den Punkt mit maximaler x-koordinate unter allen Punkten von P mit maximaler y-koordinate. 3: p 1 und p 2 seien zwei Punkte der Ebene, die hinreichend weit von P entfernt sind, so dass P im Dreieck p 0 p 1 p 2 enthalten ist. 4: Initialisiere T als die Triangulierung mit dem einzelnen Dreieck p 0 p 1 p 2. 5: Bestimme eine zufällige Vertauschung p 1,..., p n von P \ {p 0 }.
Algorithmus 10.16 6: Für r 1 bis n mache Füge p r in T ein 7: Suche das Dreieck p i p j p k T, welches p r enthält. 8: Wenn p r im Inneren von p i p j p k liegt, dann 9: füge drei neue Kanten p i p r, p j p r und p k p r in T ein, wobei p i p j p k in drei Dreiecke zerlegt wird. 10: KORRIGIEREKANTE(p r, p i p j, T) 11: KORRIGIEREKANTE(p r, p j p k, T) 12: KORRIGIEREKANTE(p r, p k p i, T) 13: sonst
Algorithmus 10.16 14: Es sei p i p j die Kante von T, die p r enthält, p i p j p k T und p i p j p l T die beiden zu p i p j inzidenten Dreiecke. 15: Füge zwei neue Kanten p k p r und p l p r in T ein, wobei p i p j durch p r in zwei Strecken und p i p j p k sowie p i p j p l jeweils in zwei Dreiecke zerlegt werden. 16: KORRIGIEREKANTE(p r, p i p l, T) 17: KORRIGIEREKANTE(p r, p l p j, T) 18: KORRIGIEREKANTE(p r, p j p k, T) 19: KORRIGIEREKANTE(p r, p k p i, T) 20: Entferne p 1, p 2 mit allen inzidenten Kanten und Dreiecken aus T. 21: Liefere T.