Algorithmische Geometrie - Vorlesungsskripte der Fakultät für

Werbung
Algorithmische Geometrie
Joachim Giesen
Semester: WS 2008/09
Vorwort
Dieses Dokument wurde als Skript für die auf der Titelseite genannte Vorlesung erstellt
und wird jetzt im Rahmen des Projekts „Vorlesungsskripte der Fakultät für Mathematik
und Informatik“ weiter betreut. Das Dokument wurde nach bestem Wissen und Gewissen
angefertigt. Dennoch garantiert weder der auf der Titelseite genannte Dozent, die Personen, die an dem Dokument mitgewirkt haben, noch die Mitglieder des Projekts für dessen
Fehlerfreiheit. Für etwaige Fehler und dessen Folgen wird von keiner der genannten
Personen eine Haftung übernommen. Es steht jeder Person frei, dieses Dokument zu
lesen, zu verändern oder auf anderen Medien verfügbar zu machen, solange ein Verweis
auf die Internetadresse des Projekts http: // uni-skripte. lug-jena. de/ enthalten
ist.
Diese Ausgabe trägt die Versionsnummer 2955 und ist vom 31. März 2010. Eine neue
Ausgabe könnte auf der Webseite des Projekts verfügbar sein.
Jeder ist dazu aufgerufen, Verbesserungen, Erweiterungen und Fehlerkorrekturen für das
Skript einzureichen bzw. zu melden oder diese selbst einzupflegen – einfach eine E-Mail
an die Mailingliste <uni-skripte@ lug-jena. de> senden. Weitere Informationen sind
unter der oben genannten Internetadresse verfügbar.
Hiermit möchten wir allen Personen, die an diesem Skript mitgewirkt haben, vielmals
danken:
• Christoph Göring <sietschie@ gmail. com> (Jahr)
3
Inhaltsverzeichnis
1 Grundlagen
1.1 Affine Geometrie . . . . . . . . . . . . . . . .
1.2 Affine Abhängigkeiten/Unabhängigkeiten . .
1.3 Affine Abbildung . . . . . . . . . . . . . . . .
1.4 Euklidische Räume . . . . . . . . . . . . . . .
1.5 Halbräume . . . . . . . . . . . . . . . . . . .
1.6 Dualität zwischen Punkten und Hyperebenen
1.7 Eigenschaften konvexer Mengen . . . . . . . .
1.8 Konvexe Hüllen von Punktmengen . . . . . .
1.9 Bälle im Rd . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Voronoi Diagramme & Delaunay Triangulierung
2.1 Berechnung von Delaunay Triangulierungen in der Ebene . . . . . . . .
2.1.1 Lawsons-Flip-Algorithmus . . . . . . . . . . . . . . . . . . . . . .
2.2 Konvexe Hülle in der Ebene R2 . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Graham Scan Algorithmus . . . . . . . . . . . . . . . . . . . . .
2.3 Berechnung von Voronoi-Diagrammen in der Ebene . . . . . . . . . . . .
2.3.1 Sweep Line Paradigma . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Inkrementeller Algorithmus zur Berechnung der Delaunay-Triangulierung
von P ⊂ R2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 (Unendliche) Gleitkommazahlsysteme . . . . . . . . . . . . . . . . . . .
2.6 Gleitkommazahlapproximation von Geometrischen Prädikaten . . . . . .
2.7 Degeneriertheit - Symbolische Pertubierung . . . . . . . . . . . . . . . .
2.8 3D Delaunay-Triangulierung für gewichtete Punkte . . . . . . . . . . . .
3 Geometrisch modellieren
3.1 Crust-Algorithmus . . . . . . . . . . . . . . . . .
3.1.1 Korrektheitsbeweis für Crust Algorithmus
3.2 Flächenrekonstruktion . . . . . . . . . . . . . . .
3.2.1 (Konforme) Alpha Shapes . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
10
10
12
12
14
15
16
.
.
.
.
.
.
17
20
25
27
29
31
33
.
.
.
.
.
34
42
44
45
46
.
.
.
.
57
58
62
66
70
4 Topologie (Homologie)
75
4.1 Homologietheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.2 Simplizale Homologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.3 Berechnung von Bettizahlen . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4
Inhaltsverzeichnis
5 Meshing
89
5
Auflistung der Theoreme
Sätze
Satz 1.1
Kosinussatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Satz 2.2
Lifted Circle Claim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Satz 2.4
Thales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Satz 2.5
Radons Theorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Definitionen und Festlegungen
Definition 1.1
Affiner Unterraum . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Definition 1.2
Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Definition 1.3
Affine Kombination von Punkten . . . . . . . . . . . . . . . . . . .
9
Definition 1.4
Affine Hülle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Definition 1.5
Affine Abhängigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Definition 1.6
Affine Abbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Definition 1.8
euklidische Norm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Definition 1.9
Hyperebenen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Definition 1.10 offener Halbraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Definition 1.11 geschlossener Halbraum . . . . . . . . . . . . . . . . . . . . . . . . 12
Definition 1.12 Dualität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Definition 1.15 Konvexkombination . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Definition 1.16 Bälle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Definition 2.1
Nicht-degeneriert . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Definition 2.2
Voronoi-Zelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Definition 2.3
Bisektor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6
Inhaltsverzeichnis
Definition 2.4
Voronoi-Face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Definition 2.5
Voronoi-Diagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Definition 2.6
Delaunay-Triangulierung . . . . . . . . . . . . . . . . . . . . . . . . 18
Definition 2.7
Voronoi-Delauny-Dualität . . . . . . . . . . . . . . . . . . . . . . . 18
Definition 2.8
Power-Diagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Definition 2.9
Power-Zelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Definition 2.10 Power-Bisektor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Definition 2.11 Power-Faces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Definition 2.12 Power-Diagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Definition 2.13 Umschreibender Ball eines Simplex . . . . . . . . . . . . . . . . . . 20
Definition 2.14 lokale Delaunay-Eigenschaft . . . . . . . . . . . . . . . . . . . . . . 20
Definition 2.17 Halbkanten-Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . 29
Definition 2.19 Orthogonalität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Definition 2.20 Orthogonalität zweier Sphären . . . . . . . . . . . . . . . . . . . . 49
Definition 2.21 Orthosphäre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Definition 2.22 Orthosphären Bedingung . . . . . . . . . . . . . . . . . . . . . . . 51
Definition 2.23 Polarität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Definition 2.24 Lokale Delaunay-Bedingung . . . . . . . . . . . . . . . . . . . . . . 52
Definition 3.1
Leeres Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Definition 3.2
korrekte Kante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Definition 3.3
mediale Achse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Definition 3.4
mediale Bälle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Definition 3.5
ε-Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Definition 3.6
Homeomorphismus . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Definition 3.7
Eingeschränkte Delaunay-Triangulierung . . . . . . . . . . . . . . . 66
Definition 3.8
Pol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Definition 3.9
Co-Kegel/Cocone . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Definition 3.10 Alpha Shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Definition 3.11 Kritischer Delaunay-Simplex . . . . . . . . . . . . . . . . . . . . . 70
7
Inhaltsverzeichnis
Definition 4.1
Topologischer Raum . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Definition 4.2
Stetige Abbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Definition 4.3
Homeomorphismus . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Definition 4.4
Homeomorph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Definition 4.5
Homotopyäquivalenz . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Definition 4.6
Homotopyäquivalent . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Definition 4.7
Deformationsretrakt . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Definition 4.8
Homotopie invariante
Definition 4.9
k-Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
. . . . . . . . . . . . . . . . . . . . . . . . . 76
Definition 4.10 Simplizialer Komplex . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Definition 4.11 Abelsche Gruppe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Definition 4.12 Untergruppe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Definition 4.13 Ko-Menge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Definition 4.14 Quotient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Definition 4.15 Gruppen Homomorphismus . . . . . . . . . . . . . . . . . . . . . . 78
Definition 4.16 Kern & Bild eines Homomorphismus . . . . . . . . . . . . . . . . . 78
Definition 4.17 Addition mit simplizialen Komplexen . . . . . . . . . . . . . . . . . 78
Definition 4.18 Randhomomorphismus . . . . . . . . . . . . . . . . . . . . . . . . . 78
Definition 4.19 Zyklen & Ränder . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Definition 4.20 k-te Homologiegruppe . . . . . . . . . . . . . . . . . . . . . . . . . 79
Definition 4.21 Kettengruppe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Definition 4.22 Randabbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Definition 4.23 Zyklengruppe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Definition 4.24 Randgruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Definition 4.25 Homologiegruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Definition 4.26 Kettenkomplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Definition 4.27 Rang einer endlichen Gruppe . . . . . . . . . . . . . . . . . . . . . 81
Definition 4.28 k-Betti Zahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8
1 Grundlagen
1.1 Affine Geometrie
Voraussetzung: Lineare Algebra im Rd
Definition 1.1 (Affiner Unterraum)
Eine Teilmenge nennt man affiner Unterraum, wenn entweder A = ∅ oder A ist ein
„verschobener“ linearer Unterraum. Das heißt A = V + L, wobei L ein linearer Unterraum
des Rd ist und v ∈ Rd ein Vektor.
Beispiel 1.1
• Gerade in der Ebene
• Gerade im Rd
• Ebene im R3
Definition 1.2 (Dimension)
dim A = −1 falls A = ∅ und dim L sonst (Dimension des linearen Unterraums).
Definition 1.3 (Affine Kombination von Punkten)
P
Seien p1 , p2 , . . . , pn ∈ Rd , n ≥ 1 und λ1 , . . . , λn ∈ R mit ni=1 λi = 1 dann nennt man
λ1 p1 + λ2 p2 + · · · + λn pn
eine affine Kombination der Punkte pi .
Definition 1.4 (Affine Hülle)
Sei S ⊆ Rd . Dann nennt man
aff(S) := {λ1 p1 + λ2 p2 + · · · + λn pn mit n ≥ 1, p1, . . . , pn ∈ S, λ1 , . . . , λn ∈ R
n
X
λi = 1}
i=1
affine Hülle von S.
Eigenschaften
Die affine Hülle ist die kleinste affine Unterraum, der S enthält.
Beispiel 1.2
• affine Hülle von 2 Punkten pi 6= pj ∈ R3 ist die Gerade durch beide Punkte.
• affine Hülle von 3 Punkten paarweise verschiedenen Punkten p1 , p2 und p3 ∈ R3 ist
die Ebene durch alle drei Punkte
9
1 Grundlagen
1.2 Affine Abhängigkeiten/Unabhängigkeiten
Definition 1.5 (Affine Abhängigkeit)
Punkte p1 , . . . , pn ∈ Rd heißen affin abhängig, wenn es α1 , . . . , αn ∈ R gibt, so dass gilt:
α1 p1 + α2 p2 + · · · + αn pn = 0 mit
n
X
αi = 0 und mind. ein αi 6= ∅.
i=1
Ansonsten heißen die Punkte affin unabhängig.
Beispiel 1.3
• Zwei Punkte p1 und p2 ∈ R2 affin unabhängig, wenn die Gerade durch beide Punkte
nicht durch den Ursprung geht.
• drei Punkte auf einer Gerade sind affin abhängig.
Bemerkung 1.1
p1 , . . . , pn sind affin abhängig (n ≥ 3) gdw. p2 − p1 , p3 − p1 , . . . , pn − p1 linear abhängig
sind.
1.3 Affine Abbildung
Definition 1.6 (Affine Abbildung)
Eine affine Abbildung ist eine Abbildung f : Rd → Rk , die als Kombination von linearer
Abbildung und Translation ausgedrückt werden kann, d. h. in Koordinatenschreibweise
kann f als
f (x) = Ax + b mit A ∈ Rk×d (k × d − Matrix), b ∈ Rk
aufgeschrieben werden.
1.4 Euklidische Räume
Rd
Definition 1.7
Skalarprodukt v = (v1 , v2 , . . . , vd ) ∈ Rd und w = (w1 , w2 , . . . , wn ) ∈ Rd
hv, wi := v T w =
X
= 1d vi wi
i
Eigenschaften
• symmetrisch: hv, wi = hw, vi
• bilinear: hαv + βu, wi = αhv, wi + βhu, wi und hv, αw + βui = αhv, wi + βhv, ui
10
1.4 Euklidische Räume
• nichtnegativ: hv, vi ≥ 0, ∀v ∈ Rd und hv, vi = 0 gdw. v = 0
wegen dieser Eigenschaften induziert das Skalarprodukt eine Norm:
Definition 1.8 (euklidische Norm)
kvk :=
q
hv, vi, v ∈ Rd
Eigenschaften
• kvk ≥ 0 und kvk = 0 gdw v = 0
• kλvk = |λ|kvk für λ ∈ R, v ∈ Rd
• kv + wk ≤ kvk + kwk mitv, w ∈ Rd (Dreiecksungleichung)
Cauchy-Schwarz-Ungleichung
|hv, wi| ≤ kvk · kwk, ∀v, w ∈ Rd
Winkel zwischen zwei Vektoren (kleiner Winkel) v, w ∈ Rd :
cos(α) =
hv, wi
kvk · kwk
Satz 1.1 (Kosinussatz)
p, q, r ∈ Rd :
kq − rk2 = kq − pk2 + kr − pk2 − 2hr − p, q − pi
Definition 1.9 (Hyperebenen)
Ein affiner Unterraum mit Codimension 1 im Rd .
h := {x ∈ Rd |aT x = α für a ∈ Rd , α ∈ R}
Beispiel 1.4
• Ebene im R3 = Hyperebene
• Gerade im R2 ist Hyperebene
Eigenschaften
• Vektor a heißt Normalenvektor. Er steht senkrecht auch Hyperebene, d. h.
∀p, q ∈ h : ha, p − qi = 0
• Entfernung von h zum Ursprung =
|α|
kak
• h ist invariant unter Skalierung der definierten Gleichung mit Skalar λ 6= 0
11
1 Grundlagen
1.5 Halbräume
Definition 1.10 (offener Halbraum)
Jede Hyperebene teilt den Raum Rd in drei Teile, die Hyperebene und die zwei offenen
Halbräume:
h+ := {x ∈ Rd |aT x > a} – positiv offener Halbraum
h− := {x ∈ Rd |aT x < a} – negativ offener Halbraum
Bemerkung 1.2
positiver und negativer Halbraum sind durch die Orientierung der Hyperebene bestimmt.
Definition 1.11 (geschlossener Halbraum)
h¯+ := {x ∈ Rd |aT x ≥ a} – positiv offener Halbraum
h̄− := {x ∈ Rd |aT x ≤ a} – negativ offener Halbraum
Konventionen: nicht-vertikale Hyperebene: Hyperebene mit ad 6= 0 heißt nicht-vertikal
(Die letzte Komponente ist nicht ungleich 0)
• h+ – Halbräume „über“ der Hyperebene
• h− – Halbräume „unter“ der Hyperebene
h = {x ∈ Rd |aT x = α}
= {x ∈ Rd |(a1 , a2 , . . . , ad )T x = α}(mit ad 6= 0)
= {x ∈ Rd |a1 x1 + a2 x2 + · · · + ad xd = α}
1
= {x ∈ Rd |xd = (a1 x1 + a2 x2 + · · · + ad−1 xd−1 − α)}
ad
d
= {x ∈ R |xd = b1 x1 + b2 x2 + · · · + bd−1 xd−1 − β}
= Graph einer affinen Abbildung Rd−1 → R
1.6 Dualität zwischen Punkten und Hyperebenen
beliebiger Punkt aus Rd entspricht nicht-vertikale Hyperebene im Rd
12
1.6 Dualität zwischen Punkten und Hyperebenen
Definition 1.12 (Dualität)
Sei p = (p1 , p2 , . . . , pd ) ∈ Rd , dann ist
p∗ = {x ∈ Rd |xd =
d−1
X
pi xi = pd }
i=1
die duale Hyperebene zu p.
Sei h = {x ∈ Rd |xd =
Pd−1
i=1
bi xi = β}, dann ist
h∗ = (b1 , b2 , . . . , bd−1 , β)
der duale Punkt zu h.
Eigenschaften
(p∗ )∗ = p, (h∗ )∗ = h
Beispiel 1.5
p = (1,2), q = (2,3), r = (3,4)
5
"data"
f(x)
4
3
2
1
0
0
0.5
1
1.5
2
2.5
3
3.5
4
Abbildung 1.1: Die Punkte p = (1,2), q = (2,3), r = (3,4)
p∗ = {x ∈ R2 |x2 = 1x1 − 2}
q ∗ = {x ∈ R2 |x2 = 2x1 − 3}
r∗ = {x ∈ R2 |x2 = 3x1 − 4}
Die drei gerade schneiden sich bei Punkt (1, −1). Dessen duale Ebene ist genau die, die
durch die drei Punkte geht.
13
1 Grundlagen
2
f1(x)
f2(x)
f3(x)
1
0
−1
−2
−3
−4
0
0.5
1
1.5
2
Abbildung 1.2: Die dualen Hyperebenen der Punkte p = (1,2), q = (2,3), r = (3,4)
Lemma 1.1
Es gilt für alle p und alle nicht-vertikalen Hyperebenen h:
p∈

+


h
h−


h
gdw h∗ =

∗ +


(p )
(p∗ )−


