lecture 4: triangulating a polygon - university of florida

58
Motivation Triangulating a polygon Triangulating a polygon Computational Geometry Lecture 4: Triangulating a polygon Computational Geometry Lecture 4: Triangulating a polygon

Upload: others

Post on 12-Sep-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 4: Triangulating a polygon - University of Florida

MotivationTriangulating a polygon

Triangulating a polygon

Computational Geometry

Lecture 4: Triangulating a polygon

Computational Geometry Lecture 4: Triangulating a polygon

Page 2: Lecture 4: Triangulating a polygon - University of Florida

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

Page 3: Lecture 4: Triangulating a polygon - University of Florida

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

Page 4: Lecture 4: Triangulating a polygon - University of Florida

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

Page 5: Lecture 4: Triangulating a polygon - University of Florida

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

Page 6: Lecture 4: Triangulating a polygon - University of Florida

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

Page 7: Lecture 4: Triangulating a polygon - University of Florida

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

Page 8: Lecture 4: Triangulating a polygon - University of Florida

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

Page 9: Lecture 4: Triangulating a polygon - University of Florida

MotivationTriangulating a polygon

Visibility in polygonsTriangulationProof of the Art gallery theorem

A 3-coloring always exists

Computational Geometry Lecture 4: Triangulating a polygon

Page 10: Lecture 4: Triangulating a polygon - University of Florida

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

Page 11: Lecture 4: Triangulating a polygon - University of Florida

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

Page 12: Lecture 4: Triangulating a polygon - University of Florida

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

Page 13: Lecture 4: Triangulating a polygon - University of Florida

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

Page 14: Lecture 4: Triangulating a polygon - University of Florida

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

Page 15: Lecture 4: Triangulating a polygon - University of Florida

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

Page 16: Lecture 4: Triangulating a polygon - University of Florida

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

Page 17: Lecture 4: Triangulating a polygon - University of Florida

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

Page 18: Lecture 4: Triangulating a polygon - University of Florida

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

Page 19: Lecture 4: Triangulating a polygon - University of Florida

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

Page 20: Lecture 4: Triangulating a polygon - University of Florida

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

Page 21: Lecture 4: Triangulating a polygon - University of Florida

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

Page 22: Lecture 4: Triangulating a polygon - University of Florida

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

Page 23: Lecture 4: Triangulating a polygon - University of Florida

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

Page 24: Lecture 4: Triangulating a polygon - University of Florida

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

Page 25: Lecture 4: Triangulating a polygon - University of Florida

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

Page 26: Lecture 4: Triangulating a polygon - University of Florida

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

Page 27: Lecture 4: Triangulating a polygon - University of Florida

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

Page 28: Lecture 4: Triangulating a polygon - University of Florida

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

Page 29: Lecture 4: Triangulating a polygon - University of Florida

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

Page 30: Lecture 4: Triangulating a polygon - University of Florida

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

Page 31: Lecture 4: Triangulating a polygon - University of Florida

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

Page 32: Lecture 4: Triangulating a polygon - University of Florida

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

Page 33: Lecture 4: Triangulating a polygon - University of Florida

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

Page 34: Lecture 4: Triangulating a polygon - University of Florida

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

Page 35: Lecture 4: Triangulating a polygon - University of Florida

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

Page 36: Lecture 4: Triangulating a polygon - University of Florida

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

Page 37: Lecture 4: Triangulating a polygon - University of Florida

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

Page 38: Lecture 4: Triangulating a polygon - University of Florida

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

Page 39: Lecture 4: Triangulating a polygon - University of Florida

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

Page 40: Lecture 4: Triangulating a polygon - University of Florida

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

Page 41: Lecture 4: Triangulating a polygon - University of Florida

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

Page 42: Lecture 4: Triangulating a polygon - University of Florida

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

Page 43: Lecture 4: Triangulating a polygon - University of Florida

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

Page 44: Lecture 4: Triangulating a polygon - University of Florida

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

Page 45: Lecture 4: Triangulating a polygon - University of Florida

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

Page 46: Lecture 4: Triangulating a polygon - University of Florida

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

Page 47: Lecture 4: Triangulating a polygon - University of Florida

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

Page 48: Lecture 4: Triangulating a polygon - University of Florida

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

Page 49: Lecture 4: Triangulating a polygon - University of Florida

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

Page 50: Lecture 4: Triangulating a polygon - University of Florida

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

Page 51: Lecture 4: Triangulating a polygon - University of Florida

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

Page 52: Lecture 4: Triangulating a polygon - University of Florida

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

Page 53: Lecture 4: Triangulating a polygon - University of Florida

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

Page 54: Lecture 4: Triangulating a polygon - University of Florida

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

Page 55: Lecture 4: Triangulating a polygon - University of Florida

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

Page 56: Lecture 4: Triangulating a polygon - University of Florida

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

Page 57: Lecture 4: Triangulating a polygon - University of Florida

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

Page 58: Lecture 4: Triangulating a polygon - University of Florida

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