![Page 1: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/1.jpg)
CS633 Lecture 03Polygon Triangulation
Jyh-Ming LienDept of Computer Science
George Mason University
Based on Chapter 3 of the textbook And Ming Lin’s lecture note at UNC
![Page 2: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/2.jpg)
CS633
Triangulation
• Chapter 3 of the Textbook
• Driving Applications– Guarding an art gallery– Rendering– Collision detection– Simulation (finite element method)– …
![Page 3: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/3.jpg)
CS633
Guarding an Art Gallery
• Place as few cameras as possible
• Each part of the gallery must be visible to at least one of them
• Problems: how many cameras and where should they be located?
![Page 4: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/4.jpg)
CS633
Art Gallery: Transform to Geometric Problem
• Floor plan may be sufficient and can be approximated as a simple polygon.
– A simple polygon is a region enclosed by single closed polygonal chain that doesn’t self-intersect
• A camera’s position corresponds to a point in the polygon
• A camera sees those points in the polygon to which it can be connected with an open segment that lies in the interior of the polygon– assuming we have omni-cam that sees all directions
![Page 5: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/5.jpg)
CS633
Art Gallery:Problem Analysis
• Bound the number of cameras needed in terms of n, number of vertices in the polygon
• 2 polygons with the same number of vertices may not be equally easy to guard– A convex polygon can always be guarded by 1
• Note: Find the minimum number of cameras for a specific polygon is NP-hard
![Page 6: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/6.jpg)
CS633
Art Gallery: Our Plan
• Triangulate the polygon P– Decompose P into a set of simpler shapes– Decompose each shape to triangle
• Place a camera in each triangle
![Page 7: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/7.jpg)
CS633
Triangulation of a Polygon
• Definition: A decomposition of a polygon into triangles by a maximal set of non-intersecting diagonals
• Triangulations are usually NOT unique
![Page 8: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/8.jpg)
CS633
Can Any Polygon Be Triangulated?
• Yes, but how?
v
![Page 9: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/9.jpg)
CS633
Size of Triangulation
• Any triangulation of a simple polygon with n vertices consists of exactly n-2 triangles
• How many diagonals?
![Page 10: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/10.jpg)
CS633
Polygon Triangulation
• Brute force: Find a diagonal and triangulate the two resulting sub-polygons recursively: O(n2)
• Ear clipping/trimming: O(n2)
Clearly we need more efficiently?
![Page 11: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/11.jpg)
CS633
Polygon Triangulations
• Triangulation of a convex polygon: O(n)
• First decompose a nonconvex polygon into convex pieces and then triangulate the pieces. – But, it is as hard to do a convex decomposition as
to triangulate the polygon
=> Decompose a polygon into monotone pieces
![Page 12: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/12.jpg)
CS633
Polygon Triangulations
• Decompose a simple polygon into a monotone polygon: O(nlogn)– Plane sweep algorithm
• Triangulation of a monotone polygon: O(n)
Total time to compute a triangulation: O(nlogn)
![Page 13: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/13.jpg)
CS633
Partition a Polygon into Monotone Pieces
• A simple polygon is monotone w.r.t. a line l if for any line l’ perpendicular to l the intersection of the polygon with l’ is connected
ll
k
![Page 14: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/14.jpg)
CS633
Partition a Polygon into Monotone Pieces
• Property: If we walk from a topmost to a bottom-most vertex along the left (or right) boundary chain, then we always move downwards or horizontally, never upwards
l
![Page 15: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/15.jpg)
CS633
Turn Vertex
Imagine walking from the topmost vertex of P to the bottommost vertex on the left/right boundary chain…...
• Definition: A vertex where the direction in which we walk switches from downward to upward or vice versa
![Page 16: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/16.jpg)
CS633
Turn Vertex
l
![Page 17: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/17.jpg)
CS633
Types of Turn Vertices
• Start Vertex - its two neighbors lie below it and the interior angle < 180°
• End Vertex - its two neighbors lie above it and the interior angle < 180°
• Split Vertex - its two neighbors lie below it and the interior angle > 180°
• Merge Vertex - its two neighbors lie above it and the interior angle > 180°
![Page 18: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/18.jpg)
CS633
Types of Turn Vertices
split
merge
start
end
![Page 19: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/19.jpg)
CS633
Turn Vertex
• To partition a polygon into y-monotone pieces, get rid of split and merge vertices by adding diagonals
![Page 20: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/20.jpg)
CS633
Property Summary
• The split and merge vertices are sources of local non-monotonicity
• A polygon is y-monotone if it has no split or merge vertices
• Use the plane-sweep method to remove split & merge vertices
![Page 21: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/21.jpg)
CS633
Plane Sweep
• Input: A simple polygon P– v1 … vn: a counter-clockwise
enumeration of vertices of P
– e1 … en: a set of edges of P, where ei = segment (vi , vi+1)
• Events (places where the sweep line status changes)– Polygon vertices
– Sorted from top to bottom vi
vi+1ei
![Page 22: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/22.jpg)
CS633
Plane Sweep
• Status of the sweep line– Intersecting edges
• Ordered from left to right
• Only store edges that P is on the right (Should be clear later)
– Helper of the edge
• The helper of edge ei
– Is a vertex
– The lowest vertex above l that can see ei
ei
Helper of ei
![Page 23: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/23.jpg)
CS633
Remove Split Point
• If the sweep line stops at a split point– add a diagonal
– from the split point
– To the lowest point (above l) between its left and right segment (in the status)
– this is exactly the helper of the segment
ei
![Page 24: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/24.jpg)
CS633
Remove Merge Point
• If the sweep line stops at a merge point– add a diagonal
– from the merge point
– To the highest point (below l) between its left and right segment (in the status)
ei
![Page 25: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/25.jpg)
CS633
Remove Merge Point
• Merge point can be also handled using helper!– When the sweep line is at q, the
helper of ei is p
– After at q, the helper of ei is q
– When a merge point is replaced we add a diagonal
ei
qp
![Page 26: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/26.jpg)
CS633
BREAK TIME!
• Take a 10 min break
![Page 27: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/27.jpg)
CS633
Make Monotone: Algorithm
Input: A simple polygon P
Output: A partitioning of P into monotone subpolygons
1. Construct a priority queue Q on the vertices of P, using their y-coordinates as priority. If two points have the same y-coordinates, the one with smaller x has higher priority
2. Initialize an empty sweep line status T
3. while Q is not empty
4. do Remove vi with the highest priority from Q
5. Call the appropriate procedure to handle the vertex,
depending on its type
![Page 28: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/28.jpg)
CS633
Start Vertex
(Insert ei)
Insert ei in T and set helper(ei) to vi
ei
vi
![Page 29: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/29.jpg)
CS633
End Vertex
(Delete ei-1)1. if helper(ei-1) is a merge vertex
then Insert diagonal connecting vi to helper(ei-1) in D
2. Delete ei-1 from T
ei-1
vi
ei
![Page 30: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/30.jpg)
CS633
Split Vertex
(Update ej )Search in T to find the edge ej directly
left of vi
Insert diagonal connecting vi to helper(ej ) in D
helper(ej ) ← vi
(Insert ei)Insert ei in T and set helper(ei ) to vi
ej vi
Helper of ej
ei
![Page 31: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/31.jpg)
CS633
Merge Vertex
(Delete ei-1)if helper(ei-1) is a merge vertex then Insert diagonal connecting vi to
helper(ei-1) in D
Delete ei-1 from T
(Update ej )Search in T to find the edge ej directly left
of vi
if helper(ej) is a merge vertex then Insert diagonal connecting vi to
helper(ej) in Dhelper(ej ) ← vi
ej
vi Helper of ej
ei ei-1
![Page 32: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/32.jpg)
CS633
Regular Vertex
• the interior of P lies to the right of vi (Delete ei-1)
if helper(ei-1) is a merge vertex then Insert diag. connect vi to helper(ei-1) in D Delete ei-1 from T
(Insert ei) Insert ei in T and set helper(ei) to vi
• the interior of P lies to the left of vi (Update ej )
Search in T to find the edge ej directly left of vi
if helper(ej) is a merge vertex then Insert diag. connect vi to helper(ej) in D
helper(ej ) ← vi
![Page 33: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/33.jpg)
CS633
Regular Vertex
• the interior of P lies to the right of vi
vi
ei
ei-1
(Delete ei-1)
(Insert ei)
![Page 34: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/34.jpg)
CS633
Regular Vertex
• the interior of P lies to the left of vi
vi ei
ei-1
(Update ej)
ej
![Page 35: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/35.jpg)
CS633
Partitioning Analysis
• Construct priority queue: O(nlogn)• Initialize T: O(1)• Handle an event: O(log n)
– one operation on Q: O(logn)– at most 1 query, 1 insertion & 1 deletion on T: O(logn)
• Total run time: O(n log n) • Storage: O(n)
![Page 36: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/36.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e12, v12)
![Page 37: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/37.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e1, v1) (e12, v12)
![Page 38: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/38.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e1, v1) (e12, v11)
![Page 39: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/39.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e1, v13)
![Page 40: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/40.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e1, v10)
Add diagonal v13v10
![Page 41: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/41.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e2, v2)
![Page 42: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/42.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e2, v2) (e8,v8)
![Page 43: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/43.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e3, v3) (e8,v8)
![Page 44: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/44.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e3, v9)
![Page 45: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/45.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
(e3, v6) (e6,v6)
Add diagonal v6v9
![Page 46: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/46.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
![Page 47: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/47.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
![Page 48: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/48.jpg)
CS633
Example
T=
e1
e2
e3
e4 e5
e6e7
e8e9
e10
e11e12
e13
v13
v12
v11
v10
v9 v8v6
v7
v5
v4
v3
v2
v1
![Page 49: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/49.jpg)
CS633
Polygon Triangulation
• Decompose a simply polygon into a monotone polygon: O(nlogn)– Plane sweep algorithm
• Triangulation of a monotone polygon: O(n)
Total time to compute a triangulation: O(nlogn)
![Page 50: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/50.jpg)
CS633
Triangulate a Monotone Polygon
• Walk from top to bottom on both chains (Sweep line, again)
• Greedy algorithm. Add as many diagonals as possible from each vertex
![Page 51: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/51.jpg)
CS633
Triangulate a Monotone Polygon
• Assuming all vertices are one the same side
• We maintain a stack S
• S contains vertices – Above the sweep line
– Not be triangulated
– Forms an upside-down funnel
![Page 52: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/52.jpg)
CS633
Triangulate a Monotone Polygon
• Now there is a vertex on the other side of the chain
• Maintain the same stack S
• When the sweep line stops at this new vertex, add diagonals from it to all the vertices in S
![Page 53: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/53.jpg)
CS633
Triangulate a Monotone Polygon
• This funnel is an invariant of the algorithm– consisted of a singe edge & a chain of reflex vertices– only the highest vertex (at the bottom of S) is convex
![Page 54: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/54.jpg)
CS633
SummaryWhen the sweep line is at a vertex Vj
On the single edge side– must be the lower end point of the edge: add diagonals to
all reflex edges, except last one. – This vertex and first are pushed back to stack
On the chain of reflex vertices– pop one; this one is already connected to Vj
– pop vertices from stack till not possible
![Page 55: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/55.jpg)
CS633
Triangulate a Monotone PolygonInput: A strictly y-monotone polygon P stored in a d.-c. e. list DOutput: A triangulation of P stored in doubly-connected edge list D1. Merge the vertices on the left and right chains of P into one sequence, sorted
on decreasing y-coordinate, with the leftmost comes first. Let u1 ...un denote sorted sequence
2. Push u1 and u2 onto the stack S
3. for j ← 3 to n ← 14. if uj and vertex on top of S are on different chains
5. Add diagonals from uj to all vertices in S
6. if uj and vertex on top of S are on same chains
7. Add diagonals from uj to vertices in S until you cannot do so
8. Add diagonals from un to all stack vertices except the
![Page 56: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/56.jpg)
CS633
Triangulation Algorithm Analysis
• A strictly y-monotone polygon with n vertices can be triangulated in linear time
• A simple polygon with n vertices can be triangulated in O(n log n) time with an algorithm that uses O(n) storage
![Page 57: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/57.jpg)
CS633
Art Gallery Problem
• We can guard a gallery by n-2 cameras
• We can do better by placing cameras at the diagonals, then we only need n/2
• Even better by placing cameras at vertices of the polygons => n/3 needed by using 3-coloring scheme of a triangulated polygon (ex) comb-shape like polygon– 3-coloring of a polygon always exists
![Page 58: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/58.jpg)
CS633
Art Gallery Problem
9 cameras
11 vertices9 triangles
5 cameras
![Page 59: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/59.jpg)
CS633
Art Gallery Problem
Dual graph
? Traverse the dual graph in DFS order
? cameras
How many cameras are reallyNeeded?
3-coloring
![Page 60: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/60.jpg)
CS633
Art Gallery Theorem
• For a simple polygon with n vertices, n/3 cameras are occasionally necessary and always sufficient to have every point in the polygon visible from at least one of the cameras
Chvátal's Comb
![Page 61: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/61.jpg)
CS633
Conclusion
• Triangulation in O(nlogn) time– n is the number of vertices– Decompose a polygon into monotone subpolygons: O(nlogn)
time (plane-sweep algorithm)– Triangulate each subpolygons: O(n) time
• Art gallery problem– Represent the floor plan as a polygon– Triangulate the polygon– 3 coloring the vertices of the “graph of the triangulation”– Place cameras at the color with fewest vertices– Art gallery theorem: n/3 cameras is always sufficient but
sometime necessary
![Page 62: CS633 Lecture 03 Polygon Triangulationjmlien/teaching/09_fall_cs633/uploads/Main/lect… · Polygon Triangulation Jyh-Ming Lien Dept of Computer Science George Mason University Based](https://reader033.vdocument.in/reader033/viewer/2022052923/5f0406877e708231d40bf2b9/html5/thumbnails/62.jpg)
CS633
Assignment
• Exercises 3.6 & 3.13.
• Check the discussion board on Friday night (9/18)– I will send out a programming assignment– Written in C or C++
– Art gallery problem– Due by midnight 11:59pm EDT Sep 27
• Detailed instructions will be posted as well