Upload
vuongtu
View
221
Download
0
Embed Size (px)
Citation preview
MotivationTriangulating a polygon
Triangulating a polygon
Computational Geometry
Lecture 4: Triangulating a polygon
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
Polygons and visibility
Two points in a simple polygon can see each other if theirconnecting line segment is in the polygon
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
Art gallery problem
Art Galley Problem: How many cameras are needed toguard a given art gallery so that every point is seen?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
Art gallery problem
In geometry terminology: How many points are needed in asimple polygon with n vertices so that every point in thepolygon is seen?
The optimization problem is computationally difficult
Art Galley Theorem: bn/3c cameras are occasionallynecessary but always sufficient
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
Triangulation, diagonal
Why are bn/3c always enough?
Assume polygon P is triangulated: adecomposition of P into disjointtriangles by a maximal set ofnon-intersecting diagonals
Diagonal of P : open line segmentthat connects two vertices of P andfully lies in the interior of P
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
A triangulation always exists
Lemma: A simple polygon with n verticescan always be triangulated, and alwayshave n− 2 triangles
Proof: Induction on n. If n = 3, it istrivial
Assume n > 3. Consider the leftmostvertex v and its two neighbors u and w.Either uw is a diagonal (case 1), or part ofthe boundary of P is in 4uvw (case 2)
Choose the vertex t in 4uvw farthest fromthe line through u and w, then vt must bea diagonal
v
v
u
u
w
w
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
A triangulation always exists
In case 1, uw cuts the polygon into a triangle and a simplepolygon with n− 1 vertices, and we apply induction
In case 2, vt cuts the polygon into two simple polygons withm and n−m + 2 vertices 3 ≤ m ≤ n− 1, and we also applyinduction
By induction, the two polygons can be triangulated usingm− 2 and n−m + 2− 2 = n−m triangles. So the originalpolygon is triangulated using m− 2 + n−m = n− 2triangles �
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
A 3-coloring always exists
Observe: the dual of a triangulated simplepolygon is a tree
Lemma: The vertices of a triangulatedsimple polygon can always be 3-colored
Proof: Induction. True for a triangle
Every tree has a leaf. Remove thecorresponding triangle from thetriangulated polygon, color its vertices, addthe triangle back, and let the extra vertexhave the color different from its neighbors
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
A 3-coloring always exists
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
bn/3c cameras are enough
For a 3-colored, triangulated simplepolygon, one of the color classes is used byat most bn/3c colors. Place the cameras atthese vertices
This argument is calledthe pigeon-hole principle
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Visibility in polygonsTriangulationProof of the Art gallery theorem
bn/3c cameras are enough
Question: Why does the proof fail when the polygon hasholes?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Two-ears for triangulation
Using the two-ears theorem:(an ear consists of three consecutivevertices u, v, w where uw is a diagonal)
Find an ear, cut it off with a diagonal,triangulate the rest iteratively
Question: Why does every simple polygonhave an ear?
Question: How efficient is this algorithm?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Overview
A simple polygon is y-monotone iff anyhorizontal line intersects it in a connectedset (or not at all)
Use plane sweep to partition the polygoninto y monotone polygons
Then triangulate each y-monotone polygon
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Monotone polygons
A y-monotone polygon has a top vertex, abottom vertex, and two y-monotone chainsbetween top and bottom as its boundary
Any simple polygon with one top vertexand one bottom vertex is y-monotone
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Vertex types
What types of vertices does ageneral simple polygon have?
start
stop
split
merge
regular
. . . imagining a sweep line going topto bottom
start
merge regular
split
end
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Sweep ideas
Find diagonals from each mergevertex down, and from each splitvertex up
A simple polygon with no split ormerge vertices can have at most onestart and one stop vertex, so it isy-monotone
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Sweep ideas
explored
unexplored
explored
unexplored
Handling split and merge vertices in the sweep?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Sweep ideas
Where can a diagonal from asplit vertex go?
Perhaps the upper endpoint ofthe edge immediately left ofthe merge vertex?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Sweep ideas
Where can a diagonal from asplit vertex go?
Perhaps the upper endpoint ofthe edge immediately left ofthe merge vertex?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Sweep ideas
Where can a diagonal from asplit vertex go?
Perhaps the upper endpoint ofthe edge immediately left ofthe merge vertex?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Sweep ideas
Where can a diagonal from asplit vertex go?
Perhaps the last vertex passedin the same “component”?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Sweep ideas
Where can a diagonal from asplit vertex go?
Perhaps the last vertex passedin the same “component”?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Sweep ideas
Where can a diagonal from asplit vertex go?
Perhaps the last vertex passedin the same “component”?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Status of sweep
The status is the set of edgesintersecting the sweep line thathave the polygon to theirright, sorted from left to right,and each with their helper: thelast vertex passed in thatcomponent
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Helpers of edges
The helper for an edge e thathas the polygon right of it,and a position of the sweepline, is the lowest vertex vabove the sweep line such thatthe horizontal line segmentconnecting e and v is insidethe polygon
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Status structure, event list
The status structure stores all edges that have the polygon tothe right, with their helper, sorted from left to right in theleaves of a balanced binary search tree T
The events happen only at the vertices: sort them byy-coordinate and put them in a list (or array, or tree)
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Main algorithm
Sort all vertices by y-coordinate and put them in a list.Initialize an empty status structure T
while the event list is not emptydo remove the first event and handle it
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Event handling
Start vertex v:
Insert the counterclockwiseincident edge in T with v as thehelper
v
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Event handling
End vertex v:
Delete the clockwise incidentedge and its helper from T
v
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Event handling
Regular vertex v:
If the polygon is right of the twoincident edges, then replace theupper edge by the lower edge inT , and make v the helper
If the polygon is left of the twoincident edges, then find theedge e directly left of v, andreplace its helper by v
v
v
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Event handling
Merge vertex v:
Remove the edge clockwisefrom v from T
Find the edge e directly left ofv, and replace its helper by v
e
v
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Event handling
Split vertex v:
Find the edge e directly left ofv, and choose as a diagonal theedge between its helper and v
Replace the helper of e by v
Insert the edge counterclockwisefrom v in T , with v as its helper
e
v
helper of e
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Efficiency
Sorting all events by y-coordinate takes O(n log n) time
Every event takes O(log n) time, because it only involvesquerying, inserting and deleting in T
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Degenerate cases
Question: Which degenerate cases arise in this algorithm?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Representation
A simple polygon with somediagonals is a subdivision ⇒use a DCEL
Question: How manydiagonals may be chosen tothe same vertex?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
More sweeping
With an upward sweep in eachsubpolygon, we can find adiagonal down from everymerge vertex (which is a splitvertex for an upward sweep!)
This makes all subpolygonsy-monotone
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Result
Theorem: A simple polygon with n vertices can bepartitioned into y-monotone pieces in O(n log n) time
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Triangulating a monotone polygon
How to triangulate ay-monotone polygon?
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
The algorithm
Sort the vertices top-to-bottom by a merge of the twochains
Initialize a stack. Push the first two vertices
Take the next vertex v, and triangulate as much aspossible, top-down, while popping the stack
Push v onto the stack
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Result
Theorem: A simple polygon with n vertices can bepartitioned into y-monotone pieces in O(n log n) time
Theorem: A monotone polygon with n vertices can betriangulated O(n) time
Can we immediately conclude:
A simple polygon with n vertices can be triangulatedO(n log n) time ???
Computational Geometry Lecture 4: Triangulating a polygon
MotivationTriangulating a polygon
Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon
Result
We need to argue that all monotone polygons together thatwe will triangulate have O(n) vertices
Initially we had n edges. We add at most n− 3 diagonals inthe sweeps, which bound polygons on both sides. So allmonotone polygons together have at most 3n− 6 edges, andtherefore at most 3n− 6 vertices
Hence we can conclude that triangulating all monotonepolygons together takes only O(n) time
Theorem: A simple polygon with n vertices can betriangulated O(n log n) time
Computational Geometry Lecture 4: Triangulating a polygon