p∗
Lemma 1.2
Seien p, q und r ∈ R2 , dann sind folgende Aussagen äquivalent:
• Die Punkte p,q und r sind colinear, d. h. liegen auf einer Gerade l
• Die Geraden p∗ , q ∗ und r∗ schneiden sich in einem gemeinsamen Punkt l∗ oder sie
sind alle parallel zueinander, falls l vertikal war.
1.7 Eigenschaften konvexer Mengen
Definition 1.13
Konvexe Menge: Eine Menge K ⊆ Rd heißt konvex, falls für alle p, q ∈ K und alle
λ ∈ [0,1] gilt:
λp + (1 − λ)q ∈ K
Geometrische Interpretation: Wenn zwei Punkte in der Menge liegen, dann muss auch
das verbindende Geradensegment in der Menge liegen.
14
1.8 Konvexe Hüllen von Punktmengen
Beispiel 1.6
Kreis ist konvex, Banane nicht
Fakt
Der Durchschnitt konvexer Mengen ist wieder Konvex.
Definition 1.14
Sei X ⊆ Rd eine Teilmenge. Die konvexe Hülle conv(X) von X ist definiert als der
Durchschnitt aller konvexer Mengen, die X enthalten, d. h.
conv(X) :=
\
C
C⊃X
C konvex
Beispiel 1.7
Das kleinste konvexe Objekt, dass X enthält.
Definition 1.15 (Konvexkombination)
Sei p1 , . . . , pn ∈ Rd , dann heißt
λ1 p1 + λ2 p2 + · · · + λd pd mit λi ≥ 0,
n
X
λi = 1
i=1
eine Konvexkombination von p1 , . . . , pd .
Beispiel 1.8
Jede Kombination liegt innerhalb der von den Punkten aufgespannten konvexen Hülle.
Lemma 1.3
Sei X ⊆ Rd . Die konvexe Hülle stimmt mit der Menge aller endlichen Konvexkombinationen von Punkten von X überein, d. h.
conv(x) = {
X
λp p|S ⊆ X ist endlich und
p∈S
X
λp = 1, λp ≥ 0∀p ∈ S}
p∈S
1.8 Konvexe Hüllen von Punktmengen
Lemma 1.4
Sei X ∈ Rd endlich. Dann gilt:
conv(x) =
\
H
H, so dass X⊆H,H Halbraum
Theorem 1.1 (Separationstheorem)
Seien C und D ∈ Rd zwei konvexe Mengen, mit C ∩D = ∅. Dann existiert eine Hyperebene
h = {x ∈ Rd |aT x = α}, die beide Mengen schwach separiert, d. h. C ⊆ h̄+ und D ⊆ h̄−
15
1 Grundlagen
Fakt
Wenn C und D abgeschlossen sind und wenigstens eine Menge beschränkt ist, so können
beide Mengen stark separiert werden, d. h. C ⊆ h+ und D ⊆ h− .
Lemma 1.5 (Radon)
Sei S ⊆ Rd mit |S| ≥ d + 2. Dann existieren zwei disjunkte Teilmengen A und B ⊆ S, so
dass:
conv(A) ∩ conv(B) 6= ∅
Beispiel 1.9
Wenn im R2 4 Punkte gegeben sind, so können diese so in zwei Teilmengen unterteilt
werden, dass der Schnitt der konvexen Hüllen nicht leer ist.
Theorem 1.2 (Caratheodory)
Falls S ⊆ Rd , p ∈ conv(S) gilt, so existiert eine Teilmenge A ⊆ S mit |A| ≤ d + 1, so dass
p ∈ conv(A).
Theorem 1.3 (Helly)
Seien C1 , . . . , Cn ∈ Rd konvexe Teilmengen und n ≥ d + 1. Wenn sich alle d + 1-Tupel
dieser konvexen Mengen einen nichtleeren Durchschnitt haben, so ist der Durchschnitt
aller dieser Mengen nichtleer, d. h.
n
\
Ci 6= ∅
i=1
1.9 Bälle im Rd
Definition 1.16 (Bälle)
Sei c ∈ Rd , r ∈ R≥0 .
Dann heißt die Menge
16
Bd (c, r) := {x ∈ Rd |kx − ck ≤ r}
2 Voronoi Diagramme & Delaunay
Triangulierung
P ⊂ Rd ist endlich
Definition 2.1 (Nicht-degeneriert)
• Die affine Hülle von Punkten aus P ist homeomorph zu, Rk−1 .
• Keine d + 2 Punkte liegen auf gemeinsamer Sphäre
Bemerkung 2.1
Degenerierte Fälle sind sehr instabil. Im Augenblich nehmen wir immer an, dass P
nicht-degeneriert ist. Später wird die Degeneriertheit explizit behandelt.
Definition 2.2 (Voronoi-Zelle)
p∈P
Vp = {x ∈ Rd |kx − pk ≤ kx − qk
∀q ∈ P }
Definition 2.3 (Bisektor)
p, q ∈ P
Bp,q = {x ∈ Rd |ky − pk = kx − qk}
Folgerung
x ∈ Bp,q ⇔ ky − pk = kx − qk
⇔ ky − pk2 = kx − qk2
⇔ kxk2 − 2xt p + kpk2 = kxk2 − 2xT q + kqk2
1
⇔ (q − p)T x + (kpk2 − kqk2 ) = 0
2
Falls p 6= q: Ursprungsvermeidende Hyperebene
Fakt
• Vp ist der Schnitt von Halbräumen mit Rand Bp,q .
• Vp ist konvex.
17
2 Voronoi Diagramme & Delaunay Triangulierung
Abbildung 2.1: Voronoi-Diagramm
Definition 2.4 (Voronoi-Face)
Ein k-dimensionales Voronoi-Face ist der Schnitt von d + 1 − k Voronoi-Zellen, falls dieser
Schnitt nicht leer ist.
Folgerung
Alle Punkte in einem k-dimensionalen Voronoi-Face (Voronoi k-Face) sind gleich abständig
zu d + 1 − k Punkten in p.
Definition 2.5 (Voronoi-Diagramm)
Zellkomplex, der von den Voronoi-Faces gebildet wird.
Definition 2.6 (Delaunay-Triangulierung)
D(P ) = {σ = conv(T )|
\
Vp 6= ∅}
p∈T ⊆P
Definition 2.7 (Voronoi-Delauny-Dualität)
Wenn k + 1 Voronoi Zellen einen nicht-leeren gemeinsamem Schnitt haben, definieren sie
• k-dimensionalen Delaunay-Simplex
• (d − k)-dimensionales Voronoi-Face.
Delaunay-Simplex und Voronoi-Face sind dual zueinander.
18
Abbildung 2.2: Delaunay-Triangulierung und ihr duales Voronoi-Diagramm
In der Ebene R2 :
Delaunay
Vertex
Kante
Dreieck
Voronoi
Zelle
Kante
Voronoi-Knoten/Vertex
Definition 2.8 (Power-Diagramme)
(p, wp) ∈ P ⊆ Rd × R
πp : Rd → R, x 7→ kx − pk2 − wp
p ist Punkt und wp sein Gewicht. Verallgemeinerung von Voronoi-Diagrammen.
Bild
Falls wp > 0 folgende Interpretation:
Definition 2.9 (Power-Zelle)
(p, wp ) ∈ P
Vp = {x ∈ Rd |πp (x) ≤ πq (x)
∀(q, wq ) ∈ P }
Definition 2.10 (Power-Bisektor)
(p, wp ), (q, wq ) ∈ P
Bp,q = {x ∈ Rd |πp (x) = πq (x)}
Folgerung
x ∈ B( p, q) ⇔ πp (x) = πq (x)
⇔ kx − pk2 − wp = kx − qk2 − wq
⇔ kxk2 − 2xT p + p2 − wp = kxk2 − 2xT q + kqk2 − wq
1
⇔ (q − p)T x + (kpk2 − kqk2 − wp + wq ) = 0
2
Das ist für p 6= q eine Ursprungsvermeidende Hyperebene.
19
2 Voronoi Diagramme & Delaunay Triangulierung
Bemerkung 2.2
Mögliche Anwendung von Power Diagrammen: P = {(p, wp )} Menge von Atomen mit
Zentrum p und Van der Waals-Radius wp .
Definition 2.11 (Power-Faces)
Genauso wie Voronoi-Faces
Definition 2.12 (Power-Diagramm)
Komplex der von den Power Faces gebildet wird.
Gewichtete Delaunay Triaungulierung dual zum Power Diagramm (genauso wie Delaunay
dual zu Voronoi)
2.1 Berechnung von Delaunay Triangulierungen in der Ebene
Definition 2.13 (Umschreibender Ball eines Simplex)
Ball der alle Knoten des Simplex auf seinem Rand hat.
Beobachtung
Der umschreibende Ball für einen d-Simplex im Rd ist eindeutig.
Definition 2.14 (lokale Delaunay-Eigenschaft)
Sei T eine Triangulierung von P , wobei P eine ungewichtete Punktemenge im R2 sei. T
hat die lokale Delaunay-Eigenschaft falls jede Kante der Triangulierung entweder
1. eine inzidentes Dreieck hat. (D. h. Kante ist auf dem Rand der komplexen Hülle
von T )
2. Kante hat 2 inzidente Dreiecke abc und bcd hat, so dass der umschreibende Ball
von abc den Punkt d nicht enthält.
Satz 2.1
Wenn in einer Triangulierung T von P jede Kante die lokale Delaunay-Eigenschaft hat,
dann ist T eine Delaunay-Triangulierung.
Folgerung
Algorithmus der versucht, die lokale Delaunay-Eigenschaft herzustellen, indem er verletzende Kanten flipt.
Beweis:
Idee: Für jedes Dreieck abc in der Triangulierung gilt: Die umschließende Kreisscheibe
enthält keinen Punkt von P im Innern.
Voronoi-Vertex:
1. Schnitt der Voronoi-Zellen von a, b, c nichtleer
20
2.1 Berechnung von Delaunay Triangulierungen in der Ebene
Abbildung 2.3: lokale Delaunay-Eigenschaft
2. abc (Konvexe Hülle von a, b und c) ist Delaunay
Sei p ∈ P \{a, b, c} und q beliebig in Umkreisscheibe. Das Liniensegment qp schneidet Dreiecke t1 , t2 , . . . , tk der Triangulierung. Dazu folge von gewichteten Punkten S1 , S2 , . . . , Sk
mit Gewichten w1 , w2 , . . . , wk wi = Radius der Umkreisscheibe von ti Damit ergeben
sich eine Folge von Power-Abständen Π1 (p), . . . , Πk ()
wo kommen die
Sks her?
Beobachtung
1. Der Power-Abstand ist
• negativ, falls innerhalb der Kreisscheibe
• 0, falls auf Rand der Kreisscheibe
• positiv, falls außerhalb der Kreisscheibe
2. auf der geraden der gemeinsamen Kante von ti und ti+1 gilt Πi = Πi+1 . (Wegen
Πi (x) = Πi+1 (x) = Πi (y) = Πi+1 (y) = 0) Außerdem gilt Πi < Πi+1 links vom
Power-Bisektor bzw. Πi < Πi+1 rechts vom Power-Bisektor.
21
2 Voronoi Diagramme & Delaunay Triangulierung
3. p ist Knoten von tk . Daraus folgt Πk (p) = 0 → Πk+1 (p) > 0 → Π1 (p) > 0. Das
bedeutet p ∈
/ Umkreisscheibe von t1 = abc
wieso folgt das?
Aus Punkt 3 der Beobachtung folgt also die Behauptung.
Lawson-Flip Wann immer bc nicht die lokale Delaunay-Eigenschft hat, dann “flippen”
der Kante zu ad. d. h. in Triangulierung tauschen wir die Dreiecke abc und bcd aus durch
abd und adc.
Der Lawson-Flip-Algorithmus muss entscheiden, ob bc die lokale Delaunay-Eigenschaft
hat, d. h. ob d in der Umkreisscheibe von abc enthalten ist. Dazu benötigt man den
IN_CIRCLE_TEST.
Satz 2.2 (Lifted Circle Claim)
Dazu Hochhebungsabbildung:
h : R2 → R3
(x, y) 7→ (x, y, x2 + y 2 )
Seien p, q, r ∈ R2 .
22
2.1 Berechnung von Delaunay Triangulierungen in der Ebene
s ∈ R2 ist
1. auf dem Rand der umschließenden Kreisscheibe genau dann, wenn h(s) ∈ aff(h(p), h(q), h(r))
gilt
2. Innerhalb der Kreisscheibe, falls h(s) Vertikal unterhalb von aff(h(p), h(q), h(r))
liegt.
3. Außerhalb der Kreisscheibe sonst
Beweis:
Spezialfall: Der Mittelpunkt der Kreisscheibe von p, q und r ist Ursprung.
Beobachtung
1. dritte Komponente des gelifteten Punktes ist der quadratische Abstand des Punktes
vom Ursprung
2. p, q und r haben alle den gleichen Abstand zum Ursprung → aff(h(p), h(q), h(r))
ist Ebene parallel zur x, y-Ebene, die das Parabol in einem Kreis schneidet
Sei s Punkt auf dem Rand der umschließenden Kreisscheibe von p, q und r








sx
px
qx
rx
 s

 p

 q

 r









y
y
y
y
 = λ 2
 + µ 2
 + ρ 2

 2
2
2
2
2
sx + sy 
px + py 
qx + qy 
rx + ry 
1
1
1
1
λ, µ, ρ ∈ R Verwendung von Homogenen Koordinaten um die Bedingung λ + µ + ρ = 1
sicherzustellen.
Allgemeiner Fall: Der mittelpunkt der Kreisscheibe von p,q und r ist t 6= 0. Translation
der Konfiguration mit t.
sx + tx
px + tx
qx + t x






sy + ty
py + ty
qy + t y







 =λ 
 + µ

2
2
2
2
2
2
(sx + tx ) + (sy + ty ) 
(px + tx ) + (py + ty ) 
(qx + tx ) + (qy + ty ) 
1
1
1






rx + tx


ry + ty


+ρ 

(rx + tx )2 + (ry + ty )2 
1


Nachrechnen der dritten Komponente:
2sx tx + t2x + 2sy ty + t2y =λ(2px tx + t2x + 2py ty + t2y ) + µ(2qx tx + t2x + 2qy ty + t2y )+
ρ(2rx tx + t2x + 2ry ty + t2y )
23
2 Voronoi Diagramme & Delaunay Triangulierung
daraus folgt
sx tx + sy ty =λ(px tx + py ty ) + µ(qx tx + qy ty ) + ρ(rx tx + ry ty )
=tx (λpx + µqx + ρrx ) + ty (λpy + µqy + ρry )
=tx sx + ty sy
h(s + t) ∈ aff(h(p + t), h(q + t), h(r + t))
Daraus folgt die Behauptung, da s beliebig auf Rand gewählt war.
Berechnung des IN_CIRCLE-Prädikats durch die Determinante:
1 p x
1 q
x
Γ =
1 rx
1 s x
py p2x + p2y qy qx2 + qy2 ry rx2 + ry2 sy s2x + s2y Determinante verschwindet genau dann, wenn s im Rand der umschließenden Kreisscheibe
von p,q und r ist. (Die Determinante ist 0, wenn die Punkte affin abhängig sind.)
1 p
x
∆ = 1 qx
1 rx
py qy ry Mit der Matrix ∆ heben sich Vorzeichenwechsel der Determinante bei Permutation
gegenseitig auf.
Lemma 2.1
Ein Punkt s ∈ R2 liegt im Inneren der umschließenden Kreisscheibe von p, q und r genau
dann, wenn das Produkt aus ∆ und Γ negativ ist. (∆Γ < 0)
Beweis:
Spezialfall: p = (0,0), q = (1,0), r = (0,1) und s = ( 41 , 14 ) Damit ist ∆ = 1 und Γ < 0
Idee der stetige Bewegung:
Führe p, q, s und r stetig von Situation in Spezialfall über, wobei degenerierte Situationen
vermieden werden müssen. Dies funktioniert wegen der Stetigkeit der Determinante. 24
2.1 Berechnung von Delaunay Triangulierungen in der Ebene
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Input: T Triangulierung
Output: Delaunay-Triangulierung
foreach Kante e ∈ T do
Markiere e
PUSH e auf den Stack s
end
while S 6= ∅ do
(b, c) = S.pop()
entferne Markierung von (b, c)
if (b, c) hat nicht die lokale Delaunay-Eigenschaft then
FLIP (b, c) zu (a, d)
for (x, y) ∈ {ac, cd, db, ba} do
if (x, y) nicht markiert ist then
markiere (x, y)
S.push(x,y)
end
end
end
end
Algorithm 2.1: Der Lawson-Flip-Algorithmus
2.1.1 Lawsons-Flip-Algorithmus
Idee: Wenn immer eine Kante bc nicht die lokale Delaunay-Eigenschaft hat, dann „Flip“
zu ab
Satz 2.3
Der Lawson-Flip-Algorithmus terminiert
Beweis:
Beobachtung
Bei jedem Flip bleibt die Anzahl der Dreiecke in der Triangulierung die gleiche.
Definition 2.15
Gewicht von Triangulierung T (= w(T )) ist der Vektor aller Winkel, die in T auftreten,
aufsteigend geordnet.
T < T 0 falls w(T ) < w(T 0 ) (Lexikographischer Vergleich), w(T ) der Winkelvector
Behauptung
w(t) < w(T 0 ) falls T 0 aus T durch einen Flip entsteht.
w(T ) = α1 + α2 , β1 , β2 , γ1 + γ2 , δ1 , δ2
w(T 0 ) = α1 , α2 , β1 + β2 , γ1 , γ2 , δ1 + δ2
25
2 Voronoi Diagramme & Delaunay Triangulierung
Um zu zeigen w(T ) < w(T 0 ) benutzen wir den Satz von Thales.
versteh das
nicht.. evtl.
Fehler beim abschreiben?
αe > αd = αc > αf
Kante: qc : β1 < δ2 bc : γ2 < δ1 dc : β2 < α1 bd : γ1 < α2
=> β1 , β2 < β1 + β2 γ2 < δ1 β1 < δ2 γ1 , γ2 < γ1 + γ2 γ1 < α2 β2 < α1
D. h. für jeden Winkel aus w(T ) gibt es einen größeren n w(T 0 ). Da die Anzahl der
Triangulierungen endlich und das Maß immer ansteigend ist folgt daraus, dass der
Algorithmus terminiert.
Satz 2.4 (Thales)
Der Mittelpunktswinkel ist doppelt so groß wie der Umfangswinkel.
Beweis:
Zuerst der einfache Basisfall bei dem der Mittelpunkt auf der Linie liegt: Da die Dreiecke
gleichschenklig sind, gilt für das Dreieck amc: 2x + Π − 2α = Π. Daraus folgt x = α.
Der Fall, dass der Mittelpunkt im Dreieck enthalten ist: γ + β = α
26
2.2 Konvexe Hülle in der Ebene R2
Der Fall, das der Mittelpunkt nicht enthalten ist: β + x = 2β + 2γ. Daraus folgt wieder
x = γ.
Der Trick in beiden Fällen: Betrachte Diagonale durch Punkt m und argumentiere danach
mit dem Basisfall.
2.2 Konvexe Hülle in der Ebene R2
P ⊂ R2 : Konvexe Hülle ist der Schnitt aller konvexen Mengen, die P enthalten.
Definition 2.16
Extrempunkte sind Punkte aus P auf dem Rand der konvexen Hülle.
Das algorithmische Ziel ist das Aufzählen der Extrempunkte entlang des Randes der
Konvexen Hülle von P. Dazu benötigen wir das Prädikat IS_LEFT_OF(p, q, r) das uns
sagt, ob r links von (auf, rechts) der geraden durch p und q liegt.
Kurze Kostenanalyse:
Finden des lexik. kleinsten Elements + h ∗ (n − 2) ∗ IS_LEFT_OF
h ist die Anzahl der Extrempunkte. Das bedeutet der Jarvis-Wrap-Algorithmus ist OutputSensitiv, d. h. Laufzeit hängt von Anzahl der Extrempunkte ab.
27
2 Voronoi Diagramme & Delaunay Triangulierung
Abbildung 2.4: IS_LEFT_OF-Prädikat
1
2
3
4
5
6
7
8
9
10
11
12
Input: P ⊂ R2
Output: Extrempunkte auf dem Rand der konvexen Hülle
p := Lexikographisch kleinster Punk in P
p0 := p
repeat
q := beliebiger Punkt in P \ {p}
forall r ∈ P \ {p, q} do
if IS_LEFT_OF(p, q, r) then
q := r
end
end
Ausgabe von q
p := q
until p = p0
Algorithm 2.2: Der Jarvis-Wrap-Algorithmus
28
2.2 Konvexe Hülle in der Ebene R2
Implementierung des IS_LEFT_OF-Prädikats
Falls r ∈ aff(p, q):






