polygon partitioning - department of computer sciencemisha/spring16/05.pdf · line/convex-polygon...
TRANSCRIPT
![Page 1: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/1.jpg)
Polygon Partitioning
O’Rourke, Chapter 2
![Page 2: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/2.jpg)
Outline
• Triangle Partitions
• Convex Partitions
![Page 3: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/3.jpg)
Monotonicity
A polygonal 𝑃 is monotone w.r.t. a line 𝐿 if its
boundary can be split into two polygon
chains, 𝐴 and 𝐵, such that each chain is
monotonic w.r.t. 𝐿.
𝐿′
𝑃𝐴 𝐵
𝐿
![Page 4: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/4.jpg)
Monotonicity
A polygonal 𝑃 is monotone w.r.t. a line 𝐿 if its
boundary can be split into two polygon
chains, 𝐴 and 𝐵, such that each chain is
monotonic w.r.t. 𝐿.
A polygon 𝑃 is a monotone
mountain w.r.t. 𝐿 if it is
monotone w.r.t. 𝐿 and one
of the two chains (the base)
is a single segment.
𝐿′
𝐿
𝑃
Note: Both endpoints of the base have to be convex
![Page 5: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/5.jpg)
Claim
Every strictly convex vertex of a monotone
mountain that is not on the base is an ear tip.
WLOG, we will assume that
𝐿 is vertical and that the base
is to the left.
We will first show that the
diagonal has to be interior
and then that it cannot
intersect the polygon.
𝐿′
𝐿
𝑃
![Page 6: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/6.jpg)
Proofs
Assume ∃ 𝑣−, 𝑣, 𝑣+ ⊂ 𝑃, with 𝑣 strictly
convex, s.t. 𝑣−𝑣+ is not an interior diagonal.
𝑣+𝑣− cannot be locally
exterior because: If 𝑣+ is not on the base, then
𝑣+𝑣++ must be below 𝑣+.
Since 𝑣 is strictly convex,
𝑣+𝑣− is to the left of 𝑣+𝑣.
𝐿
𝑣
𝑣+
𝑣−
𝑣++
![Page 7: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/7.jpg)
Proofs
Assume ∃ 𝑣−, 𝑣, 𝑣+ ⊂ 𝑃, with 𝑣 strictly
convex, s.t. 𝑣−𝑣+ is not an interior diagonal.
𝑣+𝑣− cannot be locally
exterior because: If 𝑣+ is on the base, then
𝑣+𝑣− is to the left of 𝑣+𝑣.
But it must also be to the right
of the base since 𝑣− is to the
right of the base.
𝐿
𝑣−
𝑣
𝑣+
![Page 8: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/8.jpg)
Proofs
Assume ∃ 𝑣−, 𝑣, 𝑣+ ⊂ 𝑃, with 𝑣 strictly
convex, s.t. 𝑣−𝑣+ is not an interior diagonal.
⇒ If 𝑣−𝑣+ is not an interior
diagonal then ∃𝑥 ∈ 𝑃, reflex,
with 𝑥 interior to Δ𝑣+𝑣𝑣−. Interior ⇒ it cannot lie on the
chain 𝑣+𝑣𝑣−.
Reflex ⇒ it is not on the base.
⇒ The horizontal through 𝑥intersects 𝑃 in three points.
𝑥
𝐿
𝑣
𝑣+
𝑣−
![Page 9: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/9.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
Note:
We can induct because when we remove an ear,
we do not violate the monotonicity of the chain.
![Page 10: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/10.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 11: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/11.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 12: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/12.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 13: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/13.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 14: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/14.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 15: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/15.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 16: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/16.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 17: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/17.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 18: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/18.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 19: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/19.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
![Page 20: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/20.jpg)
Monotone Mountain Triangulation
Approach:
1. Find a convex vertex not on the base.
2. Remove it.
3. Go to step 1.
To do this, we need to be able
to quickly identify the next
convex vertex.
Recall:
Strictly convex ⇔ interior angle < 𝜋.
![Page 21: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/21.jpg)
Monotone Mountain Triangulation
MonotoneMountainTriangulation( 𝑃 ):– 𝐵 ←FindBase( 𝑃 )– 𝐶 ← LinkConvexVertices( 𝑃 − 𝐵 )– while 𝐶 ≠ ∅:
• 𝑣 ← First( 𝐶 )• output( Δ𝑣−𝑣𝑣+ )• 𝑃 ← 𝑃 − {𝑣}
• if(𝑣+ ∉ 𝐶 AND 𝑣+ ∉ 𝐵 )• if( ∠𝑣+ < 𝜋 ) 𝑣.addAfter( 𝑣+ )
• if( 𝑣− ∉ 𝐶 AND 𝑣− ∉ 𝐵 )• if( ∠𝑣− < 𝜋 ) 𝑣.addBefore( 𝑣− )
• 𝐶 ← 𝐶 − {𝑣}
![Page 22: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/22.jpg)
Generating Monotone Mountains
Approach:
• Compute a trapezoidalization of 𝑃.
• Connect supporting vertices
that don’t come from
the same side.
![Page 23: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/23.jpg)
Generating Monotone Mountains
Claim:
Such a partition generates pieces that are
monotone mountains.
![Page 24: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/24.jpg)
Generating Monotone Mountains
Proof:
This algorithm removes all interior cusps,
so the partition pieces are monotone.
![Page 25: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/25.jpg)
Proof:
Given a piece, we can find its topmost
vertex 𝑣, with neighbors 𝑣− and 𝑣+.
Assume 𝑣+ is lower than 𝑣−.
Generating Monotone Mountains
𝑣
𝑣+
𝑣−
![Page 26: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/26.jpg)
Generating Monotone Mountains
Proof:
Following the chain down 𝑣−, we get to the
last vertex, 𝑤 ∈ 𝑃, above 𝑣+.
There is a trapezoid
supported by 𝑤 and 𝑣+.
Since 𝑤 and 𝑣+ are on different
sides of the trapezoid, the diagonal
to 𝑣+ must be added.
⇒ 𝑣+ is a partition endpoint
𝑣
𝑣+
𝑣−
𝑤
![Page 27: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/27.jpg)
Triangulation
Triangulate( 𝑃 ):– Construct a trapezoidalization
![Page 28: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/28.jpg)
Triangulation
Triangulate( 𝑃 ):– Construct a trapezoidalization– Connect supporting vertices from different sides.
![Page 29: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/29.jpg)
Triangulation
Triangulate( 𝑃 ):– Construct a trapezoidalization– Connect supporting vertices from different sides.– Triangulate the mountains
![Page 30: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/30.jpg)
Triangulation
Note:
The algorithms for triangulating via monotone
polygons and monotone mountains works for
polygons with disconnected boundaries.
![Page 31: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/31.jpg)
Outline
• Triangle Partitions
• Convex Partitions
![Page 32: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/32.jpg)
Convex Partitions
Definition:A convex partition by segments of a polygon 𝑃 is
a decomposition of 𝑃 into convex polygons
obtained by introducing arbitrary segments.
![Page 33: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/33.jpg)
Convex Partitions
Definition:A convex partition by segments of a polygon 𝑃 is
a decomposition of 𝑃 into convex polygons
obtained by introducing arbitrary segments.
A convex partition by diagonals
of a polygon 𝑃 is a decomposition
of 𝑃 into convex polygons obtained
by only introducing diagonals.
![Page 34: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/34.jpg)
Convex Partitions
Definition:A convex partition by segments of a polygon 𝑃 is
a decomposition of 𝑃 into convex polygons
obtained by introducing arbitrary segments.
A convex partition by diagonals
of a polygon 𝑃 is a decomposition
of 𝑃 into convex polygons obtained
by only introducing diagonals.
Challenge:
Compute a convex partition with
the smallest number of pieces.
Challenge2:
Compute it efficiently
![Page 35: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/35.jpg)
Convex Partitions (by Segments)
Claim (Chazelle):
Assume the polygon 𝑃 has 𝑟 reflex vertices.
If Φ is the fewest number of polygons required
for a convex partition by segments of 𝑃 then:
𝑟/2 + 1 ≤ Φ ≤ 𝑟 + 1
![Page 36: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/36.jpg)
Convex Partitions (by Segments)
Proof (Φ ≤ 𝑟 + 1):
For each reflex vertex, add the bisector.
Because the segment bisects, the reflex
angle splits into two convex angles.
(Angles at the new vertices have to be < 𝜋.)
Doing this for each reflex
vertices, gives a convex
partition with 𝑟 + 1 pieces.
![Page 37: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/37.jpg)
Convex Partitions (by Segments)
Proof ( 𝑟/2 ≤ Φ):
Each reflex vertex needs to be split and each
introduced segment can split at most two
reflex vertices.
![Page 38: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/38.jpg)
Convex Partitions (by Diagonals)
Definition:
A diagonal in a convex partition is essential
for vertex 𝑣 ∈ 𝑃 if removing the diagonal
creates a piece that is not convex at 𝑣.
![Page 39: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/39.jpg)
Convex Partitions (by Diagonals)
Claim:
If 𝑣 is a reflex vertex, it can have at most two
essential diagonals.
![Page 40: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/40.jpg)
Proof:
Given a reflex vertex 𝑣, let 𝑣− and 𝑣+ be the
vertices immediately before and after 𝑣 in 𝑃.
There can be at most one essential segment in
the half-space to the right of 𝑣𝑣+.
(If there were two, we could
remove the one closer to 𝑣𝑣+.)
Convex Partitions (by Diagonals)
𝑣−
𝑣+
𝑣
![Page 41: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/41.jpg)
Proof:
Given a reflex vertex 𝑣, let 𝑣− and 𝑣+ be the
vertices immediately before and after 𝑣 in 𝑃.
Similarly, there can be at most one essential
segment in the half-space to the right of 𝑣𝑣−.
Convex Partitions (by Diagonals)
𝑣−
𝑣+
![Page 42: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/42.jpg)
Proof:
Given a reflex vertex 𝑣, let 𝑣− and 𝑣+ be the
vertices immediately before and after 𝑣 in 𝑃.
Similarly, there can be at most one essential
segment in the half-space to the right of 𝑣𝑣−.
Since the two half-spaces
cover the interior of the vertex
there are at most two essential
vertices at 𝑣.
Convex Partitions (by Diagonals)
𝑣−
𝑣+
![Page 43: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/43.jpg)
Convex Partitions (by Diagonals)
Algorithm (Hertl & Mehlhorn):
Start with a triangulation and remove inessential
diagonals.
Claim:
This algorithm is never worse
than 4 × optimal in the number
of convex pieces.
![Page 44: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/44.jpg)
Convex Partitions (by Diagonals)
Proof:
When the algorithm terminates, every remaining
diagonal is essential for some (reflex) vertex.
Each reflex vertex can have at most two
essential diagonals.
⇒ There can be at most 2𝑟 + 1pieces in the partition.
Since at least 𝑟/2 + 1 are
required, the result is within
4 × optimal.
![Page 45: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/45.jpg)
Convex Partitions
Why do we care?
Convex polygons are easier to intersect against.
For a polygon with 𝑛 vertices:
• Testing if a point is inside is 𝑂(log 𝑛).
• Testing if a line intersects is 𝑂(log 𝑛).
• Testing if two polygons intersect is 𝑂(log 𝑛).
![Page 46: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/46.jpg)
Point/Convex-Polygon Intersection
Algorithm:
Recursively split the polygon in half and test the
half the point could be in.
𝑣2 𝑣3
𝑣5
𝑣6
𝑣8
𝑣7
𝑣1 𝑣4𝑞
![Page 47: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/47.jpg)
Point/Convex-Polygon Intersection
Algorithm:
Recursively split the polygon in half and test the
half the point could be in.
𝑞
𝑣2 𝑣3
𝑣1 𝑣4
![Page 48: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/48.jpg)
Point/Convex-Polygon Intersection
Algorithm:
Recursively split the polygon in half and test the
half the point could be in.
𝑞
𝑣3
𝑣1 𝑣4
![Page 49: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/49.jpg)
Point/Convex-Polygon Intersection
InConvexPolygon( 𝑞 , {𝑣1, … , 𝑣𝑛} ) if( 𝑛 == 3 )
»return InTriangle( 𝑞 , {𝑣1, 𝑣2, 𝑣3} ); if( Left( 𝑣1, 𝑣 𝑛 2 , 𝑝 ) )
»return InConvexPolygon( 𝑞 , {𝑣 𝑛 2, … , 𝑣1} );
else»return InConvexPolygon( 𝑞 , {𝑣1, … , 𝑣 𝑛 2} );
![Page 50: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/50.jpg)
Line/Convex-Polygon Intersection
Note:
Given a convex polygon 𝑃, a line segment 𝐿, and
vertices 𝑣𝑖 , 𝑣𝑗 ∈ 𝑃 on the same side of 𝐿.*
If the vector 𝑣𝑖𝑣𝑖+1 points
away from 𝐿, then 𝐿 can
only intersect 𝑃 along the
chain {𝑣𝑗 , 𝑣𝑗+1, … , 𝑣𝑖}.
Otherwise, 𝐿 can only intersect
𝑃 along the chain {𝑣𝑖 , 𝑣𝑖+1, … , 𝑣𝑗}.
𝑣𝑗
𝐿
𝑣𝑖
𝑣𝑖+1
*Assume, WLOG that 𝑣𝑖 is closer to 𝐿 than 𝑣𝑗 .
![Page 51: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/51.jpg)
Line/Convex-Polygon Intersection
Algorithm:
Recursively split the polygon in half.
If the split points are on the same side, test the
half of the polygon that
could intersect.
Otherwise there
is an intersection.
𝑣2 𝑣3
𝑣5
𝑣6
𝑣8
𝑣7
𝐿
𝑣1 𝑣4
![Page 52: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/52.jpg)
Line/Convex-Polygon Intersection
Algorithm:
Recursively split the polygon in half.
If the split points are on the same side, test the
half of the polygon that
could intersect.
Otherwise there
is an intersection.
𝑣2
𝐿
𝑣4
𝑣3
𝑣1
![Page 53: Polygon Partitioning - Department of Computer Sciencemisha/Spring16/05.pdf · Line/Convex-Polygon Intersection Algorithm: Recursively split the polygon in half. If the split points](https://reader030.vdocuments.us/reader030/viewer/2022040418/5d67330788c99389108b682b/html5/thumbnails/53.jpg)
Line/Convex-Polygon Intersection
IsectConvexPolygon( {𝑙1, 𝑙2} , {𝑣1, … , 𝑣𝑛} ) if( 𝑛 == 3 )
»return IsectTriangle( {𝑙1, 𝑙2} , {𝑣1, 𝑣2, 𝑣3 ); if( Left( 𝑙1 , 𝑙2 , 𝑣1 )!=Left( 𝑙1 , 𝑙2 , 𝑣 𝑛 2 ) )
»return true; else
»if( Dist( {𝑙1, 𝑙2} , 𝑣1 )<Dist( {𝑙1, 𝑙2} , 𝑣 𝑛 2 )– if( Dist( {𝑙1, 𝑙2} , 𝑣1 )<Dist( {𝑙1, 𝑙2} , 𝑣2 )
• return IsectConvexPolygon( {𝑙1, 𝑙2} , {𝑣 𝑛 2, … , 𝑣1} );
– else
• return IsectConvexPolygon( {𝑙1, 𝑙2} , {𝑣1, … , 𝑣 𝑛 2} );
»else...