Amphi 2 : triangulations de Delaunay (I) Steve Oudot INF562 G eom - - PowerPoint PPT Presentation

amphi 2 triangulations de delaunay i
SMART_READER_LITE
LIVE PREVIEW

Amphi 2 : triangulations de Delaunay (I) Steve Oudot INF562 G eom - - PowerPoint PPT Presentation

INF562 G eom etrie Algorithmique et Applications Amphi 2 : triangulations de Delaunay (I) Steve Oudot INF562 G eom etrie Algorithmique et Applications Amphi 2 : triangulations de Delaunay (I) Steve Oudot (certains slides


slide-1
SLIDE 1

INF562 – G´ eom´ etrie Algorithmique et Applications

Amphi 2 : triangulations de Delaunay (I)

Steve Oudot

slide-2
SLIDE 2

INF562 – G´ eom´ etrie Algorithmique et Applications

Amphi 2 : triangulations de Delaunay (I)

Steve Oudot

(certains slides sont repris du cours de O. Devillers)

slide-3
SLIDE 3

Delaunay Triangulations

  • 1. Definitions and Examples
  • 2. Basic Properties and applications
  • 3. Construction
slide-4
SLIDE 4

Definitions

slide-5
SLIDE 5

looking for nearest neighbor

slide-6
SLIDE 6

looking for nearest neighbor

slide-7
SLIDE 7

Voronoi

Georgy F. Voronoi (1868–1908)

Vi = {q : |qpi| ≤ |qpj| ∀j}

slide-8
SLIDE 8

Voronoi Delaunay

Boris N. Delaunay (1890–1980)

slide-9
SLIDE 9

Voronoi Delaunay Voronoi ↔ geometry Delaunay ↔ connectivity (nerve)

Boris N. Delaunay (1890–1980)

slide-10
SLIDE 10

faces of the Voronoi diagram Voronoi

slide-11
SLIDE 11

faces of the Voronoi diagram Voronoi

slide-12
SLIDE 12

faces of the Voronoi diagram Voronoi

slide-13
SLIDE 13

faces of the Voronoi diagram Voronoi

slide-14
SLIDE 14

Voronoi is everywhere

slide-15
SLIDE 15

Voronoi Empty sphere property

slide-16
SLIDE 16

Voronoi Empty sphere property

slide-17
SLIDE 17

Voronoi

Delaunay

Empty sphere property

slide-18
SLIDE 18

Voronoi

Delaunay

Empty sphere property

slide-19
SLIDE 19

p⋆ = (xp, yp, x2

p + y2 p)

P : z = x2 + y2

point / sphere duality

R2

p = (xp, yp)

slide-20
SLIDE 20

C : x2 + y2 − 2ax − 2by + c = 0 C∗ : z − 2ax − 2by + c = 0 point / sphere duality

R2

slide-21
SLIDE 21

p ∈ C p⋆ ∈ C∗ point / sphere duality

R2

slide-22
SLIDE 22

p ∈ int(C) p⋆ below C∗ point / sphere duality

R2

slide-23
SLIDE 23

p / ∈ int(C) p⋆ above C∗ point / sphere duality

R2

slide-24
SLIDE 24
  • rientation predicate

in-sphere predicate

point / sphere duality

R2

slide-25
SLIDE 25

point / sphere duality

R2 Lower CH Delaunay ⇒ Delaunay is a triangulation

slide-26
SLIDE 26

Basic properties and applications

slide-27
SLIDE 27

nearest neighbor graph p q q nearest neighbor of p ⇒ pq Delaunay edge

slide-28
SLIDE 28

nearest neighbor graph

slide-29
SLIDE 29

k nearest neighbors

query point k − 1 nearest neighbors kth nearest neighbor

slide-30
SLIDE 30

k nearest neighbors

query point k − 1 nearest neighbors kth nearest neighbor

slide-31
SLIDE 31

Largest empty circle

(centered in the convex hull)

slide-32
SLIDE 32

Largest empty circle

(centered in the convex hull)

slide-33
SLIDE 33

Minimum Spanning Tree

slide-34
SLIDE 34

p q

Minimum Spanning Tree

slide-35
SLIDE 35

p q x y ∀[pq] ∈ A, p − q = min{x − y | x ∈ Ap, y ∈ Aq}

Minimum Spanning Tree

slide-36
SLIDE 36

p q

Minimum Spanning Tree

slide-37
SLIDE 37

Mesh generation

(bottom image courtesy of J.-P. Pons)

Applications down the road

slide-38
SLIDE 38

Mesh generation / remeshing

(image courtesy of P. Alliez)

Applications down the road

slide-39
SLIDE 39

Mesh generation / remeshing Reconstruction

(cf. s´ eance 6)

Applications down the road

slide-40
SLIDE 40

Mesh generation / remeshing Reconstruction Path planning Applications down the road

slide-41
SLIDE 41

Mesh generation / remeshing Reconstruction Path planning and many more... Applications down the road

slide-42
SLIDE 42

Properties specific to 2D Delaunay

slide-43
SLIDE 43

Euler formula f: number of facets (except ∞) e: number of edges v: number of vertices f − e + v = 1

slide-44
SLIDE 44

Euler formula f: number of facets (except ∞) e: number of edges v: number of vertices 1 − 3 + 3 = 1 f − e + v = 1

slide-45
SLIDE 45

Euler formula f: number of facets (except ∞) e: number of edges v: number of vertices f − e + v = 1 +1 − 2 + 1 = +0

slide-46
SLIDE 46

number of oriented edges in a triangulation: 2e = 3f + k k: size of ∞ facet

slide-47
SLIDE 47

Euler formula f − e + v = 1 Triangulation 2e = 3f + k

f = 2v − 2 − k = O(v) e = 3v − 3 − k = O(v)

slide-48
SLIDE 48

Euler formula f − e + v = 1 Triangulation 2e = 3f + k

f = 2v − 2 − k = O(v) e = 3v − 3 − k = O(v) 2D Delaunay has linear size!

slide-49
SLIDE 49

Delaunay maximizes the smallest angle

slide-50
SLIDE 50

Delaunay maximizes the smallest angle

slide-51
SLIDE 51

Delaunay maximizes the smallest angle

slide-52
SLIDE 52

... but the converse is false

Delaunay maximizes the smallest angle

slide-53
SLIDE 53
slide-54
SLIDE 54

Delaunay maximizes the sequence of angles in lexicographical order

slide-55
SLIDE 55

Local optimality vs global optimality

highlighted triangle is only locally Delaunay

slide-56
SLIDE 56

Theorem Locally Delaunay everywhere Globally Delaunay

⇐ ⇒

slide-57
SLIDE 57

Theorem Locally Delaunay everywhere Globally Delaunay

⇐ ⇒

Will be useful for computing Delaunay in 2D

(Guibas/Stolfi variant of incremental algorithm)

slide-58
SLIDE 58

Proof:

Let t0 be locally Delaunay, but not globally Delaunay v Let v ∈ disk(t) (v / ∈ t)

t0

slide-59
SLIDE 59

Proof:

Let t0 be locally Delaunay, but not globally Delaunay v Let v ∈ disk(t) (v / ∈ t)

t0

slide-60
SLIDE 60

Proof:

Let t0 be locally Delaunay, but not globally Delaunay v Let v ∈ disk(t) (v / ∈ t)

t0 t1

slide-61
SLIDE 61

Proof:

Let t0 be locally Delaunay, but not globally Delaunay v Let v ∈ disk(t) (v / ∈ t)

t0 t1

slide-62
SLIDE 62

Proof:

Let t0 be locally Delaunay, but not globally Delaunay v Let v ∈ disk(t) (v / ∈ t)

t0 t1

slide-63
SLIDE 63

Proof:

Let t0 be locally Delaunay, but not globally Delaunay

Since ∃ finitely many triangles, at some point v is a vertex of ti

v Let v ∈ disk(t) (v / ∈ t)

t0 t1 t2

slide-64
SLIDE 64

Local optimality and smallest angle Case of 4 points Lemma: For any 4 points in convex position, Delaunay ⇐ ⇒ smallest angle maximized

slide-65
SLIDE 65

Local optimality and smallest angle Case of 4 points

δ

Let δ be the smallest angle

slide-66
SLIDE 66

Local optimality and smallest angle Case of 4 points

p q r s δ

Let δ be the smallest angle

≤ δ iff r / ∈ disk(pqs)

slide-67
SLIDE 67

Algorithm for making a triangulation Delaunay

while ∃ pairs of adjacent triangles that are not locally Delaunay pick an arbitrary pair and flip common edge

slide-68
SLIDE 68

Algorithm for making a triangulation Delaunay

while ∃ pairs of adjacent triangles that are not locally Delaunay pick an arbitrary pair and flip common edge Theorem: whatever the choice of pairs, the algorithm terminates → proof: each flip increases smallest angle in quad ⇒ cannot be undone

slide-69
SLIDE 69

Algorithm for making a triangulation Delaunay

while ∃ pairs of adjacent triangles that are not locally Delaunay pick an arbitrary pair and flip common edge Theorem: whatever the choice of pairs, the algorithm terminates → output is (globally) Delaunay → proof: each flip increases smallest angle in quad ⇒ cannot be undone

slide-70
SLIDE 70

Algorithm for making a triangulation Delaunay

while ∃ pairs of adjacent triangles that are not locally Delaunay pick an arbitrary pair and flip common edge Theorem: whatever the choice of pairs, the algorithm terminates → output is (globally) Delaunay → proof: each flip increases smallest angle in quad ⇒ cannot be undone does not work in higher dimensions (several types of flips possible)

slide-71
SLIDE 71

Theorem Delaunay ⇒ maximum smallest angle Local optimality and smallest angle

slide-72
SLIDE 72

Theorem Delaunay ⇒ maximum smallest angle Let T triangulation Proof: Local optimality and smallest angle

slide-73
SLIDE 73

Theorem Delaunay ⇒ maximum smallest angle Let T triangulation Apply flipping algorithm on T → output is Delaunay Proof: Local optimality and smallest angle

slide-74
SLIDE 74

Theorem Delaunay ⇒ maximum smallest angle Let T triangulation Apply flipping algorithm on T → output is Delaunay Each flip increases angles within quadrangle Proof: Local optimality and smallest angle → output has larger smallest angle

slide-75
SLIDE 75

Computing Delaunay in the Plane Lower bound

slide-76
SLIDE 76

Lower bound for Delaunay Delaunay can be used to sort numbers

slide-77
SLIDE 77

Lower bound for Delaunay Delaunay can be used to sort numbers

Take an instance of sort Assume one can compute Delaunay in R2 Use Delaunay to solve this instance of sort

slide-78
SLIDE 78

Let x1, x2, . . . , xn ∈ R, to be sorted

x1 Lower bound for Delaunay

slide-79
SLIDE 79

Let x1, x2, . . . , xn ∈ R, to be sorted

x1 (x1, x2

1) (x1, x2

1), . . . , (xn, x2 n)

n points

Lower bound for Delaunay

slide-80
SLIDE 80

Let x1, x2, . . . , xn ∈ R, to be sorted

x1

(x1, x2

1), . . . , (xn, x2 n)

n points

Delaunay → order in x Lower bound for Delaunay

slide-81
SLIDE 81

Let x1, x2, . . . , xn ∈ R, to be sorted

x1

(x1, x2

1), . . . , (xn, x2 n)

n points

Delaunay → order in x

O(n) O(n) f(n) O(n) + f(n) ∈ Ω(n log n)

Lower bound for Delaunay

slide-82
SLIDE 82

⇒ f(n) ∈ Ω(n log n) Lower bound for Delaunay

slide-83
SLIDE 83

Computing Delaunay Incremental algorithm

slide-84
SLIDE 84

Algorithm overview

slide-85
SLIDE 85

Algorithm overview

p

slide-86
SLIDE 86
  • Find triangles in conflict with p

Algorithm overview

p

slide-87
SLIDE 87
  • Find triangles in conflict with p

Algorithm overview

p

slide-88
SLIDE 88
  • Find triangles in conflict with p

Algorithm overview

  • Delete triangles in conflict

p

slide-89
SLIDE 89
  • Find triangles in conflict with p

Algorithm overview

  • Delete triangles in conflict
  • Re-triangulate hole w.r.t. p

p

slide-90
SLIDE 90

Why (and how) it works

Property 1: the conflict zone is connected → compute conflict zone by dfs in dual graph

slide-91
SLIDE 91

Why (and how) it works

Property 1: the conflict zone is connected → compute conflict zone by dfs in dual graph Property 2: conflict zone is starred with respect to p → re-triangulating the conflict zone w.r.t. p gives a triangulation

slide-92
SLIDE 92

Why (and how) it works

Property 1: the conflict zone is connected → compute conflict zone by dfs in dual graph Property 2: conflict zone is starred with respect to p Property 3: every new Delaunay triangle is incident to p → re-triangulating the conflict zone w.r.t. p gives a Delaunay tr. → re-triangulating the conflict zone w.r.t. p gives a triangulation

slide-93
SLIDE 93

The Guibas/Stolfi variant

  • Locate point in triangulation
slide-94
SLIDE 94

The Guibas/Stolfi variant

  • Locate point in triangulation
  • Star triangle
slide-95
SLIDE 95

The Guibas/Stolfi variant

  • Locate point in triangulation
  • Star triangle
  • Apply flipping algo.
slide-96
SLIDE 96

The Guibas/Stolfi variant

  • Locate point in triangulation
  • Star triangle
  • Apply flipping algo.
slide-97
SLIDE 97

The Guibas/Stolfi variant

  • Locate point in triangulation
  • Star triangle
  • Apply flipping algo.
slide-98
SLIDE 98

The Guibas/Stolfi variant

  • Locate point in triangulation
  • Star triangle
  • Apply flipping algo.
slide-99
SLIDE 99

The Guibas/Stolfi variant

  • Locate point in triangulation
  • Star triangle
  • Apply flipping algo.

→ implemented in the Jcg library

slide-100
SLIDE 100

Delaunay triangulation with constraints

slide-101
SLIDE 101

Point insertion with constraints

  • Locate point in triangulation
slide-102
SLIDE 102

Point insertion with constraints

  • Locate point in triangulation
  • Star triangle
slide-103
SLIDE 103

Point insertion with constraints

  • Locate point in triangulation
  • Star triangle
  • Apply conservative flipping
slide-104
SLIDE 104

Point insertion with constraints

  • Locate point in triangulation
  • Star triangle
  • Apply conservative flipping
slide-105
SLIDE 105

Point insertion with constraints

  • Locate point in triangulation
  • Star triangle
  • Apply conservative flipping
slide-106
SLIDE 106

Point insertion with constraints

  • Locate point in triangulation
  • Star triangle
  • Apply conservative flipping
slide-107
SLIDE 107

Constraint insertion

slide-108
SLIDE 108

Constraint insertion

  • Insert vertices (if not there)
slide-109
SLIDE 109

Constraint insertion

  • Insert vertices (if not there)
  • If edge is there, return
slide-110
SLIDE 110

Constraint insertion

  • Insert vertices (if not there)
  • If edge is there, return
  • Else, recurse with midpoint
slide-111
SLIDE 111

Pour le TD d’aujourd’hui

  • representation face/sommet de la triangulation

f f.vertex(0) f.vertex(1) f.vertex(2) f f.neighbor(2) f.neighbor(0) f.neighbor(1)

slide-112
SLIDE 112

Pour le TD d’aujourd’hui

  • representation face/sommet de la triangulation

f f.vertex(0) f.vertex(1) f.vertex(2) f HalfedgeHandle(f,0) HalfedgeHandle(f,2) HalfedgeHandle(f,1)

slide-113
SLIDE 113

Pour le TD d’aujourd’hui

  • representation face/sommet de la triangulation

f f.vertex(0) f.vertex(1) f.vertex(2) f.isMarked(2) = true f f.isMarked(1) = false f.isMarked(0) = false

  • representation des arˆ

etes de contrainte