qx
px
rx
 
 
 
ry  = λ py  + µ qy 
1
1
1
daraus folgt: p,q und r sind linear abhängig. Das bedeutet, die folgende Determinante ist
0.
1 p
x py ∆ = 1 qx qy = 0
1 rx ry Aus dem stetigen Bewegungs-Argument (z. B. mit Punkten p = (1,0), q = (0,1) und
r = (0,0)) folgt: r ist links von der affinen Hülle, falls ∆ > 0. Argument folgt aus der
Stetigkeit der Determinante.
2.2.1 Graham Scan Algorithmus
Halbkanten-Datenstruktur:
Kante zwischen p und q wird gespeichert als zwei Halbkanten.
Definition 2.17 (Halbkanten-Datenstruktur)
Jede Kante besteht aus zwei Einzelkanten. Jede Einzelkante erhält previous und next.
Die Halbkantendatenstruktur eigent sich für die Darstellung planarer Graphen.
1
2
3
4
Input: P ⊂ R2 , P = {p1 , p2 , . . . , pk }
Output: Triangulierung und konvexen Hülle
Sortiere {p1 , . . . , pk }lexikographisch
verbinde alle pi pi+1 mit Kanten
berechne untere konvexe Hülle LowerHull(p)
berechne obere konvexe Hülle UpperHull(p)
Algorithm 2.3: Der Graham-Scan-Algorithmus
Lower Hull(P), |P | = n, P ⊂ R2
Die Laufzeit ist O(n log n), da am Anfang die Punkte sortiert werden müssen.
Untere Schranke:
Konvexe Hülle würde die Zahlen a1 , . . . , an sortieren. Damit ist die untere Schranke
Ω(n log n) wenn n Punkte auf der konvexen Hülle liegen.
29
2 Voronoi Diagramme & Delaunay Triangulierung
Abbildung 2.5: Halbkanten-Datenstruktur
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
a : a[0, . . . , n] Array mit n + 1 Elementen
a[0] := p1
for i = 1 TO n do
a[i] := pi
end
i := 1
while i < LEN GT H(q) − 1 do
if IS_LEF T _OF (a[i], a[i + 2], a[i + 1]) then
Remove(a,i+1)
i := i − 1
else
i := i + 1
end
end
for i = 1 TO Length(a) do
Output a[i]
end
Algorithm 2.4: LowerHull(P ), |P | = n, P ⊂ R2
30
2.3 Berechnung von Voronoi-Diagrammen in der Ebene
2
drehe Reihenfolge von p1 , . . . , pk um
LowerHull(p)
Algorithm 2.5: UpperHull(P )
1
Input: a1 , . . . , an ∈ R ≥ 0; a ≥ 0
Output: Zahlen in sortierter Reihenfolge -> Ω(n log n)
konstruiere Punkte pi := (ai , a2i )
berechne die Konvexe Hülle
Algorithm 2.6: Sortieren mit konvexen Hüllen
1
2
2.3 Berechnung von Voronoi-Diagrammen in der Ebene
Komplexität eines Voronoi-Diagramms in der Ebene:
Lemma 2.2
Wenn kpk = n ≥ 3 ist, so gibt es höchstens 2n−5 Voronoiknoten und 3n−6 Voronoikanten.
(in der Ebene)
Beweis:
Eulers Formel für planare Graphen:
mkn − mka + mF = 2
hier (unendlichen Knoten einfügen und alle Knoten auf der konvexen Hülle damit
verbinden.):
(nKn + 1) − nKa + n = 2
Summe aller Knotengrade:
2 · nKa ≥ 3(nKn + 1)
, da jeder Knoten mindestens Grad 3 hat.
daraus folgt:
3
(nKn + 1) + n = 2 + nKa ≥ 2 + (nKn + 1)
2
1
n ≥ 2 + (nKn + 1)
2
2n − 5 ≥ nKn
Analog folgt 3n − 6 ≥ nKa
31
2 Voronoi Diagramme & Delaunay Triangulierung
Abbildung 2.6: sweep line
Abbildung 2.7: beach line
32
2.3 Berechnung von Voronoi-Diagrammen in der Ebene
Abbildung 2.8: Punkt-Event
2.3.1 Sweep Line Paradigma
1. Punkt-Event: Sweepline trifft auf einen Punkt aus P .
a) Ein neuer Parabelbogen kommt zur beach line hinzu
b) Neue Voronoikanten werden in ihrem Verlauf beschrieben
Daraus folgt: Es gibt maximal 2n − 1 Parabelbogen auf beachline.
2. Kreis-Event: In dem Moment, in dem a0 verschwindet, gehen alle drei Parabelbögen
a0 , a00 und a000 durch einen gemeinsamen Punkt q. Dieser ist ein neuer Knoten im
Voronoi-Diagramm, da der offene Kreis K mit Mittelpunkt q leer ist.
Lemma 2.3
Ein neuer Parabelpunkt kann auf der beach line nur durch ein Punkt-Event entstehen.
Lemma 2.4
Ein Parabelbogen kann von der beach line nur durch ein Kreis-Event verschwinden.
1. Datenstrukturen für das schon konstruierte Voronoi-Diagramm
• Halbkantendatenstruktur
2. Datenstruktur für die beach line
• ausbalancierten Binärbaum, wobei die Blätter die Parabelbögen darstellen
• Schnittpunkte benachbarter Parabelbögen können durch interne Knoten dargestellt werden
3. Datenstruktur für die Events
• Prioritätswarteschlange
• füge am Anfang alle Punktevents ein.
• füge Kreis-Events hinzu, sobald klar ist, wann sie stattfinden (ist Berechenbar
bei Punkt-Event)
33
2 Voronoi Diagramme & Delaunay Triangulierung
Bemerkung 2.3
Laufzeit pro Punktevent: log n
Laufzeit pro Kreisevent: konstante Zeit
Insgesamt: O(n log n)
2.4 Inkrementeller Algorithmus zur Berechnung der
Delaunay-Triangulierung von P ⊂ R2
P = {p1 , . . . , pn }, S1 = {p1 }, Sn = {p1, . . . , pn } = P, Pi = {1, . . . , pi }
Seien Di = D(Si ) die Delaunay-Triangulierung von Si
Annahme: x, y, z ∈ R2 mit {x, y, z} ∩ P = ∅ , so dass P ⊂ CONV{x, y, z} und Radius der umschließenden Kreisscheibe von xyz >> max{kpi − pj k|pi , pj ∈ P }∀i =
1, . . . , n.
D0 = D(x, y, z) Delaunay-Triangulierung von x,y,z.
1. Einfügen in Dreieck, dass p2 enthält
2. „Splitten“ des Dreiecks
3. Herstellen der lokalen Delaunay-Eigenschaft für alle Kanten
1
2
3
4
5
6
7
Input: P ⊂ R2
Output: Delaunay-Triangulierung
for i=1 TO n do
FIND σi−1 IN Di−1 WITH pi ∈ σi−1
ADD pi by splitting σi−1
while ∃ Edge bc WITHOUT „lokale Delaunay-Eigenschaft“ do
Flip bc to ad
end
end
Algorithm 2.7: Inkremententeller Algorithmus für Delaunay-Triangulierung
Der Algorithmus ist in 2 Teilprobleme unterteilt: Das Lokalisierungsproblem in Zeile 2 und
das Update-Problem in Zeile 3-6. Das Update besteht aus einer Split-Operation (genannt
„1-3-Flip“) und mehreren Flip-Operationen (genannt „2-2-Flip“).
34
2.4 Inkrementeller Algorithmus zur Berechnung der Delaunay-Triangulierung von P ⊂ R2
Abbildung 2.9: D0 , D1 und D2
Anzahl von Flips im Verlauf des Algorithmus
Lemma 2.5
Sei σ ∈ Di ∈
/ Di−1 , dann hat σ den Punkt pi als einen seiner Knoten.
Beweis:
Da σ Delaunay-Dreieck enthält die Umkreisscheibe keinen Punkt von Si im Innern. Da
Si−1 ⊂ Si gilt das gleiche für Si−1 , d. h. falls pi kein Knoten von σ ist, dann σ ∈ Di−1 .
Daraus folgt: pi Knoten von σ.
Definition 2.18
• Sei p Knoten von Triangulierung T . Der Stern (Star) von p sind alle Dreiecke in T ,
die inzidient sind zu p.
• Der Link von P sind alle Kanten im Stern von p, die nicht zu p inzident sind.
1. Nur die Dreiecke im Stern von pi können durch Flip-Operationen beim einfügen von
pi in Di−1 entstanden sein. Die Anzahl der Flip-Operationen ist ≤ 12 GRAD(pi ),
wobei GRAD(pi ) = die Anzahl der Kanten inzident zu pi in Di ist. Jeder Flip
erzeugt ein neues Dreieck inzident zu pi
2. Nach jeder Operation müssen wir immer nur die noch nicht geprüften Kanten im
Link von pi auf die lokale Delaunay-Eigenschaft prüfen.
Beispiel 2.1
Kaskadierender Flip, d. h. es reicht nicht nur die Kanten des Dreiecks in das pi eingefügt
wurde auf die lokale Delaunay-Eigenschaft zu prüfen.
GRAD(pi ) ≤ i − 1, d. h. höchstens
i−1
2
Flips beim Einfügen von pi .
Faustregel und Trick: Wenn immer die Auswahl in einem Algorithmus beliebig ist, dann
treffe die Entscheidung zufällig. In diesem Fall bedeutet das, dass wir die Reihenfolge der
Punkte p1 , . . . , pn zufällig wählen.
Jetzt müssen nur noch die erwartete Anzahl von Flip-Operationen beim Einfügen von pi
bestimmt werden.
35
2 Voronoi Diagramme & Delaunay Triangulierung
Abbildung 2.10: kaskadierender Flip
Beobachtung
1. Bei zufälliger (gleichverteilt) Einfügereihenfolge hat jeder Punkt die gleiche Wahrscheinlichkeit als letzter eingefügt zu werden.
2. Gesamtanzahl von Flips über alle Einfügereihenfolgen von i Punkten:
i
X
GRADi (pj )
j=1
Wobei GRADi (pj ) der Knotengrad von pj in Di ist.
3.
j=1 GRADi (pj )
Pi
= 2 # Kanten in Di
4. Für die Anzahl der Kanten in Di gilt die Eulerformel:
Anzahl der Knoten v − Anzahl der Kanten e + Anzahl der Dreiecke f = 2
Für Delaunay-Triangulierungen gilt außerdem folgendes:
3f = 2(e − h) + h = 2e − h, h ist die Anzahl der Kanten auf Rand von Di
Daraus folgt:
1
2
f = e− h
3
3
Durch einsetzen in die Euler-Formel erhält man nun
2
1
v−e+ e− h=2
3
3
Daraus folgt:
Aus 1-4 folgt:
e = 3v − h − 6
1
Gesamtanzahl von Flips ≤ (2 · 3i − 9) ≤ 3i
2
Daraus folgt die durchschnittliche Anzahl von Flips ≤ 3.
36
2.4 Inkrementeller Algorithmus zur Berechnung der Delaunay-Triangulierung von P ⊂ R2
Abbildung 2.11: Delaunay-Graph beim Flip
Abbildung 2.12: Delaunay-Graph beim Split
Aufwand für das Punktlokalisierungsproblem
Datenstruktur für die Punktlokalisierung ist der Delaunay-Graph: Gerichteter, azyklischer
Graph. Abgeleitet aus Split und Flip. Knoten des Graphen sind alle Dreiecke, die im
Verlauf des inkrementellen Algorithmus auftauchen.
Bemerkung 2.4
Beweis der Eulerformel: v − e + f = 2
1. 1-Skelett der Delaunay-Triangulierung. (D. h. der planare Graph der DelaunayKanten und Vertices.)
2. 1-Skelett enthält minimalen Spannbaum von P .
Für den Spannbaum gilt:
v = |p| = n
e=n−1
f =1
Das bedeutet für diesen Fall gilt die Eulerformel.
Induktion: Durch Einfügen von Delaunay-Kanten in den Spannbaum gilt:
v →v+1
f → f + 1 , weil jede neue Kante ein Gebiet teilt
37
2 Voronoi Diagramme & Delaunay Triangulierung
v→v
Damit gilt die Eulerformel.
Randomisierte Analyse:
Sei p1 , . . . , pn zufälige Reihenfolge der Punke in P . D0 , . . . , Dn folge von DelaunayTriangulierungen.
D0 = xyz Großes Dreieck, das alle Punkte in P enthält.
Di entsteht durch Di−1 durch
1. split-Operation: σ ∈ Di−1 das Dreieck in Delaunay-Triangulierung von p1 , . . . , pi−1 ,
das P enthält. (1-3-Flip)
2. Flip-Operationen: 2-2-Flip
Abbildung 2.13: 2-2-Flip
Punktlokalisation durch gerichtete, nicht-zyklische Graphen
38
2.4 Inkrementeller Algorithmus zur Berechnung der Delaunay-Triangulierung von P ⊂ R2
Abbildung 2.14: 1-3-Flip
39
2 Voronoi Diagramme & Delaunay Triangulierung
1. Erwartete Größe, des Graphen.
1 +
|{z}
Dreieck
3n
|{z}
+
|3 ∗{z2n}
Einfügen von n Punkten, Jeder Flip erzeugt 2 neue
also n Split-Operationen, Dreiecke, Pro Runde erwarjeder Split erzeugt 3 neue tet drei Flips, n Punkte
Dreiecke
D. h. Punktlokalisierungsdatenstruktur braucht Speicher O(n)
2. Erwartete Laufzeit
Im Schritt i einfügen von pi . D. h. wir suchen σ ∈ Di−1 mit pi ∈ σi . Für Suche
starten wir in xyz und gehen dann zu Kind, das pi enthält.
IN_TRIANGLE Prädikat:
pi ∈ abc falls pi auf gleicher Seite von aff(a, b) wie c, von aff(b, c) wie a, von aff(c, a) wie
b.
Azyklische Graph zerfällt in Schichten. Eine Schicht für jede Runde. Betrachte jte Schicht
0 < j < i − 2. Auf dieser Schicht sind Dreiecke von Dj gespeichert.
Seien Gj die Dreiecke in Dj , die beim Einfügen von pj+1 zerstört werden.
Seien Hj die Dreiecke in Dj , die beim Einfügen von pi in Dj zerstört werden.
Beobachtung
Falls Gj ∩ Hj = ∅, dann ist σj+1 = σj , wobei σj ∈ Dj , σj+1 ∈ Dj+1 die Dreiecke sind,
die pi enthalten.
Sei Xj = Gj ∩ Hj , der Aufwand von σj nach σj+1 zu gehen ist höchstens proportional zu |Xj |. (Durchlaufen von Dreiecken, die durch Flip-Operationen erzeugt werden.)
Wir müssen |Xj | abschätzen.
Sei D̂j die Delaunay-Triangulierung von p1 , p2 , . . . , pj , pi . Seien Zj die Dreiecke in D̂j ,
die durch Einfügen von pj+1 zerstört werden.
Symbolische Darstellung:
Seien Yj die Dreiecke inzident zu pi , die beim Einfügen von pj+1 in D̂j zerstört werden
Xj = Hj (Zj Yj )
|Xj | = |Hj | − (|Zj | − |Yj |)
40
2.4 Inkrementeller Algorithmus zur Berechnung der Delaunay-Triangulierung von P ⊂ R2
Abbildung 2.15: Symbolische Darstellung der Variablen
Beachte: Yj ⊆ Zj und Zj Yj ⊆ Hj
Erwarteter Suchaufwand ist:
E[
i−2
X
|Xj |] =
i−2
X
j=1
j=1
E[|Xj |] =
i−2
X
E[|Hj |] −
j=1
i−2
X
E[|Zj |] +
i−2
X
E[|Yj |]
j=1
j=1
Hj : Anzahl der zerstörten Dreiecke beim Einfügen von zufälligen Punkt in die DelaunayTriangulierung von j Punkten.
Zj : Anzahl der zerstörten Dreiecke beim Einfügen eines zufälligen Punktes in die DelaunayTriangulierung von j + 1 Punkten.
E[|Hj+1 |] = E[|Zj |]
E[
i−2
X
|Xj |] = E[|H0 |] − E[|Hi−1 |] +
j=1
E[|H0 |] = 3, E[|Hi−1 |] = 4 => E[
i−2
X
E[|Yj |]
j=1
i−2
X
|Xj |] ≤
j=1
i−2
X
E[|Yj |]
j=1
Es bleibt E[|Yj |] zu bestimmen. Dazu: Erwartete Anzahl zerstörter Dreiecke beim Einfügen
von pj+1 in D̂j :
1 (Split) + 3 (Flips) = 4
In Yj interessieren uns nur Dreiecke in D̂j , die inzident zu pi sind. Die Wahrscheinlichkeit
3
für ein Dreieck in D̂j inzident zu pi zu sein ist ≤ j+1
.
41
2 Voronoi Diagramme & Delaunay Triangulierung
Daraus folgt:
E[|Yj |] ≤
E[
i−2
X
|Xj |] ≤ 12
j=1
12
3
=
4
j+1
j+1
i−1
X
1
j
+
1
j=1
≤ 12Hi ≤ 12 log(i + 1)
≤
n
X
12 log(i + 1)
i=1
≤ 12n log n + 1 ∈ O(n log n) (Gesamte Suchzeit)
2.5 (Unendliche) Gleitkommazahlsysteme
Gβ,t mit β, t > 1 natürliche Zahl ist Gleitkommezahlsystem.
Gβ,t = {y = σmβ e−t |σ ∈ {−1, +1}, β t−1 ≤ m < β t − 1, e ∈ Z} ∪ {0}
β: Basis des Systems t: Genauigkeit (Precision)
σ: Vorzeichen
m: Mantisse
e: Exponent
Gleitkommazahl Approximation: x ∈ R : F l(x) = arg miny∈Gβ,t |x − y|. Falls |F l(x)| = 2,
d. h. zwei nächste Gleitkommezahlen, dann immer diejenige näher an Null als approximation.
Lemma 2.6
Sei µ = 12 β 1−t Dann gilt:
1. F l(x) = x(1 + δ), mit |δ| < µ
2. λ = F l(x)(1 + δ 0 ), mit |δ 0 | < µ
(Der relative Approximationsfehler ist immer beschränkt durch µ)
Beweis:
Annahme x > 0. Dann können wir schreiben x = µβ e−t mit β t−1 ≤ µ < β t − 1, wobei
µ ∈ R.
Dann y1 = bµcβ e−t , y2 = dµeβ e−t ∈ Gβ,t
1
1
|F l(x) − x| ≤ min{x − y1 , x − y2 } ≤ (y2 − y1 )/2 = (bµc − dµe) ≤ β e−t
2
2
42
2.5 (Unendliche) Gleitkommazahlsysteme
Daraus:
|
1 e−t
β
F l(x) − x
1 1
1
| ≤ 2 e−t ≤
= β 1−t = u
x
µβ
2 β t−1
2
Die Ungleichung ist nur dann eine Gleichung, wenn µ = β t−1 , aber dann |F l(x) − x| = 0,
d. h. wir haben immer
F l(x) − x
<u
x
Daraus folgt für F l(x) = x(1 + δ)
|δ| = |
x(1 − δ) − x
|<u
x
Die zweite Behauptung folgt analog.
Es gibt 2 Arten von Approximationsfehlern:
1. relativ: | F l(x)−x
|
x
2. absolut: |F l(x) − x|
Notation:
1. a = b ± c heisst a ∈ [b − |c|, b + |c|]
2. a ± b = c ± d falls [a − |b|, a + |b|] ∈ [c − d, c + d]
Gleitkommazahlenoperationen: ⊕, , ⊗
x, y ∈ Fβ,t , dann ist
x ~ y = F l(x ∗ y), ∗ ∈ +, −, ×
Bemerkung 2.5
Das ist Definition, die von fast aller moderner Hardware befolgt wird.
Korollar zu Lemma:
1. x ⊕ y = x + y ± u|x + y|
2. x y = x + y ± u|x − y| = x − y ± ||x| + |y||
3. x ⊗ y = xy ± |xy|
43
2 Voronoi Diagramme & Delaunay Triangulierung
2.6 Gleitkommazahlapproximation von Geometrischen
Prädikaten
Beispiel: IS_LEFT_OF(p,q,r)
1 p
x py Implementiert als 1 qx qy > 0
1 rx ry 1 p
x py 1 qx qy = (rx − px )(ry − qy ) + (py − ry )(rx − qx )
1 rx ry Annahme: px , py , qx , qy , rx , ry ∈ Gβ,t (In der Praxis: Koordinaten sind ganze Zahlen in
Gβ,t )
Ausdrücke:
reelle Ausdrücke
w1 = rx − px
w2 = ry − qy
w3 = py − ry
w4 = rx − qx
w5 = w1 w2
w6 = w3 w4
w7 = w5 + w6
Gleitkommazahl-Ausdrücke
a1 = rx px
a2 = ry qy
a3 = py ry
a4 = rx qx
a5 = a1 ⊗ a2
a6 = a3 ⊗ a4
a7 = a5 ⊕ a6
1.
ai = wi ± u|wi |
aus obigem Lemma.
2.
a1 a2 = (w1 ± u|w1 |) · (w2 ± u|w2 |)
= w1 w2 ± uw1 |w2 | ± uw2 |w1 | ± u2 |w1 w2 |
= w1 w2 ± (2u + u2 )|w1 w2 |
Genauso für a3 a4 .
3.
a5 = a1 ⊗ a2 = a1 a2 ± u|a1 a2 | (Lemma und def. der Gleitkommazahlen)
= w5 ± (2u + u2 )|w5 | ± u|w5 ± (2u + u2 )|w5 ||
= w5 ± (3u + 3u2 + u3 )|w5 |
Genauso für a6
44
2.7 Degeneriertheit - Symbolische Pertubierung
4.
a7 = a5 ⊕ a6
= a5 + a6 ± u|a5 + a6 |
= w5 ± (3u + 3u2 + u3 )|w5 | + w6 ± (3u + 3u2 + u3 )|w6 | ± ((3u + 3u2 + u3 )(|w5 | + |w6 |))
= w5 + w6 ± (3u + 3u2 + u3 )(|w5 | + |w6 |) ± (3u2 + 3u3 + u4 )(|w5 | + |w6 |) ± u(|w5 | + |w6 |)
= w5 + w6 ± (4u + 6u2 + 4u3 + u4 )(|w5 | + |w6 |)
= w7 ± (4u + 6u2 + 4u3 + u4 )(|w5 | + |w6 |) = ϕ
Das Ergebnis ist ein reeler Ausdruck plus die Abschätzung für den Fehler.
Sei a Wert von Gleitkommazahlausdruck, dann falls a > ϕ → w > 0, falls a < −ϕ →
w<0
Bemerkung 2.6
Sei B = max{px , py , qx , qy , rx , ry }. Dann gilt |ϕ| ≤ (4u + 6u2 + 4u3 + u4 )8B 2 . Das kann
vorberechnet werden.
Beobachtung
1. Wenn x ∈ Z, dann ist F l(x) ∈ Z
2. Falls |ϕ| < 1, dann a ∈ (−|ϕ|, |ϕ|). Daraus folgt w = 0, da w ∈ Z angenommen und
Eingabekoordinaten aus Z angenommen und alle Operationen +, −, x abgeschlossen
in Z.
2.7 Degeneriertheit - Symbolische Pertubierung
Bei theoretischer Analyse der Algorithmen immer Annahme von allgemeiner Lage, d. h.
in der Ebene
1. keine drei Punkte auf gemeinsamer Geraden
2. keine vier Punkte auf gemeinsamen Kreisrand.
Vier Punkte auf Kreisrand führt zu Vierecken im Delaunay-Komplex. Es ist also keine Triangulierung mehr. Vielecke können wir immer Triangulieren, aber wie?
Degeneriertheit kann mit zufälligem Verwackeln (= Verrauschen, Pertubieren) der Eingabe
aufgehoben werden. Da man die Eingabe aber nur ungern verändern will, werden wir mit
symbolischen Pertubieren arbeiten.
Eingabe: Punktmenge P = {p1 , . . . , pn } ∈ R2 bzw. (X1 , . . . , Xn ) ∈ R2n
Mit Pix = X2i−1 und Piy = X2i .
Für {i, j, k} ∈
[n]
3 ,
d. h. dreielementige Teilmengen von {1, . . . , n}.
Folgende Funktion: ti,j,k : R2n → R
45
2 Voronoi Diagramme & Delaunay Triangulierung
Frage: Wie ε > 0 wählen? Antwort: Gar nicht, sondern symbolisch pertubieren.
1. Im Vergleich zum nicht pertubierten Prädikat müssen wir jetzt im schlimmsten
Fall vier Determinanten berechnen.
2. Falls Eingabe nicht degeneriert, ergibt pertubiertes Prädikat genau das gleiche
Ergebnis wie das Unpertubierte.
In welche Richtung die Entscheidung aufgelöst wird, hängt von der Reihenfolge der
Punkte ab.
2.8 3D Delaunay-Triangulierung für gewichtete Punkte
Gewichteter Punkt: (p, wp ) ∈ R3 × R
Powerabstand zum gewichteten Punkt: πp (x) = kx − pk2 − wp
Abbildung 2.16: Graph der Abstandsfunktion
Abbildung 2.17: Graph der quadratischen Abstandsfunktion
Beobachtung
Nicht alle Eingabepunkte sind Knoten in der Delaunay-Triangulierung. Das tritt genau
dann auf, wenn die zugehörige Powerzelle leer ist.
Ein gewichteter Punkt ist relevant genau dann, wenn seine Powerzelle nicht leer ist.
46
hier fehle
ge Tafeln
2.8 3D Delaunay-Triangulierung für gewichtete Punkte
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Input: p, q, r
1 p
x py d := δ = 1 qx qy 1 rx ry if d > 0 then
return true
end
if d < 0 then
return false
end
1 q y
d := δ1 = 1 ry if d < 0 then
return true
end
if d > 0 then
return false
end
1 r x
d := δ2 = 1 qx if d > 0 then
return true
end
if d < 0 then
return false
end
1 p y
d := δ3 = 1 ry if d > 0 then
return true
end
if d < 0 then
return false
end
return false
Algorithm 2.8: IS_LEFT_OF mit symbolisch pertubiert
47
2 Voronoi Diagramme & Delaunay Triangulierung
Abbildung 2.18: Graph der quadratischen Powerabstände
Abbildung 2.19: Die Powerzelle von p2 ist leer
48
2.8 3D Delaunay-Triangulierung für gewichtete Punkte
Beobachtung
Ein gewichteter Punkt muss nicht in der eigenen Powerzelle enthalten sein.
Abbildung 2.20: p2 ist nicht in seiner Powerzelle enthalten
Erinnerung: Ein Dreieck (in der Ebene) gehört zur Delaunay-Triangulierung wenn seine
offene Umkreisscheibe keinen Punkt von P im innern enthält.
Jetzt: Ein Tetraeder (im R3 bei Eingabe gewichteter Punkte) gehört zur gewichteten
Delaunay-Tetraedisierung (im Folgenden immer kurz Triangulierung genannt), wenn seine
Orthosphäre weiter oder orthogonal zu allen Eingabepunkten ist.
Definition 2.19 (Orthogonalität)
(p, wp ), (q, wq ) gewichtete Punkte sind orthogonal zueinander, falls πp,q := kp − qk2 −
wp − wq = 0 gilt.
Bemerkung 2.7
Gewichteter Punkte mit positivem Gewicht kann als Ball aufgefasst werden.
Definition 2.20 (Orthogonalität zweier Sphären)
2 Sphären heißen Orthogonal zueinander, wenn sie sich in einer Sphäre eine Dimension
niedriger schneiden.
Die Tangenten in den Schnittpunkten sind orthogonal.
Definition 2.21 (Orthosphäre)
Eindeutige Sphäre, die orthogonal zu den 4 gewichteten Knoten des Tetraeders ist.
49
weiter?
2 Voronoi Diagramme & Delaunay Triangulierung
Abbildung 2.21: Darstellung eines gewichteten Punkts als Ball im R2
Abbildung 2.22: 2 Sphären mit orthogonalen Tangenten
50
2.8 3D Delaunay-Triangulierung für gewichtete Punkte
Orthosphärenbedingung für gewichtete Delaunay-Triangulierung
Orthogonalität: (p, wp ) und (w, wq ) sind orthogonal, falls
πp,q = kp − qk2 − wp − wq = 0 [Mehr als orthogonal, falls πp,q > 0]
Definition 2.22 (Orthosphären Bedingung)
P ⊂ R3 gewichtete Punktmenge Tetraeder abcd in einer Triangulation von P ist DelaunayTetraeder, genau dann wenn die orthosphäre von abcd orthogonal zu den gewichteten
Punkten abc und d ist (<- def von orthoshpäre), und mehr als orthogonal von jedem
anderen Punkt in P .
Quadratische Distanzfunktion zu p ∈ R2
dp (x) = kx − pk2 = −2pT x + kpk2 + kxk2
dp (x) − kxk2 ist Hyperebene im R3
Anwenden der Transformation −kxk2 auf alle Punkte im R2
Behauptung
Die Hyperebene hp = dp (x) − kxk2 ist tangential an das Paraboloid π im Punkt −kxk2
1. (p, −kpk2 ) ∈ π: Einsetzen von p in hp
2. Alle Punkte in π sind auf oder unterhalb von hp denn
0 ≤ kx − pk2 = kxk2 − 2pT x + kpk2 = kxk2 + hp x
=>
−kxk2 ≤ hp (x)
Die Transformation überführt die Graphen von Abstandsfunktionen in Tangentenebene an
π => Schnitte von Abstandsfunktionen in Schnitte von Tangentialebenen
=> Untere Einhüllende von Abstandsfunktionen wird überführt in obere Einhüllende
von Halbräumen begrenzt von Tangentialebenen.
Projektion der oberen Einhüllenden ergibt das Voronoidiagramm der Eingabepunkte.
Definition 2.23 (Polarität)
Nicht-vertikale Hyperebene kann geschrieben werden als h(x) = −2pT x + kpk2 − c.
(Bestimmt durch p ∈ R3 und c ∈ R) Polarer Punkt im R4 : h∗ = (p, −kpk2 + c)
51
2 Voronoi Diagramme & Delaunay Triangulierung
Lemma 2.7 (Inzidenzlemma)
h∗ liegt über (auf, unter) g, genau dann wenn g ∗ über (unter, auf) h liegt.
Beweis:
h∗ = (p, −kpk + c), g(x) = −2q T x + kqk2 − c
Betrachten nur den Fall über (auf, unter analog):
−kpk + c > −2q T p + kqk2 − c(h∗ über g)
=> −kqk2 + c0 > −2rT q + kpk2 − c(g ∗ über h)
Abstandsfunktion zu gewichtetem Punkt ergibt Hyperebene im R4 (im Allgemeinen nicht
mehr Tangential zu Paraboloid π)
Weiterhin gültig: Rückprojektion der oberen Einhüllenden Des Schnittes, der nach unten
offenen Halbräume (berandet durch die transformierte Abstandsfunktionen) gibt das
Power-Diagramm. (gewichtete Voronoi-Diagramm)
Beobachtung
Zwei gewichtete Punkte sind orthogonal zueinander, genau dann wenn p̂∗ auf q̂ liegt,
wobei p̂ Hyperebene p̂(x) = −2pT x + kpk2 − wp , p̂∗ = (p, −kpk2 + wp )
Analog für q
Beweis:
p̂∗ liegt auf q̂ bedeutet:
−kpk2 + wp = −2q T p + kqk2 − wq => kpk2 − 2pT q + kqk2 − wp − wq = 0 => kp − qk2 − wp − wq =
Folgerung
Powervertex im R3 (im nicht-degenerierten Fall) hat den gleichen Power-Abstand zu
vier gewichteten Eingabepunkten. => Transformierter Powervertex ist im Schnitt von 4
transformierten Abstandsfunktionen. [nicht-vertikale Hyperebenen] => ∃ gewichteter
Punkt (v, wv ), der orthogonal zu den vier gewichteten Eingabepunkten ist. Dabei st v
der Powervertex. (v, wv ) ist die Orthosphäre des durch die vier Eingabepunkte gegebenen
Tetraeders.
Definition 2.24 (Lokale Delaunay-Bedingung)
Sei P ⊂ R3 eine gewichtete Punktmenge. Ein Dreieck bcd in einer Triangulierung von P
hat die lokale Delaunay-Eigenschaft, falls entweder
1. bcd ist auf dem Rand der konvexen Hülle von P [D. h. bcd hat nur einen inzidenten
Tetraeder.], oder
52
2.8 3D Delaunay-Triangulierung für gewichtete Punkte
2. bcd hat 2 inzidente Tetraeder abcd und bcde, so dass der gewichtete Punkt e mehr
als orthogonal zur Orthosphäre von abcd ist.
=> Idee: Herstellen der globalen Delaunay-Triangulierung durch sicherstellen er lokalen
Bedingung für jedes Dreieck. => „Flippen“
Projektion von 4 Punkten in die Ebene.
Satz 2.5 (Radons Theorem)
Gegeben n ≥ d + 2 Punkte im Rd . Dann gibt es eine Zerlegung der Punktmenge
P = P1 ∪ P2 , so dass conv(P1 ) ∩ conv(P2 ) 6= ∅.
Beweis:
P
n ≥ d + 2 Punkte im Rd müssen affin abhängig sein. Es gibt λi , so dass ni=1 λi pi = 0
P
und nicht alle λi = 0 und ni=1 λi = 0.
Sei I ⊂ [1, . . . , n] mit λi > 0 falls i ∈ I.
c :=
X
λi = −
i∈I
X
λi
i∈[1..n] I
1 X
1X
λi pi = −
λi pi
c i∈I
c i∈[1,..,n] I
|
{z
}
∈conv{pi |i∈I}
|
{z
}
∈conv{pi |i∈[1,...,n]\I}
=> conv{pi |i ∈ I}∩ conv{pi | i ∈ [1, . . . , n] \ I} =
6 ∅
Satz 2.6
Haben alle Dreiecke in K die lokale Delaunay-Eigenschaft, dann ist K die (gewichtete)
Delaunaytriangulierung
Beweis:
Genauso wie im ungewichteten 2D-Fall, d. h. zeige dass für jeden Tetraeder abcd ∈ K
gilt, dass Orthosphäre von abcd mindestens orthogonal zu allen Punkten aus P .
Flips im 3D
Projektion von 4D-Tetraeder in den R3
1. Ein Punkt in konvexer Hülle von vier Punkten -> 1-4 Flip
2. Fünf Punkte in konvexer Lage -> 2-3 Flip Entweder zwei Tetraeder inzident zu
bcd, oder drei Tetraeder inzident zu a
Vorsicht
bc nichtkonvexe Kante. Zwei Möglichkeiten:
53
2 Voronoi Diagramme & Delaunay Triangulierung
1. cb hat drei inzidente Tetraeder. => 3-2 Flip möglich
2. cb hat mehr als drei inzidente Tetraeder: => bcd heisst nicht-transformierbar
[Beachte: in dem Fall ist die Kante ae nicht vorhanden. ]
Inkrementeller Algorithmus
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
Input: P ⊂ R3 (gewichtet), P = {p1 , . . . , pn } beliebig (d. h. am Besten zufällige
Ordnung)
Sei Di Delaunay Triangulierung von p1 , . . . , pi , c, y, z, w
D0 sei hinreichend großer Tetraeder xyzw
for i = 1 TO n do
Finde pqrs In Di−1 Mit pi ∈ pqrs // Point Location
if pi ist nicht-redundant bzgl p, q, r und s then
Füge Pi mittels 1-4 Flip ein
end
end
while ∃bcd Dreieck in momentaner Triangulierung, das nicht die lokale
Delaunay-Eigenschaft hat do
Flip bcd
end
Algorithm 2.9: Inkrementeller Algorithmus für 3D Delaunay-Triangulierung
Input: Stack von Dreiecken, die möglicherweise geflippt werden müssen
while stack 6= ∅ do
bcd := pop von stack
if bcd ∈ momentanerT riangulierung AND bcd hat nicht lokale
Delaunay-Eigenschaft AND bcd ist transformierbar then
wende 2-3, 3-2 oder 4-1 Flip an
push erzeugte Dreiecke auf den Stack
end
end
Algorithm 2.10: lokale Korrektur
Beobachtung
Als Linkkandidaten sind nur Dreiecke im Link von pi relevant
1. Falls Dreieck ∈
/ Stern von pi , dann gehört das Dreieck zu Di−1 , d. h. es hat die
lokale Delaunay-Eigenschaft
2. bc sei Kante im Link => pi bc ∈ Stern(pi ) pi bc ∈
/ Link(pi ) (Bild)
Seien pi bcx und pi bcy Tetraeder inzident zu pi bc falls xpi bcy konvex ist, könnten wir
einen 2-3 Flip anwenden. => neue Tetraeder xypi b, xypi c und xybc
xybc hat nur Knoten aus {1, . . . , pi−1 }, gehört nicht zum Stern. Müsste zu DelaunayTriangulierung von Di−1 gehören. Widerspruch, da 2-3-Flip nicht möglich.
54
2.8 3D Delaunay-Triangulierung für gewichtete Punkte
Fall xpi bcy nicht-konvex und pi bc ist transformierbar, dann ist auch entweder bcx oder
bcy transformierbar, d. h. wir können Dreieck ∈ Link(pi ) anstelle von pi bc transformieren.
Behauptung
Falls keine Transformierbaren Dreiecke im Link(pi ) gibt, die nicht die lokale DelaunayEigenschaft haben, dann ist momentane Triangulierung die Deleunay Triangulierung
D.
Beweis:
Annahme: Es gibt Dreiecke ∈ Link(pi ), die nicht die lokale Delaunay Eigenschaft haben,
aber alle nicht-transformierbar sind. (wollen widerspruch) Seien L Dreiecke im Link von
pi , L0 ⊆ L seien Dreiecke, die nicht lokale Delaunay und nicht transformierbar sind.
Seien T’ die Tetraeder inzident zu L’, mit T 0 ∩ Stern(pi ) = ∅. Sei t ∈ T 0 , so dass πt,pi
minimal ist unter allen Tetraeder in T 0 .
Erinnerung πt,pi ist der Abstand der Orthosphäre von t zum (gewichteten) Punkt pi .
=> πi,pi < 0 [Da nicht lokale Delaunay Eigeschaft im Dreieck t ∩ Stern(pi ) = bcd]
Ziel zu zeigen, dass bcd transformierbar ist
bcd ∈ Link(pi ) Bild falls pi bcde konvex, dann transformierbar mit 2-3-Flip => pi bcde
nicht konvex
1. Annahme: Genau eine nicht-konvexe Kante bc Sei xbcd Tetraeder 6= t inzident zu
bce. Falls x = pi , dann 3-2-Flip um Kante bc möglich. => entweder x 6= pi , oder
zweite nichtkonvexe Kante
2. Annahme: 2 nichtkonvexe Kanten bc, cd seien bcex und cdey Tetraeder 6= t inzident
zu bce BZW. cde Falls x = y = pi => 4-1 Flip möglich
Situation: Nicht alle Dreiecke haben die lokale Delaunay-Eigenschaft, aber alle Dreiecke
im Link sind nicht transformierbar.
55
2 Voronoi Diagramme & Delaunay Triangulierung
abcd Tetraeder, der inzident zu Dreieck bcd ∈ Linkpi , so dass πabcd,pi < 0 minimal ist.
Betrachte Dreiecke abc und abd. Seien abcx und abcy Tetraeder 6= abcd. Falls x = y = pi ,
dann ist abcdpi Transformierbar mit einem 4-1-Flip.
Da nichttransformierbarkeit angenommen, gibt es x mit abcx 6= abcpi und bc nicht-konvex.
Das bedeutet der Strahl startend von pi , der durch abc geht, muss zuerst durch ein Dreieck
im Link(pi ) gehen.
Widerspruch: Tetraeder σ in Di−1 sind längs des Strahls von pi geordnet gemäß πσ,pi .
Das ist ein Widerspruch zu abcd minimal.
[Ordnung längs des Strahls haben wir schon bewiesen, als wir im 2D gezeigt haben, dass
lokale Delaunay-Eigenschaft die Delaunay-Eigenschaft impliziert.]
56
3 Geometrisch modellieren
Idee: Benutze Delaunay-Triangulierung um Flächen im 3D zu beschreiben.
Kurve im R3 : γ[0,1] → R2 mit
1. Glatt (unendlichoft stetig differenzierbar)
2. Injektiv, bis auf γ(0) = γ(1)
P ⊂ Σ = γ[0,1]
Ziel: Rekonstruiere Σ aus P .
Definition 3.1 (Leeres Segment)
γ(x, y) heißt leeres Segment, falls x = γ(t), y = γ(s) und γ([t, s]) ∩ P = ∅
Definition 3.2 (korrekte Kante)
pq mit p, q ∈ S heißt korrekte Kante, falls γ(p, q) leeres Segment ist, d. h. korrekte Kante
verbindet konsekutive Punkte längs von γ.
Bemerkung 3.1
Aus beliebigen Sampling ist es schwierig bzw. unmöglich korrekte Kanten zu finden. Wir
brauchen zusätzliche Bedingung.
Definition 3.3 (mediale Achse)
Gegeben Σ ⊂ Rd kompakt (abgeschlossen und beschränkt). Die mediale Achse M (z) =
CL{x ∈ Rd \ Σ|x hat mindestens 2 nächste Nachbarn in Σ}
Bemerkung 3.2
Mediale Achsen finden auch Anwendung in
Abbildung 3.1: Kurve im R2 mit Sampling
57
3 Geometrisch modellieren
Abbildung 3.2: Mediale Achse mit Bällen
• Virtual Colonoscopy
• Fahrplanung in der Robotik
• Stick Figures bei Animation
Definition 3.4 (mediale Bälle)
x ∈ M (z), dann heißt B(x, d(x, Σ)) (d(x, Σ) = infkx − yk mit y ∈ Σ) ein medialer Ball.
Definition 3.5 (ε-Sampling)
p ⊂ Σ heißt ε-Sampling für ε > 0, falls ∀x ∈ Σ, ∃p ∈ P mit kx − pk ≤ εf (x), wobei
f : Σ → R, x 7→ d(x, M (Σ)). [Die Funktion f wird lokale Feature Größen Funktion
genannt.]
3.1 Crust-Algorithmus
1
2
3
Input: P ⊂ Σ Sampling der Kurve Σ.
Berechne das Voronoi-Diagramm von p. V := Menge der Voronoi-Vertices.
Berechne die Delaunay-Triangulierung von P ∪ V .
Gebe alle Kanten aus Del(P ∪ V ) aus, deren Endpunkte beide in P sind.
Algorithm 3.1: Crust (Krusten)-Algorithmus
Behauptung
Falls p ε-Sampling mit ε < 0,2, dann gibt der crust-Algorithmus genau die korrekten
Kanten aus.
Eigenschaften der Feature Größen Funktion:
1. f : Σ → R, x 7→ d(x, M (Σ)) ist 1-Lipschitz, d. h. f (x) ≤ f (y) + kx − yk
58
3.1 Crust-Algorithmus
Abbildung 3.3: Bälle schneiden die Kurve
Beweis:
Sei m ∈ M (z) mit f (y) = ky − mk, dann f (x) ≤ kx − mk ≤ kx − yk + ky − mk =
kx − yk + f (y) (Dreiecksungleichung)
2. Feature Verschiebungslemma
Sei ε < 1 und kx − yk ≤ εf (x), dann gilt:
a) f (x) ≤
1
1−ε f (y)
b) kx − yk ≤
ε
1−ε f (y)
Beweis:
a) f (x) ≤ f (y) + kx − yk ≤ f (y) + εf (x) Lippschitz-Stetigkeit => (1 − ε)f (x) ≤
1
f (y)
f (y) => f (x) ≤ 1−ε
b) kx − yk ≤ εf (x) ≤
ε
1−ε f (y)
Schnitte von Bällen mit Σ
Lemma 3.1
Falls ein Ball B eine Mannigfaltigkeit Σ ⊂ Rd (z. B. glatte Kurven im R2 , glatte Fläche
im R3 ) in mindestens einem Punkt schneidet, und falls entweder
1. B ∩ Σ kein topologischer d-Ball ist, oder
2. γ(B ∩ Σ) keine topologische (d-1)-Sphäre ist
dann enthält B einen Punkt von der medialen Achse von Σ.
Lemma 3.2 (leeres Segment)
Sei P ε-Sampling von Kurve Σ mit ε < 1 seien p ∈ P und x ∈ Σ, so dass das Segment
γ(p, x) leer ist. Sei z der Schnitt des Bisektors von px mit Σ. Dann gilt:
1. Der Ball B(z, kz − pk) schneidet Σ nur in γ(p, x)
2. B(z, kp − zk) ist leer, d. h. der offene Ball enthält keine Sample-Punkte
59
3 Geometrisch modellieren
3. kp − zk ≤ εf (z)
Beweis:
B := B(z, kp − zk) γ := γ(p, x)
Annahme: B ∩ Σ 6= γ Verkleinern B zu B 0 . => B 0 ∩ Σ ist kein topologischer 1-Ball. Im
offenen Ball B 0 liegt keine Sampling Punkte in B 0 ∩ P = ∅
Radius von B 0 > f (z)
da ε-Sampling: ∃p0 : kp0 − zk ≤ εf (z) < f (z) -> Widerspruch.-> 1.
2. und 3. folgen daraus. 3. folgt, da p ein ε-Sample. kz − pk ≤ f (z)
Lemma 3.3 (kurze Segmente)
Sei x und y zwei bliebige Punkte, so dass γ(x, y) leer ist. Dann gilt: kx − yk ≤
für ε < 1 und jedes ε-Sampling.
2ε
1−ε f (x),
(Zwei Punkte x, y, zwischen denen keine Sampling-Punkte liegen: Diese sind relativ nah
beieinander (abhängig von der lokalen Feature Größen Funktion)
Beweis:
da γ(x, y) leeres Segment, ist es Teilstück eines leeren Segments γ(p, q) mit p, q ∈ P Sampling Punkte.
Sei z der Schnitt des Bisektors mit γ(p, q). Behandle Ball B(z, kp − zk).
=> offener Ball B(z, kp − zk) ist leer, d. h. enthält keine Sampling Punkte. => das leere
Segment-Lemma gilt. (speziell die dritte Behauptung)
x, y ∈ B: kz − xk ≤ εf (z), da ε-Sample.
laut Feature Verschiebungslemma: f (z) ≤
1
1−ε f (x).
kx − yk ≤ 2kp − zk (Dreiecksungleichung ≤
2ε
1−ε f (x))
Lemma 3.4
Sei pq eine korrekte Kante. Für ε < 1 gilt (ε-Sampling)
60
3.1 Crust-Algorithmus
Abbildung 3.4: Punktsampling und deren Voronoi-Knoten
1. kp − qk ≤
2ε
1−ε f (p)
2. pq ist Delaunay-Kante
Beweis:
1. da pq eine korrekte Kante ist => γ(p, q) ist leer => kp − qk ≤
2ε
1−ε f (p)
2. laut Leeren Segment Lemma existiert Ball, der p und q auf dem Rand hat und im
Inneren keine Sampling Punkte hat. => pq ist Delaunay-Kante
inkorrekte Kanten: deren umschließender leerer Ball schneidet die mediale Achse => sie
enthalten einen Voronoi-Knoten.
P ∪ V (V - Menge der Voronoi-Knoten) So verschwinden die inkorrekten Kanten.
Aber es entstehen neue, zusätzliche Kanten. Diese werden aber einfach nicht ausgegeben.
CRUST-Algorithmus:
61
3 Geometrisch modellieren
1
2
3
Input: ε-Sampling, P ⊂ Σ : ε ≤ 0 2
berechne Voronoi-Knoten des Punktsamplings P.
berechne Delaunay-Triangulierung von P ∪ V
gebe Knoten aus Del(P ∪ V ) aus, deren Endpunkte beide in P liegen
Algorithm 3.2: CRUST-Algorithmus
3.1.1 Korrektheitsbeweis für Crust Algorithmus
Lemma 3.5
Sei p ein ε < 0,2-Samplung einer glatten Kurve, Σ < R2 , dann sind alle korrekten Kanten
in crust(P ).
Lemma 3.6
Unter den Vorraussetzungen von Lemma 3.5 ist keine nicht-korrekte Kante in crust(P ).
Es gilt immer ε < 0,2-Sampling
Lemma 3.7 (Empty Segment)
p ∈ P, x ∈ Σ, so dass γ(p, x) leer ist, z Schnittpunkt des Bisektors von p und x mit
γ(p, x) dann gilt:
1. B(z, kp − zk) schneidet Σ nur in γ(p, x)
2. B(z, kp − zk) ∩ P = ∅ (B(z, kp − zk) ist ein offener Ball)
3. kp − zk ≤ εf (x)
Lemma 3.8 (Small Segment)
x, y ∈ Σ, so dass γ(x, y) ∩ P = ∅, dann kx − yk ≤
2ε
1−ε
Lemma 3.9 (Small Edge)
Sei pq korrekte Kante, dann
1. kp − qk ≤
2ε
1−ε f (p)
2. pq ist Delaunay
Lemma 3.10 (Segment Angle)
2ε
x, y, z ∈ Σ, kx − yk, ky − zk ≤ 1−ε
f (y). α sei der Winkel der Tangente von Σ in y mit
dem Segment yz, dann gilt:
ε
1. α ≤ arcsin 1−ε
und
ε
2. ]xyz ≥ π − 2 arcsin 1−ε
2 oder z im Nenner?
Beweis:
0k
/km − yk) ≤ arcsin( ky−zk
α = arcsin( ky−z
2
2 /km − yk)
Es gilt:
62
3.1 Crust-Algorithmus
Abbildung 3.5: Skizze zum Beweis des Small Angle-Lemmas (Lemma 3.10)
Abbildung 3.6: Empty Segment Lemma
1. ky − zk ≤
ε
1−ε f (y)
2. f (y) ≥ km − yk
ε
)
Daraus folgt α ≤ arcsin( 1−ε
Für 2. betrachte ]myz =
π
2
−α>
π
2
ε
− arcsin( 1−ε
) und ]myx ≥
π
2
ε
− arcsin( 1−ε
)
ε
Es folgt: ]xyz ≥ π − 2 arcsin( 1−ε
). Das gilt, falls x oberhalb der Tangente liegt sowieso.
Ansonsten folgt es wegen der beiden vorherigen Formeln.
Beweis: (Lemma 3.5)
Sei pq korrekte Kante. Aus dem Empty Segment Lemma folgt B ∩ P = ∅. Aber es ist
möglich, dass B ∩ {v|v Voronoi-Vertex von Punktmenge P } =
6 ∅.
Beachte: Crust Algorithmus gibt Kanten in der Delaunay-Triangulierung von P ∪ V aus,
die beide Enden in P haben.
Annahme: v ∈ B, wobei v Voronoi Vertex von P ist.
Betrachte kp − vk
63
3 Geometrisch modellieren
Abbildung 3.7: Ball B 0
ε
1. kp − vk ≤ 2kp − zk ≤ 2εf (z) ≤ 2 1−ε
f (p)
2kp−vk ≥ f (p), sei B 0 Voronoi-Ball mit Mittelpunkt v. B 0 ist Umkreisball eines DelaunayDreiecks rst (Dual zum Voronoi-Vertex v.)
=> B 0 muss Punkt in der medialen Achse enthalten. kp − mk ≥ 2kp − vk.
=> B 0 kann Σ nicht in einem 1-Ball schneiden.
Insgesamt folgt:
Das ist ein Widerspruch falls
wurde.
2ε
1
f (p) ≤ kp − vk ≤
2
1−ε
2ε
1−ε
<
1
2
⇔ 5ε < 1. Widerspruch, da ε < 0,2 angenommen
=> pq ∈ crust(P ) für alle korrekten Kanten pq.
Beweis: (Lemma 3.6)
Crust gibt keine nicht-korrekten Kanten aus für ε < 15 .
Annahme für Widerspruch: pq nicht-korrekte Kante in Crust(p).
Daraus folgt, es gibt Ball D mit p, q ∈ ∂D (Rand von D) und D ∩ P = ∅, D ∩
{v| v Voronoi Vertex von P } = ∅
z, z 0 sind die beiden Schnittpunkte des Bisektors von p und q mit dem Rand von D.
B = B(z, kz − pk), B 0 = B(z 0 , kz 0 − pk).
1. Behauptung: Sowohl B als auch B 0 können keinen Punkt von P enthalten. B ∩ P =
∅ = B0 ∩ P
Beweis:
Transformiere D, so dass p, q ∈ ∂D erhalten bleibt und D(1) = B. [Pencil zwischen
D und B.]
64
3.1 Crust-Algorithmus
Abbildung 3.8: Skizze zum Beweis von Lemma 3.6
Falls B ∩ P ∅, dann ∃λ ∈ (0,1) mit ∂D(λ) ∩ P 6= ∅, d. h. D(λ) hat p, q und einen
weiteren Punkt r ∈ P auf dem Rand => D(λ) ist Voronoi Ball des DelaunayDreiecks pqr. => Widerspruch, da D keine Voronoi-Vertices im Inneren enthält.
(nach Annahme.)
2. ]zpz 0 = π2 (Satz von Thales) => Tangenten von B und B 0 in p schneiden sich im
Winkel von π2 . => Σ kann nicht tangential zu B und B 0 in P sein.
3. Annahme: Σ ist weder Tangential zu B noch zu B 0 in p. Sei p1 der erste Schnittpunkt
von Σ mit B längs Σ, und sei p2 der erste Schnittpunkt von Σ mit B 0 längs Σ
2ε
=> kp − p1 k, kp − p2 k ≤ 1−ε
f (p) (folgt aus dem Small Segment Lemma, da
γ(p, p1 ), γ(p, p2 ) leer sind, denn B bzw. B 0 enthalten keine Punkte von P .
ε
ε
Aus Segment Angle Lemma folgt ]p1 pp2 ≥ π−arcsin 1−ε
=> α ≥ 12 (π−2 arcsin( 1−ε
)− π2 ),
wobei α der Winkel zwischen Tangente an B in D und dem Liniensegment pp1 ist. [Hier
ist α größer angenommen, als entsprechender Winkel für B 0 .]
Lemma 3.11
Der Crust-Algorithmus gibt keine nicht-korrekte Kante aus für ε-Sampling mit ε < 0,2
Beweis:
pq nicht-korrekt. α Winkel von Segment pp1 mit Tangente an Σ in p D. Ball mit p, q ∈ ∂B
B ∩ P 6= ∅ [P Samplepunkte]
B ∩ V 6= ∅ [V Voronoivertices des Voronoi-Diagramms von P ]
In letzter Stunde: α ≥
π
4
ε
− arcsin 1−ε
[untere Schranke für α]
Heute: Obere Schranke für α. Konstruiere x als Schnitt des Bisektors von p und p1 mit
Kurvensegment γp, p1 .
65
3 Geometrisch modellieren
Abbildung 3.9: Beispiele für homeomorphe Abbildungen
Beobachtung
Da p und q nicht konsekutiv längs Σ sind, gilt entweder γ(p, q) 6⊂ B oder γ(q, p) 6⊂ B
[Echte Teilmenge]. Bachte: Wir haben gezeigt, dass B keinen Punkt von P im inneren
enthält.
=> B schneidet Σ nicht in 1-Ball, d. h. B muss Punkt der medialen Achse enthalten..
=> f (x) ≤ 2r, mit r Radius von B [<=> r ≥ 21 f (x)]
≥ 12 kp−p1 k =
εf (x) ≥ kp − xk
|
{z
}
Da p einer der beiden konsekutiven Samplepunkte zu x Längs Σ ist [Empty Segment Lemma]
r sin α ≥ 21 f (x) sin α
ε
)
=> 2ε ≥ sin α ≥ sin( π4 − arcsin 1−ε
=> Widerspruch für ε < 0,2, d. h. Ungleichung kann nicht gelten für kleine ε.
3.2 Flächenrekonstruktion
Theorem 3.1 (Edelsbrunner & Shah, Amenta & Bern)
Sei P ein ε-Sampling einer glatten Fläche Σ mit ε < 0,18, dann sind Σ und D(P, Σ)
homeomorph.
Glatte Fläche: ϕ und ϕ−1 mit ϕ(B) → B unendlich oft stetig differenzierbar. Wollen
glatte Flächen hier, da inf x∈Σ f (x) > 0, d. h. Σ hat positiven Abstand von M (Σ).
Definition 3.6 (Homeomorphismus)
Bijektive Abbildung zwischen zwei Flächen, die in beide Richtungen stetig ist
Definition 3.7 (Eingeschränkte Delaunay-Triangulierung)
P ⊂ R3 endliche Punktemenge, Σ ⊂ R3 .
Erinnerung: S < P , conv(s) ist Simplex in D(P ), genau dann wenn
Vp Voronoizelle von p.
Sei S < P , conv(s) ist Simplex in D(P, Σ), genau dann wenn
66
T
p∈S
T
p∈S
Vp 6= ∅, wobei
Vp ∩ Σ 6= ∅
3.2 Flächenrekonstruktion
Abbildung 3.10: „Aufdickung“ einer Kurve
Abbildung 3.11: „Aufdickung“ mittels Kegelkomponenten
Nochmal Crustalgorithmus für Kurven:
Rot: Vereinigung der Voronoi-Zellen der Voronoi-Vertices des Voronoi-Diagramms von P
im Voronoi-Diagramm von P ∪ V
Blau: Komplement von Rot im R2 , aufgedickte Version der Kurve Σ.
Der Crust-Algorithmus berechnet D(P,Blau).
Idee: Gesampletes Objekt Σ (Kurve im R2 , bzw. Fläche im R3 ) ist nicht direkt bekannt,
sondern nur über das ε-Samplung P . d. h. wir können D(P, Σ) nicht direkt berechnen, was
wir nach Edelsbrunner, Shah, Amenta, Bern-Theorem gerne würden.
Stattdessen: Schätze „aufgedickte Version“ ΣD von Σ aus P und berechne D(P, ΣD ).
Kleine Vorrausschau:
67
3 Geometrisch modellieren
Abbildung 3.12: Mediale Bälle tangential an der Fläche Σ
Aufdickung mittels Kegelkomplementen (Co-Cones) an den Sample-Punkten.
Normalen Approximation
Lemma 3.12
Seien m1 und m2 Mittelpunkte der beiden medialen Bälle Tangential an die Fläche Σ im
Punkt p. Dann sind m1 und m2 in Vp enthalten.
Beweis:
Sei Bi der medialer Achsenball mit Mittelpunkt mi dann ist Bi ∩ Σ = ∅ und p ist ein
nächster Punkt zu mi in Σ. => mi ∈ Vp für Sampling von Σ.
Lemma 3.13
Sei µ > 0, sei v ∈ Vp mit kv − pk ≥ µf (p) für p ∈ P , wobei P ein ε-Sampling von Σ mit
−
ε
ε
ε < 1 ist dann gilt ](mp , →
vp ) ≤ arcsin µ(1−ε)
+ arcsin 1−ε
.
Beweis:
−→ bzw.
Idee: Beobachtung: np zeigt in gleiche (bzw. entgegengesetzte) Richtung wie −
pm
1
−
−→
pm
2
Sei o. B. d. A. v auf gleicher Seite von Σ wie m1 . Wir sind interessiert an
]m1 pv = ]pvm2 + ]vm2 p
|
68
{z
π−]m2 pv
}
3.2 Flächenrekonstruktion
Abbildung 3.13: Suchbereich das Crust-Algorithmus in 3D
d. h. es reicht ]pvm2 und ]vm2 p abzuschätzen.
Lemma 3.14 (Normalenlemma)
Sei µ > 0 und v ∈
/ Σ ein Punkt aus der Voronoizelle Vp von p mit kv − pk ≥ µf (p). Für
−
→
ε
ε
ε < 1 gilt: ](vp, np ) ≤ arcsin µ(1−ε
+ arcsin 1−ε
Beweis:
m1 - Mittelpunkt von medialen Ball an p. m2 - Mittelpunkt von medialen Ball an p.
np ||m1 p np ||m2 p => m1 , m2 und p sind colinear.
→ n ) = ](pvm ) + ](v, m , p) laut Nebenwinkelsatz.
α = ](−
vp,
p
2
2
Sei y der Schnitt von vm2 mit Σ. y liegt in Vp Voronoizelle von p. (Weil alles konvex
ist und die Endpunkte in Vp liegen.) => der nächste Samplingpunkt zu y ist p. (Weil
(p)
er ja in der Voronoizelle liegt) ky − pk ≤ εf (y), weil ε-Sampling ≤ εf
1−ε lt. Feature
Verschiebungslemma
]pvm2 = arcsin kx−pk
kv−pk ≤ arcsin
ε
f (p)
1−ε
kx−pk
]vm2 p ≤ arcsin kp−m
≤ arcsin
2k
µf (p)
ε
≤ arcsin µ(1−ε)
ε
f (p)
1−ε
f (p)
ε
≤ arcsin 1−ε
Addieren der beiden Winkel ergibt genau das gewünschte Ergebnis.
Definition 3.8 (Pol)
Den am weitesten von p entfernten Voronoiknoten p+ in Vp nennt man positiver Pol. Der
negative Pol p− ∈ Vp von p ist der am weitesten von p+ entfernte Punkt, so dass die
→ = p+ − p−
Vektoren pp+ und pp− einen Winkel von mehr als π bilden. Man nennt −
vp
+
den Pol-Vektor von p. Falls Vp unbeschränkt ist, so ist p der Punkt im unendlichen
→ ist der Durchschnitt aller Richtungen der unbeschränkten
und die Richtung von −
vp
Voronoi-Kanten.
Lemma 3.15
→
Für ε < 1 gilt für den Normalenvektor np und dem Pol-Vektor −
vp
−
ε
](np , →
vp ) ≤ 2 arcsin 1−ε
69
3 Geometrisch modellieren
Definition 3.9 (Co-Kegel/Cocone)
→ v ) ≥ 3 π} heißt Co-Kegel (Cocone) von p.
Die Menge Cp := {y ∈ Vp |](−
py,
p
8
≈ Vp \ K
3.2.1 (Konforme) Alpha Shapes
Erinnerung: Gegeben P ⊂ Rd endlich und A ⊂ Rd beliebig. Sei Vp die Voronoi-Zelle
von p ∈ P , dann ist Vpa = Vp ∩ A. Sei T ⊆ P dann ist conv(T ) ein Simplex der
Delaunay-Triangulierung eingeschränkt auf A, genau dann wenn
\
p∈T
VpA 6= ∅(↔ (
\
Vp ) ∩ A 6= ∅)
p∈T
Beispiel 3.1
A = Σ (Glatte Kurve bzw. Fläche). Dann ist die Delaunay-Triangulierung von einem
dichten Sampling P von Σ eingeschränkt auf A eine homogene Rekonstruktion von Σ.
Definition 3.10 (Alpha Shape)
Parameter α ∈ [0, ∞) gegeben P ∈ Rd endlich. Das Alpha Shape zum Wert α ist die
Delaunay-Triangulierung von P eingeschränkt auf die Menge von Bällen mit Radius α
und Mittelpunkt in P .
Konvention: Alle Delaunay-Vertices sind α-spät und alle Delaunay-d-Simplices sind
α-früh
Definition 3.11 (Kritischer Delaunay-Simplex)
σ wird kritisch genannt, falls σ sowohl α-früh als auch α-spät ist.
Beobachtung
kritische Simplices im Alpha-Shape sind entweder Zerstörer oder Erzeuger, d. h. entweder
zerstören sie eine Zusammenhangskomponente oder ein "Loch". (Im R2 ist das eine
Zusammenhangskomponente im Komplement der α-Bälle)
Filtrierung der Delaunay-Triangulierung K0 ⊂ K1 ⊂ . . . ⊂ Kn ("⊂"heißt, alle Simplices
in Ki sind auch in Ki+1 enthalten)
Folge von Sub-Komplexen der Delaunay mit K0 = P und Kn = Delaunay-Triangulierung
von P . d. h. Alpha-Shapes sind eine Filtrierung der Delaunay-Triangulierung von P .
70
3.2 Flächenrekonstruktion
Alpha-Shapes für Kurven-(bzw. Flächen-)Rekonstruktion
[Bild eines uniformen Samplings]
In Alpha-Shape Filtrierung viel Aktivität bei kleinen α-Werten, dann ein α-Intervall ohne
Aktivität dann wieder Aktivität durch einfügen von nicht-Rekonstruktionskanten.
Achtung: Funktioniert nicht bei Feature-Adaptiven ε-Sampling. Man erhält im kleineren Teil bereits nicht-Rekonstruktionskanten, während im großen Teil noch nicht alle
Rekonstruktionskanten im Alpha Shape sind.
In der Praxis: Flächenrekonstruktion mit Alpha Shapes ist nicht sehr stabil, da in der
Regel keine uniformes Sampling vorhanden.
Konforme Alpha Shapes: Anpassung von Alpha Shapes geeignet für Flächenrekonstruktion
von ε-Sampling.
σ Simplex in Delaunay-Triangulierung α(σ) ist α-Wert bei dem σ im Alpha Shape
erscheint.
Sei p ∈ P und σ1 , . . . , σk seien alle Delaunay-Simplices inzident zu p, geordnet so dass
α(σi ) ≤ α(σi+1 )
Seien αp+ > αp− Werte aus α(σ1 ), . . . , α(σk )
σ̂pi
=
α(σi ) − αp−
αp+
Konforme Alpha Shapes sind Einschränkungen der Delaunay-Triangulierung von P auf
S
folgende Menge das topologische Innere von p∈P Cpα̂
mit Cpα̂ für α̂ ∈ [0, ∞) ist der Schnitt des Balles mit Mittelpunk p und Radius αp (α̂) =
αp+ α̂ + αp− und Vp d. h. Cpα̂ = Vp ∩ B(p, αp+ α̂ + αp− )
Sei α̂(σ) für Delaunay Simplex σ der Wert von α̂ bei dem σ im konformen Alpha Shape
erscheint.
Beobachtung
α̂(σ) = maxi=1,...,k inf{α̂|αpi (α̂) ≥ α(σ)} wobei σ = conv(p1 , . . . , pk ), pi ∈ P
[Bild]
Das Bild zeigt: Im konformen Alpha Shape können Dinge kritisch werden, die im normmalen Alpha Shape nicht kritisch waren.
71
3 Geometrisch modellieren
Konforme Alpha Shapes
p ∈ P , σ1 , . . . , σk Delaunay Simplices inzident zu p in Delaunay Triangulierung von
P . Sei α(σi ) der Alphawert für den σi im Alpha Shape von P auftaucht. Annahme
α(σi ) ≤ α(σi+1 )
Lokales Wachstum des Balles im Zentrum p: Seien αp+ > αp− ∈ {α(σi )}
αp (α̂) = αp+ (Radius des Balles mit Zentrum p als Funktion des Parameters α̂ ∈ [0, ∞)) +
αp−
Konforme Alpha Shapes: Einschränkung der Delaunay Triangulierung von P auf das
S
topologische Innere (Menge ohne Rand) von p∈P Cpα̂ = C α̂
Cpα̂ = Vp ∩ B(p, αp (α̂))
Behauptung
Konforme Alpha Shapes (für wachsendes α̂) sind Filtrierung des Delaunay Triangulierung
von P .
Beweis:
zu zeigen
(1) Für hinreichend große α̂ ist das konforme Alpha Shape die Delaunay Triangulierung
von P .
(2) Für α̂1 < α̂2 gilt: die Simplices im konformen Alpha Shape zu α̂1 sind auch Simplices
des konformen Alpha Shapes zu α̂2
(3) ein Simplex im konformen Alpha Shape erscheint nicht später als seine Co-Faces
zu (1) Folgt daraus, dass C α̂ ïm Limes"α̂ gegen unendlich den ganzen Raum überdeckt.
zu (2) Folgt aus C α̂1 ⊂ C α̂2
zu (3) Beobachtung: α̂(σ) (Wert, bei dem σ im konformen Alpha Shape auftaucht.)
= maxp1 ,...,pk inf {α̂|αpi (α̂) ≥ α(σ)} wobei p1 , . . . , pk die Vertices des Simplex σ
sind.
Zu zeigen: σ taucht nicht später auf, als alle seine Co-Faces. Es gibt Vertex pi von σ mit
αpi (α̂(σ)) = α(σ) ≤ α(τ ) ≤ αpi (α̂(τ ))
hierbei τ Co-Face von σ. Nach Konstruktion ist αpi eine monoton wachsende Funktion.
=> α̂(σ) ≤ α̂(τ ), was zu zeigen war.
Ziel: Zeige, dass konforme Alpha Shapes besser geeignet sind für Flächenrekonstruktion als
Alpha Shapes. Dazu unterschiede von Konformen- und Alpha-Shapes.
72
3.2 Flächenrekonstruktion
Satz 3.1
Alle α-kritischen Delaunay-Simplices sind auch α̂-kritisch. (Achtung: Die Umkehrung
gilt nicht.)
Beweis:
Sei σ ein α-kritischer Simplex mit Vertices p1 , . . . , pk , d. h. σ ist α-spät (erscheint also
später als alle seine Faces im Alpha Shape) und α-früh (d. h. erscheint vor all seinen
Co-Faces im Alpha Shape). Zu zeigen: α ist α̂-spät und α̂-früh.
(1) α̂-spät: Reicht Behauptung für alle (k − 2)-Faces zu zeigen. Sei ρi (k + 2)-Face, das
durch weglassen von pi entsteht.
α̂(ρi ) = max inf {α̂|αpj (α̂) ≥ α(ρi )} < α̂(ρi ) = max inf {α̂|αpj (α̂) ≥ α(σ)}(Weil α(σ) > α(ρi ), da σα-spät ist.) ≤
pj ,j6=i
pj ,j6=i
(2) α-früh. Reicht zu zeigen für k-Dimensionale Co-Faces von σ. Sei τ so ein Co-Face mit
zusätzlichem Vertex p.
α̂(σ) = maxpj ∈{p1 ,...,pk } inf {α̂|αpj (α̂) ≥ α(σ)} < α̂(σ) = maxpj ∈{p1 ,...,pk } inf {α̂|αpj (α̂) ≥ α(τ )}(W eilα(σ) < α(τ ))
(1) und (2) => σ ist α̂-kritisch, was zu zeigen war.
Konforme Alpha Shapes für Flächenrekonstruktion: [Bild]
Idee: Skaliere das Ballwachstum, so dass erscheinen von Simplices inzident zu Sample
Punkt P nur von der Form von Vp abhängt, aber nicht von der Skalierung.
Dazu: αp− = αp1 = 0 (nämlich p selbst zum Zeitpunkt α = 0 im Alpha Shape auf)
αp+ = kp − p∗ k, p∗ zweiter Pol von p
(1) Voronoi Zelle beschränkt, dann P ol(p) Voronoi-Vertex in Vp , der größten Abstand zu
p hat. [Bild] P ol(p) - p Pol-Vektor
(2) Falls Vp unbeschränkt ist, dann ist der Pol-Vektor die „durchschnittliche Richtung“
aller Voronoi-Kanten. [Bild]
Zweiter Pol (auch negativer Pol genannt) von p ist der am weitesten entfernte Vertex q
von p in Vp , im Halbraum mit beschränkender Hyperebene mit normale der Pol-Vektor,
d. h. ](P ol − V ektor, p − q) ≥ π2
Lemma 3.16
ε
Sei Σ eine glatte Fläche, P sei ein ε-Sampling von Σ. Dann ist für α̂ ≥ η := 1−ε
die
Delaunay Triangulierung von P eingeschränkt auf Σ (d. h. DΣ (P )) im konformen Alpha
Shape zu 2 enthalten.
73
3 Geometrisch modellieren
Beweis:
Sei αpi der größte α-Wert für den ein Simplex σ aus DΣ (P ) inzident zu p ∈ P im Alpha
Shape erscheint. Dann ist αpi ≤ ηf (p) [ε-Sampling Bedingung und Feature Translation
Lemma]
αp+ ≥ f (p) [Da Voronoizelle Vp Mittelpunkt der medialen Achsenbälle Tangential an Σ
in p enthält]
=> α̂pC =
αip
α+
p
≤
ηf (p)
f (p)
≤η
Vorlesung vom 13.1.09 fehlt..
74
4 Topologie (Homologie)
Definition 4.1 (Topologischer Raum)
Menge X, σ ⊆ P (X) (Menge aller Teilmengen)
1. ∅, X ∈ σ
2. Beliebige Vereinigung von Mengen aus σj sind wieder in σ
3. endliche Schnitte von Mengen sind wieder in σ
Definition 4.2 (Stetige Abbildung)
Seien X, Y topologische Räume. X 7→ Y heißt stetig, falls das Urbild einer offenen Menge
immer offen ist.
Definition 4.3 (Homeomorphismus)
f : X 7→ Y heißt homeomorphismus, falls f bijektiv ist und sowohl f als auch f −1 stetig
sind.
Definition 4.4 (Homeomorph)
X, Y heißen homeomorph, falls es homeomorphismus f : X 7→ Y gibt. [X und Y sind im
topologischen Sinne gleich]
Testen auf homeomorphie ist schwierig. [Nicht im Sinne von Berechenbarkeitstheorie,
aber im technischen Sinn, d. h. es gibt wenige Werkzeuge.]
Klasifizieren von Flächen (geschlossene Flächen)
1. orientierbare Flächen (normale: Kugel, Donut, zusammengeklebte Donuts)
2. nicht-orientierbaree Flächen (Kugel mit rundem Ausschnitt, in Ausschnitt ist
Möbiusband geklebt (Hat Kreis als Rand))
Zylinder -> Fläche mit Rand, keine Manigfaltigkeit mehr.
Definition 4.5 (Homotopyäquivalenz)
Seien X, Y topologische Räume. Zwei stetige Abbildungen f, g : X 7→ Y heißen homotop
zueinander, falls es eine stetige Abbildung
H : X × [0,1] 7→ Y
gibt, so dass H(x,0) = f (x) und H(x,1) = g(x)∀x ∈ X.
75
4 Topologie (Homologie)
Definition 4.6 (Homotopyäquivalent)
X, Y sind homotopyäquivalent, falls es stetige Abbildungen f : X 7→ Y und g : X 7→ Y
gibt, so dass g ◦ f homotop ist zu IDx und f ◦ g homotop ist zu IDy . IDx : X 7→ X
identische Abbildung x 7→ x.
Definition 4.7 (Deformationsretrakt)
Sei X ein topologischer Raum und Y ⊂ X Unterraum. Ein Deformationsretrakt ist eine
stetige Abbildung F : X × [0,1] 7→ X mit
1. F (x,0) = x∀x ∈ X
2. F (x,1) ∈ Y ∀x ∈ X
3. F (y, t) = y∀y ∈ Y, ∀t ∈ [0,1]
Beispiel 4.1
Bild: Kreisscheibe, viele Pfeile gehen von Kreisscheibe richtung Mittelpunkt. Länge der
Pfeile etwa halber Radius.
Kreisscheibe ist homotopyäquivalent zu einem Punkt.
Bild: Zwei zusammengeklebte Donuts, mediale Achse, Pfeile vom rand richtung mediale
Achse.
Jede offene Teilmenge des Rd ist homeotopyäquivalent zu seiner medialen Achse.
Hier nur topologische Räume, die Teilmengen des Rd sind. σ für Rd besteht aus allen
Teilmengen X ⊆ Rd , so dass für jedes x ∈ X gibt es εx > 0, so dass B(x, εx j) ⊆
X
Topologie für Σ ⊂ Rd : σΣ = {Σ ∩ O|O ∈ σ}
Definition 4.8 (Homotopie invariante)
Eine Invariante ordnet topologischen Räumen algebraische Objekte zu (z. B. Gruppen,
Körper oder Zahlen), so dass wenn für zwei topologische Räume X, Y gilt i(X) 6= i(Y ),
dann sind X und Y nicht homotopieäquivalent.
4.1 Homologietheorie
Invarianten für topologische Räume X ⊆ Rd (X erbt die Topologie von Rd )
Berechnungen für allgemeines X schwierig, deshalb Einschränkung auf spezielle Teilmengen: simpliziale Komplexe.
Definition 4.9 (k-Simplex)
Die konvexe Hülle von k + 1 affin unabhängigen Punkten im Rd heißt k-Simplex.
76
4.1 Homologietheorie
Seien p1 , . . . , pk+1 affin unabhängig. σ(p1 , . . . , pk+1 ) ist der zugehörige k-Simplex und für
jede Teilmenge P ⊂ {p1 , . . . , pk } ist τ = σ(P ) ein Face von σ = σ(p1 , . . . , pk+1 ).
Definition 4.10 (Simplizialer Komplex)
Ein simplizaler Komplex K ist Menge von Simplices mit:
1. σ ∈ K => jedes Face von σ ist in K
2. σ, τ ∈ K => σ ∩ τ = ∅ oder σ ∩ τ ist gemeinsames Face von σ und τ
Ziel: konstruiere abelsche Gruppen aus den Mengen der k-Simplices, k = 0,1,2,3, . . .
Definition 4.11 (Abelsche Gruppe)
(G, +) mit Menge G und Abbildung + : G × G → G, so dass: 1. ∀a ∈ G : ∃ − a ∈ G mit
a + (−a) = 0 [Existenz eines Inversen] 2. Kommutativ ∀a, b ∈ G gilt: a + b = b + a
Definition 4.12 (Untergruppe)
H ⊆ G ist Untergruppe von G, falls H selbst eine Gruppe ist, wenn wir + einschränken
auf H. Insbesondere 0 ∈ H.
Definition 4.13 (Ko-Menge)
Sei H Untergruppe von G und a ∈ G, dann ist die Menge a + H eine Ko-Menge.
Beobachtung
Es gibt immer eine Bijektion von H auf eine Ko-Menge, da b 6= c ∈ H impliziert
a + b = a + c.
Definition 4.14 (Quotient)
Sei G abelsche Gruppe und H Untergruppe, dann ist der Quotient G|H die Menge aller
Ko-Mengen.
Beobachtung
1. Für a, b ∈ G gilt entweder
a) a + H = b + H, oder
b) (a + H) ∩ (b + H) = ∅
2. Der Quotient G|H ist selbst wieder eine abelsche Gruppe mit der Addition
(a + H) + (b + H) = a + b + H
Beachte: Addition hängt nicht von Repräsentation der Ko-Menge ab.
z ∈ a + H => ∃ha ∈ H mit z = a + ha z + H = a + ha + H = a + H
3. Falls G eine endliche Gruppe ist, d. h. G hat nur endlich viele Elemente, dann
kG|Hk = kGk|kHk
77
4 Topologie (Homologie)
Definition 4.15 (Gruppen Homomorphismus)
Seien G und G0 eine Abbildung f : G → G0 heißt Gruppenhomomorphismus, falls F mit
der Addition kommutiert, d. h. f (a + b) = f (a) + f (b)
Definition 4.16 (Kern & Bild eines Homomorphismus)
Sei f : G → G0 Gruppenhomomorphismus, dann ist Bild(f ) ⊆ G0 : {b ∈ G0 |∃a ∈
G0 mit f (a) = b}
Kern(f ) ⊆ G : {a ∈ G|f (a) = o ∈ G}
Bild(f ) ist Untergruppe von G0 und Kern(f ) ist Untergruppe von G.
Definition 4.17 (Addition mit simplizialen Komplexen)
Sei Y simplizaler Komplex und Yk = {σ ∈ Y |dim(σ) = k} K-te Kettengruppe Ck . Sei
P (Yk ) die Menge aller Teilmengen von Yk . Wir definieren eine Addition auf Ck wie folgt:
a, b ∈ Ck : a + b := (a ∪ b) \ (a ∩ b) (symmetrische Differenz)
Beispiel 4.2
(Bild von Dreieck mit Ecken a,b,c. Fläche ist schraffiert.)
Y1 = {{a, b}, {b, c}, {a, c}}
C1 = {∅, {{a, b}}, {{b, c}}, {{a, c}}, {{a, b}, {b, c}}, {{a, b}, {a, c}}, {{b, c}, {a, c}}, {{a, b}, {b, c}, {a, c}
(Bild:
{{a,b},{b,c}} + {{a,c}} = {{a,b},{b,c},{a,c}}
{{a,b},{b,c}} + {{a,c},{a,b}} = {{b,c},{a,c}}
{{a,b},{b,c},{a,c}} + {{b,c}} = {{a,b},{a,c}} )
Definition 4.18 (Randhomomorphismus)
δ · Ck → Ck+1 . Sei σ ∈ Yk , dann wird σ abgebildet auf seinen Rand, d. h.
δ(σ) = {τ ∈ Yk−1 |τ ist ein Face von σ}
δ ist definiert, als die additive Fortsetzung von δ von Simplices auf Ketten, d. h. sei
a ∈ Ck , a = {σ1 , . . . , σn } dann δ(a) = δ(σ1 ) + δ(σ2 ) + . . . + δ(σn )
Definition 4.19 (Zyklen & Ränder)
Ck+1 →δk+1 Ck →δk Ck−1
Zk = {a ∈ Ck |δk (a) = ∅} ⊆ Ck
Zyklen in Ck als Kern von δk eine Untergruppe von Ck .
Beispiel 4.3
1. (Bild: Dreieck abc, Inhalt nicht schraffiert)
Z1 = {∅, {{a, b}, {b, c}, {a, c}}}
78
4.2 Simplizale Homologie
2. (Bild: Dreieck abc, Inhalt schraffiert, und Dreieck def)
Z1 = {∅, {{a, b}, {b, c}, {a, c}}, {{d, e}, {e, f }, {d, f }, {{a, b}, {b, c}, {a, c}, {d, e}, {e, f }, {d, f }}}}
Bk = {a ∈ Ck |∃b ∈ Ck+1 mit δk+1 (b) = a} ⊆ Ck
Ränder in Ck . Als Bild von δk+1 eine Untergruppe von Ck .
Beispiel 4.4
1. B1 = {∅}
2. B1 = {∅, {{a, b}, {b, c}, {a, c}}}
Lemma 4.1 (Fundamentales Lemma der Homologietheorie)
δk δk+1 (d) = ∅
Beweis:
Sei σ ein (k + 1)-Simplex. Jedes (k − 1)-Face im Rand δk+1 (σ) gehört zu genau zwei
k-Faces von σ => δk δk+1 (σ) = ∅
Sei d eine (k+1)-Kette. d = {σ1 , . . . , σn }. Dann gilt wegen der Linearität von δk+1 :
δk δk+1 (d) = δk
n
X
i=1
δk+1 (σi ) =
n
X
δk δk+1 (σi ) = ∅
i=1
Folgerung
Es gilt immer Bk ⊆ Zk ⊆ Ck , d. h. Bk Untergruppe von Zk und Zk Untergruppe von Ck .
Definition 4.20 (k-te Homologiegruppe)
k-te Homologiegruppe ist der Quotient. Zk |Bk =: Hk
4.2 Simplizale Homologie
Y simplizaler Komplex
Definition 4.21 (Kettengruppe)
Kettengruppen Ck : Ck ist die Menge aller Teilmengen der k-Simplizes von Y . Wird
Abelsche Gruppe mit Addition als symmetrische Diffeerenz
a, b ∈ Ck : a + b := (a ∪ b) \ (a ∩ b)
(Addition Modulo 2)
Definition 4.22 (Randabbildung)
Randabbildung δk : Ck → Ck−q : Bilde k-Simplizes auf ihren (k − 1)-Dimensionen . . . .
79
4 Topologie (Homologie)
Definition 4.23 (Zyklengruppe)
Zyklengruppen Zk : {a ∈ Ck |δk (a) = 0}, d. h. Zk sind die k-Ketten, deren Rand leer ist.
Definition 4.24 (Randgruppen)
Randgruppen: Bk : {a ∈ Ck |∃b ∈ Ck+1 mit δk+1 (b) = a}, d. h. Bk sind die k-Ketten, die
(k + 1)-Ketten beranden.
Folgerung
Aus fundamentalen Lemma der Homologie (δk ◦ δk+1 = 0) folgt: Bk ⊆ Zk
Definition 4.25 (Homologiegruppen)
Homologiegruppen: Hk = Zk |Bk
bild
Bildliche Darstellung:
Beispiel 4.5
homologie von Dreieck a,b,c:
C0 = {∅, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}}
Z 0 = C0
B0 = {∅, {a, c}, {a, b}, {b, c}}
H0 = Z0 |B0 = Menge aller Ko-Mengen von Z0 bezüglich B0 = {{a}+B0 = {{a}, {b}, {a, b, c}, }}
= {b} + B0 = {a, b, c} + B0
{∅ + B0 = {∅, {a, b}, {b, c}, {a, c}}} = {a, b} + B0 = {b, c} + B0 }
=> |C0 | = |Z0 | = 8, |B0 | = 4, |H0 | = 2 => β0 = 1
C1 = {∅, {ab}, {bc}, {ac}, {ab, ac}, {ab, bc}, {ac, bc}, {ab, bc, ac}}
Z1 = {∅, {ab, bc, ac}}
B1 = {∅}
H1 = {∅ + B1 = {∅}, {ab, bc, ac} + B1 = {∅, {ab, bc, ac}}}} => |H1 | = 2, β1 = 1
C2 = {∅}, Z2 = {∅}, B2 = {∅} => H2 = {∅} => |H2 | = 1 => β2 = 0
Bettizahlen(Dreieck) = (1,1,0)
Beispiel 4.6
Beispiel 2: V = {a,b,c}, E = {{ab}, {bc}}
C0 = {∅, {a}, {b}, {c}, {a, b}{b, c}, {a, c}, {a, b, c}} = Z0
B0 = {∅, {a, b}, {b, c}, {a, c}} => |H0 | = 2 => β0 = 1
Enttäuschend: Die nullte Bettizahl hilft nicht, Dreieck von Segment zu unterscheiden.
C1 = {∅, {ab}, {bc}, {ab, bc}}
80
4.2 Simplizale Homologie
Z1 = {∅}
B1 = {∅} => H1 = {∅} => |H1 | = 1 => β1 = 0
C2 = {∅} = Z2 = B2 = H2 => β2 = 0
Bettizahlen(Segment) = (1,0,0)
Beispiel 4.7
Beispiel 3: V = {a, b, c} , E = {{b, c}}
C0 = {∅, {a} , {b} , {c} , {a, b} , {b, c} , {a, c} , {a, b, c}} = Z0
B0 = {∅, {b, c}} => |H0 | = 4 => β0 = 2
C1 = {∅, {bc}}, Z1 = {∅} => B1 = {∅} => H1 = {∅} => |H1 | = 1 => β1 = 0
ausserdem: β2 = 0
Bettizahl(Punkt + Segment) = (2,0,0)
Beobachtung
β0 zählt die Anzahl der Zusammenhangskomponenten des simplizialen Komplexes
Beweis:
Sei Y simplizialer Komplex mit n Kanten und m Zusammenhangskomponenten. Seien
n1 , . . . , nm die Anzahl der Knoten in den einzelnen Zusammenhangskomponenten. n =
n1 + . . . + nm
Z0 = C0 = Menge aller Teilmengen der Knotenmenge => |Z0 | = 2n
Beobachtung
1. Alle Teilmengen der Knotenmenge einer Zusammenhangskomponente beranden
genau dann, wenn die Teilmenge eine gerade Anzahl von Knoten enthält.
2. genau die Hälfte aller Teilmengen hat gerade Anzahl von Knoten
Folgerung
m
Anzahl der berandeten Teilmengen ist (2n−1 )(2n−1 ) . . . (2nm −1 ) = 2Σi=1 ni −m = 2n−m =>
|H0 | = |Z0 |B0 | = 2n /2n−m = 2m j => β0 = log2 |H0 | = m
Formal: Y : d-Dimensionaler simplizaler Komplex, d. h. die Dimension des höchstdimensionalen Simplex in Y ist d:
Definition 4.26 (Kettenkomplex)
{∅} →δd+1 Cd →δd Cd−1 →δd−1 . . . C0 →δ0 {∅}
Definition 4.27 (Rang einer endlichen Gruppe)
Anzahl der Elemente in der Gruppe
81
4 Topologie (Homologie)
Definition 4.28 (k-Betti Zahl)
log2 des Rangs der k-ten Homologiegruppe.
Zusammenhang der Eulerzahl und der Bettizahl: Y d-dimensionaler simplizialer Komplex.
Ck die Anzahl der k-Simplizes in Y
χ(Y ) =
k
k=0 (−1) Ck
Pd
(Graph in der Ebene: v − e + f = χ(G) = 2)
Seien zk dei Anzahl der k-Zyklen, bk die Anzahl der k-Ränder Daraus folgt |Hk | = zk /bk
=> βk = log2 zk − log2 bk .
Weiterhin log2 |Ck | = log2 zk + log2 bk−1
Bemerkung 4.1
δk : Ck → Ck−1 , dim Ck = dim Kern(δk ) + dim Bild(δk )
(aus Linearer Algebra)
=> χ(Y ) = Σ(−1)k Ck = Σ(−1)k (log2 zk + log2 bk−1 ) = Σ(−1j k (log2 zk − log2 bk )) =
Σ(−1)k βk
Achtung bei den Randfällen: log(bk−1 ) := 0 d. h. Eulerzahle ist alternierende Summe der
Bettizahlen.
=> Wenn Bettizahl Homotopieinvariante, dann auch Eulerzahl.
4.3 Berechnung von Bettizahlen
Ck , k-te Kettengruppe, δk : Ck → Ck−1 , Zk k-te Zyklengruppe (Kern der Randabbildung), Bk k-te Randgruppe (Bild der Randabbildung), Hk = Zk |Bk k-te Homologiegruppe.
ck = log2 |Ck |, zk = log2 |Zk |, bk = . . . , βk = log2 |Hk |
=> ck = zk + bk−1 (Rangsatz aus linearer Algebra) βk = zk − bk
(a) zk = zk + 1
(b) bk−1 = bk−1 + 1
82
4.3 Berechnung von Bettizahlen
=> (a) für den Rang von Hk (d. h. für βk ): βk = βk + 1
=> (b) für den Rang von Hk−1 (d. h. für βk−1 ): βk−1 = βk−1 − 1
Bei Alpha Shapes: (a) erzeugt, (b) zerstört.
Frage: Wie können wir Rang von Ck um eins erhöhen?
Antwort: Durch Filtrierung des simplizialen Komplexes Y .
Filtrierung von simplizialen Komplex Y
Folge Y0 , Y1 , . . . , Yn von simplizialen Komplexen mit
1. Y0 = ∅, Y1 = Y, Yi ⊂ Yi+1 (Teilkomplex, d. h. alle simplizes aus Yi sind auch in Yi+1 )
2. Yi und Yi+1 unterscheiden sich um genau einen Simplex
Bemerkung 4.2
Aus der Forderung Yi simplizialer Komplex folgt, dass ein Face immer vor seinen Co-Faces
eingefügt wird.
Beispiel 4.8
Eindimensionaler simplizialer Komplex Bild: (Dreieck): ∅, ein Knoten, zwei Knoten, die
Kante dazwischen, der dritte Knoten, zweite Kante, dritte Kante
Hinzufügen eines k-Simplex erhöht ck um eins.
β0 = 0, β1 = 0
β0 = 1, β1 = 0
β0 = 2, β1 = 0
β0 = 1, β1 = 0
β0 = 2, β1 = 0
β0 = 1, β1 = 0
β0 = 1, β1 = 1
Algorithmus: Union-Find
Datenstruktur, die die folgenden 3 Operationen unterstützt:
• Add(i): Erzeugt eine neue Komponente für Element i.
• Find(i,j): Gibt „wahr“ zurück, falls i und j zur selben Komponente gehören, sonst
„falsch“
• Union(i,j): Vereinige die Komponenten, zu der i und j gehören.
83
4 Topologie (Homologie)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Input: σ1 , . . . , σn Simplizes von Y in der Einfügereihenfolge gemäß der Filtrierung
β0 = 0, β1 = 0 for i = 1 To n do
if dim(σi ) = 0 then
β0 = β0 + 1
Add(σi )
else
{a, b} = Endpunkte von σi
if F ind(a, b) = T rue then
β1 = β1 + 1
else
β0 = β0 − 1
U nion(a, b)
end
end
end
Algorithm 4.1: Berechnung der Bettizahlen im 2D
Algorithmus für eindimensionale Komplexe:
Erweiterung auf dreidimensionale Komplexe:
Fallunterscheidung: Dim(σi )
= 0: Immer β0 = β0 + 1, erzeugen von Komponente
= 1: entweder β0 = β0 − 1 (Zwei Komponenten werden verbunden) oder β1 = β1 + 1
(ein Loch wird hinzugefügt)
= 2: entweder β1 = β1 − 1 (nicht berandende Kette wird berandend) oder β2 = β2 + 1
(erzeugen von 2-Zyklus)
= 3: β2 = β2 − 1 zerstören von 2-Zyklus.
Problem: Dim(σi ) = 2 Dreieck
Lösungsidee: Gehe rückwärts durch die Filtrierung
Bsp in der Ebene: Aufbau eines dualen Graphen.
Entfernen von Dreiecken erzeugt Komponenten, entfernen von Kanten
(a) vereinigt Komponenten oder
(b) erzeugt einen Zyklus
(a) β1 = β1 + 1 (Zerstören eines Zyklus im Komplement)
(b) β0 = β0 − 1 (Erzeugt Zusammenhangskomponente im Komplement)
84
4.3 Berechnung von Bettizahlen
Schwierigkeit: Was ist mit Kanten im Rand das simplizialen Komplexes?
In Vorwärtsbetrachtung hat Kante Zyklus erzeugt, d. h. β1 = β1 + 1, aber hier vereinigt
das entfernen keine Komponenten im dualen Graph.
Lösung: Kompaktifizieren, d. h. füge virtuellen Punkt im „unendlichen“ hinzu plus den
Kegel auf dem Rand.
Zusätzliche Kanten verbinden Vertices auf dem Rand mit dem Punkt um unendlichen und
Dreiecke aus Kanten auf dem Rand plus dem Vertex im unendlichen.
Erweitert Filtrierung um zusätzliche Kanten und Dreiecke.
Änderung: Einfügen des letzten Dreiecks zerstört nicht, sondern erzeugt.
Eine Dimension höher: Kompaktifizieren von 3D simplizialen Komplex mittels Punkt
im unendlichen, und rückwärts durchlaufen einer erweiterten Filtrierung erlaubt zu
entscheiden, ob ein Dreieck erzeugt oder zerstört.
–Vorlesung fehlt (30. 1. 09)
Paaren von vernichtern und Erzeugern in persistenter Homologie
Filtrierung: Y1 = ∅, Y2 , . . . , Yn = Y Filtrierung von Y , d. h. insbesondere Yj und Yj+1
unterscheiden sich in genau einem Simplex σj+1 = Yj+1 Yj
Annahme: Alle σj gelabeld als Vernichter bzw. Erzeuger
Persistente i-te Homologiegruppe: Dazu i-dimensionale Erzeuger und (i + 1)-Dimensionale
Vernichter sortiert entlang der Filtrierung.
Paaren von Vernichtern und Erzeugern: Dazu explizit Aufrechterhalten von Basis der
i-ten Homologiegruppen Hij [i-te Homologiegruppe für j-ten Komplex] Explizite: Zyklen,
die genau einen Erzeuger enthalten
Beobachtung
Eine solche Basis existiert immer
Beweis:
Induktion: Erster Zykel (d. h. für kleinstes j, so dass Hij nicht trivial) ist (= 0) wird vom
ersten Erzeuger erzeugt.
Induktionsschritt: Gegeben irgendein Zykel Z, der aktuellen Erzeugere enthält. Falls
Zykel noch „ältere“ Zykel enthält, dann addiere die zugehörigen Basiszykel zu Z. Da
Basiszykel genau einen Erzeuger enthält, kann Z durch diese Addition nicht leer werden.
Außerdem entfernt jede Addition genau einen Basiszyklus.
85
4 Topologie (Homologie)
Falls σl Erzeuger [von einem i-Zyklus], dann sei cl der zugehörige Basiszyklus.
Jetzt Annahme: σj ist (i + 1)-dimensionaler Simplex, der vernichtet. => δσj ist ein
Zyklus in Yj+1 . Wir können d ausdrücken als Summe:
Σcl + Bj
mit ck Basiszyklen.
Diese Summe ist eindeutig [Eindeutige Darstellbarkeit aus Basis]
Sei ci der jüngste Zyklus in dieser eindeutigen Darstellung und sei σi der zugehörige
Erzeuger, dann Paaren wir σi und σj , d. h.
Interpretation: Der durch σi erzeugte Zyklus wird durch σj zerstört. [eingekastet, erlaubt
Berechnung der Lebensdauer der Features.]
Jetzt: Berechnen der Paarung.
Folge von Simplices σj = Yj Yj−1 , j = 2, . . . , n
Array speichert an Stelle j den zugehörigen Vernichter, falls σj erzeugt und irgendwann
vernichtet wird. Andernfalls speichern von ∞ falls σj erzeugt, aber nicht vernichtet wird,
bzw. gar nichts, falls σj vernichtet. Außerdem wird Zeiger auf Liste die Simplices „älter“
als σj und σj enthält [falls σj erzeugt und vernichtet wird.]
Füllen des Arrays: Gehen linear durch das Array. Annahme an Stelle j wird ein iVernichter eingefügt. Sei I die Indexmenge der i-Erzeuger in δσj , d. h. für alle i ∈ I
gilt i < j. Sei k = max {i ∈ I}. Nachschauen im Array an der Stelle k gibt zwei
Fälle:
1. Feld im Array an der Stelle k ist leer
2. Feld ist nicht leer, d. h. speichert Index von Vernichter mit Index kleiner als j und
Zeiger auf iste mit Indizes kleiner als k.
(1) Speichere j an der Stelle k und Zeiger auf I.
(2) Update: I = (I ⊕ Lk ), d. h. symmetrische Differenz von I und der Liste Lk auf die im
Feld mit Index k verwiesen wird.
Weitermachen am neuen Wert von k.
Was ist zu zeigen für diesen Algorithmus:
1. Algorithmus terminiert
2. Algorithmus ist korrekt
1. Beobachtung: k wird stetig kleiner und I 6= ∅, da δσj kein Randzyklus in Yj−1 ist. Füll
Algorithmus terminiert.
Vor dem Korrektheitsbeweis ein Beispiel:
86
4.3 Berechnung von Bettizahlen
Beispiel 4.9
Filtrierung: Einfügen in dieser Reihenfolge: s, t, u, st, v, w, sw, tw, uv, sv.
Array:
4
7
9
(+,0)
(+,0)
(+,0)
(−,0)
(+,0)
(+,0)
(−,0)
(+,1)
(−,0)
(−,0)
→
→
→
→
→
→
→
→
→
→
s
t
u
st
v
w
sw
tw
vu
sv
→
→
→
1
∞
2
4
(Erzeuger eines 0-Dimensionalen Zyklus)
(Vernichter eines 0-Dimensionalen Zyklus)
3
4
5
9
6
7
7
8
∞
9
10
{1,2}
{1,6}
{3,5}
Bei 10: s in erscheint in 1, v erscheint bei 5. max davon ist 5. 5 ist aber besetzt
10− > {1,3} = {1,5} ⊕ {3,5}
1 und 8 sind die Zusammenhangskomponenten, die überleben.
Zusammenfassende Interpretation:
1. Die Zusammenhangskomponente, die bei j = 1 erzeugt wird, wird nicht zerstört.
2. Die Zusammenhangskomponente, die bei j = 2 erzeugt wird, wird bei j = 4 zerstört.
3. Die Zusammenhangskomponente, die bei j = 3 erzeugt wird, wird erst bei 10
zerstört.
4. Die bei 5 erzeugt wird, wird bei 9 zerstört
5. Bei 6 erzeugt, bei 7 zerstört
6. Der bei 8 erzeugt 1-Zyklus wird garnicht zerstört.
(2) Der Korrektheitsbeweise
Sei f der Zyklus δσj [σj sei i-Vernichter] und i der „jüngste“ Basiserzeuger in eindeutiger Basisdarstellung von f . Sei k der kollisionsfreie Index beim Einfügen von
σj
Wir können zeigen: k = i
(a)
87
4 Topologie (Homologie)
Beobachtung
Yl enthält keinen zu f homologen Zyklus [die homologieklasse von f wird erst zum
Zeitpunkt i erzeugt.] ⇒ k ≥ i
(b) zu zeigen k ≤ i.
Annahme: k > i.
Sei g die Homologieklasse, die zum Zeitpunkt k erzeugt wird. g und f müssen
homolog sein, d. h. g = f + c mit einem Randzyklus c. Da σk der jüngste Erzeuger
in g ist, ist σk auf jüngster Erzeugeer in c. Da Array an Stelle k kollisionsfrei war,
kann σk nicht der Erzeuger sein, der für Rand c vernichtet wurde. Daraus folgt: c
muss einen „jüngeren“ Erzeuger enthalten. Das ist ein Widerspruch. ⇒ k = i
88
5 Meshing
Bisher: Kurvenmeshing (Kurvenrekonstruktion) bzw. Flächenmeshing (Flächenrekonstruktion)
Delaunay-Dreiecke innerhalb der rekonstruierten Kurve Σ sind nicht unbedingt Dreiecke
„guter“ Qualität.
Gute Dreiecke:
1. Der kleinste Winkel in jedem Dreieck ist mindestens α
2. der größte Winkel ist höchstens π − β
3. Das Verhältnis der Höhe über der längsten Seite zur Längsten Seite,d. h.
mindestens λ (Wir wollen das die Dreiecke eine gewisse Dicke haben)
kc−xk
ka−bk
ist
Verhältnis von 1,2 und 3:
1 → 2: Falls kleiner Winkel mind. α, dann ist der größte Winkel höchstens π − α
2 9 1: Man kann den kleinsten Winkel immer kleiner machen, ohne das dies Einfluss
auf den größten Winkel haben muss
3 ↔ 1: α kleinster Winkel, x ist Schnittpunkt der Kante mit der Höhe an c
a) sin α =
kc−xk
ka−ck
b) ka − ck ≤ ka − bk
c) ka − ck ≥ kb − ck => ka − bk ≤ ka − ck + kb − ck ≤ 2ka − ck
=>
1
sin α
=
ka−ck
kc−xk
≤
ka−bk
kc−xk
≤
2ka−ck
kc−xk
=
2
sin α
ka−bk
kc−xk
ist 1/aspectratio, d. h. der Kehrwert des Aspect Ratio beschränkt den kleinsten
Winkel von unten, und der kleinste Winkel beschränkt den Kehrwert des Aspekt Ratio
von oben. (bzw. den Aspect Ratio von Unten).
⇒ d. h. es ist „egal“ ob wir 1 oder 3 sicherstellen.
Idee: Einfügen zusätzlicher Knoten.
Meshing Problem in der Ebene:
1. Gegeben Polygonale Region mit Randgraph G, unter umständen mit geforderten
Kanten im Inneren
89
5 Meshing
2. Gesucht ist eine Triangulierung von G (und den inneren Kanten) deren Dreiecke
alle einen kleinsten Winkel von mindestens α haben.
Kleine Winkel im Eingabepolygon können nicht entfernt werden.
1
2
3
Berechne kleinstes Achsenparalleles Rechteck, das G enthält.
Konstruiere 3x3 Gitter, in dem jede Zelle das Achsenparallele Rechteck aus 1 ist.
Platziere G in die mittlere Zelle und füge die 12 Knoten auf dem Rand des Gitters zu G
hinzu.
Bereche die Delaunay-Triangulierung aller Knoten aus 2
Algorithm 5.1: Ruppert’s Meshing Algorithmus
Ein Aufdringlicher Knoten ist ein Knoten der im diametrischen Umkreis einer Kante aus
G liegt.
Bemerkung 5.1
Falls Kante aus G keinen aufdringlichen Knoten hat, dann gehört sie zur DelaunayTriangulierung
Probleme:
1. Es kann aufdringliche Knoten in Delaunay-Triangulierung aus 3 geben
2. Die Dreiecke aus der Delaunay-Triangulierung aus 3 haben nicht unbedingt einen
kleinsten Winkel ≥ α
Operationen:
Split 1: Falls ab ∈ G und ab ∈
/ Delaunay-Triangulierung aus 3, dann füge den mittelpunkt
m des Segments ab zur Knotenmenge hinzu und füge am und mb zu G hinzu.
Retriangulieren um die Delaunay-Eigenschaft wieder herzustellen. (Flips um alle
Kanten wieder lokal Delauny zu machen)
Split 2: Falls abc ein Dreieck aus der Delaunay-Triangulierung ist, dessen kleinster Winkel
kleiner als α ist, dann füge den Mittelpunkt des Umkreises von abc zur Kontenmenge
hinzu und re-trianguliere, um Delaunay-Eigenschaft wieder herzustellen.
Algorithmus:
90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while true do
while ∃ aufdringlicher Knoten do
Wende Split 1 auf die zugehörige Kante an
end
if @ dünnes Dreieck then
exit while loop
end
abc = dünnes Dreieck
p = mittelpunkt des Umkreises von abc
if p aufdringlich für Kanten e1 , . . . , ek , k ≥ 1 aus G then
split 1 operation angewand auf e1 , . . . , ek
end
split 2 operationen für o, d. h. einfügen von p in Delaunay-Triangulierung.
end
Algorithm 5.2:
91
5 Meshing
Prüfung: unterschied zu Algorithmik: numerik ist relevant floating point system
grundlegend: delaunay-triangulierung, voronoi, eingeschränkte diagramme, auf welche
mengen, was damit machen
92
Herunterladen