lecture 4: triangulating a polygon › ~bgenc › courses › bca... · 8 computational geometry...

60
Motivation Triangulating a polygon Triangulating a polygon Computational Geometry Lecture 4: Triangulating a polygon Computational Geometry Lecture 4: Triangulating a polygon 1

Upload: others

Post on 03-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Triangulating a polygon

Computational Geometry

Lecture 4: Triangulating a polygon

Computational Geometry Lecture 4: Triangulating a polygon1

Page 2: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon2

Page 3: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Visibility in polygonsTriangulationProof of the Art gallery theorem

Art gallery problem

Art Gallery Problem: How many cameras are needed toguard a given art gallery so that every point is seen?

Computational Geometry Lecture 4: Triangulating a polygon3

Page 4: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 Gallery Theorem: bn/3c cameras are occasionallynecessary but always sufficient

Computational Geometry Lecture 4: Triangulating a polygon4

Page 5: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Visibility in polygonsTriangulationProof of the Art gallery theorem

Art gallery problem

Art Gallery Theorem: bn/3c cameras are occasionallynecessary but always sufficient

Computational Geometry Lecture 4: Triangulating a polygon5

Page 6: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Visibility in polygonsTriangulationProof of the Art gallery theorem

Triangulation, diagonal

Why are bn/3c cameras alwaysenough?

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 polygon6

Page 7: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 alwayswith 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)

Case 2: choose the vertex t in 4uvwfarthest from the line through u and w,then vt must be a diagonal

v

v

u

u

w

w

Computational Geometry Lecture 4: Triangulating a polygon7

Page 8: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon8

Page 9: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Visibility in polygonsTriangulationProof of the Art gallery theorem

A 3-coloring always exists

Observe: the dual graph of a triangulatedsimple polygon is a tree

Dual graph: each face gives a node; twonodes are connected if the faces areadjacent

Computational Geometry Lecture 4: Triangulating a polygon9

Page 10: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Visibility in polygonsTriangulationProof of the Art gallery theorem

A 3-coloring always exists

Lemma: The vertices of a triangulatedsimple polygon can always be 3-colored

Proof: Induction on the number oftriangles in the triangulation. Base case:True for a triangle

Every tree has a leaf, in particular the onethat is the dual graph. 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 polygon10

Page 11: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Visibility in polygonsTriangulationProof of the Art gallery theorem

A 3-coloring always exists

Computational Geometry Lecture 4: Triangulating a polygon11

Page 12: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon12

Page 13: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon13

Page 14: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon14

Page 15: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon15

Page 16: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon16

Unknown
Page 17: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon

Vertex types

What types of vertices does a simplepolygon have?

start

stop

split

merge

regular

. . . imagining a sweep line going topto bottom

start

merge regular

split

end

Computational Geometry Lecture 4: Triangulating a polygon17

Page 18: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 end vertex, so it isy-monotone

Computational Geometry Lecture 4: Triangulating a polygon18

Page 19: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon

Sweep ideas

explored

unexplored

explored

unexplored

Computational Geometry Lecture 4: Triangulating a polygon19

Page 20: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon20

Page 21: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon21

Page 22: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon22

Page 23: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon23

Page 24: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon24

Page 25: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon25

Page 26: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon26

Page 27: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon27

Page 28: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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

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 polygon28

Page 29: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon

Main algorithm

Initialize the event list (all vertices sorted by decreasingy-coordinate) and the status structure (empty)

While there are still events in the event list, remove the first(topmost) one and handle it

Computational Geometry Lecture 4: Triangulating a polygon29

Page 30: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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

Computational Geometry Lecture 4: Triangulating a polygon30

Page 31: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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

Computational Geometry Lecture 4: Triangulating a polygon31

Page 32: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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

Computational Geometry Lecture 4: Triangulating a polygon32

Page 33: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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

Computational Geometry Lecture 4: Triangulating a polygon33

Page 34: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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

Computational Geometry Lecture 4: Triangulating a polygon34

Page 35: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon35

Page 36: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon36

Page 37: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon37

Page 38: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon38

Page 39: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon39

Page 40: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon40

Page 41: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon41

Page 42: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon42

Page 43: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon43

Page 44: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon44

Page 45: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon45

Page 46: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon46

Page 47: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon47

Page 48: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon48

Page 49: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon49

Page 50: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon50

Page 51: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon51

Page 52: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon52

Page 53: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon53

Page 54: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon54

Page 55: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon55

Page 56: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon56

Page 57: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon57

Page 58: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon58

Page 59: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

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 polygon59

Page 60: Lecture 4: Triangulating a polygon › ~bgenc › courses › bca... · 8 Computational Geometry Lecture 4: Triangulating a polygon. Motivation Triangulating a polygon Visibility

MotivationTriangulating a polygon

Towards an efficient algorithmPartitioning into monotone piecesTriangulating a monotone polygonTriangulating a simple polygon

Result

We need to argue that all y-monotone polygons together thatwe will triangulate have O(n) vertices

Initially we had n edges. We add at most n− 3 diagonals inthe sweeps. These diagonals are used on both sides as edges.So all monotone polygons together have at most 3n− 6edges, and therefore 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 polygon60

Unknown
A simple polygon can be triangulated into n-2 triangles. What about a polygon with holes?