このページは http://www.slideshare.net/inteplus/a-tutorial-on-computational-geometry の内容を掲載しています。

掲載を希望されないスライド著者の方は、こちらよりご連絡下さい。

8年以上前 (2008/04/11)にアップロードinテクノロジー

My talk about computational geometry in NTU’s APEX Club in NTU, Singapore in 2007. The club is fo...

My talk about computational geometry in NTU’s APEX Club in NTU, Singapore in 2007. The club is for people who are keen on participating in ACM International Collegiate Programming Contests organized by IBM annually.

- A Tutorial on Computational

Geometry

presented by

Pham Minh Tri

Ph.D. Candidate and Project Officer

School of Computer Engineering

1 Mar 2008 - What will be covered?

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points - What will be covered?

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points - Point Inside Polygon Test

• Given a point, determine

if it lies inside a polygon

or not - Ray Test

• Fire ray from point

• Count intersections

– Odd = inside polygon

– Even = outside polygon - Problems With Rays

• Fire ray from point

• Count intersections

– Odd = inside polygon

– Even = outside polygon

• Problems

– Ray through vertex - Problems With Rays

• Fire ray from point

• Count intersections

– Odd = inside polygon

– Even = outside polygon

• Problems

– Ray through vertex - Problems With Rays

• Fire ray from point

• Count intersections

– Odd = inside polygon

– Even = outside polygon

• Problems

– Ray through vertex

– Ray parallel to edge - A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way

• One winding = inside - A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way
- A Better Way

• zero winding = outside - Requirements

• Oriented edges

• Edges can be processed

in any order - Computing Winding Number

• Given unit normal n

• =0

• For each edge (p

p

1, p2)

2

x

n (( p

) (

))

(

) (

)

1 x p2 x

1 p1 x p2 x

cos

( p x) ( p

x)

p x p

x

1

2

1

2

p1

•

k 2

for some integer k

• k = winding number

– If k == 1, then inside

– If k == 0, then outside - Advantages

• Extends to 3D!

• Numerically stable

• Even works on models with holes:

– Odd k: inside

– Even k: outside

• No ray casting - What will be covered?

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points- Convex Hulls

p

p

pq

pq

q

q

Subset of S of the plane is convex, if for all pairs p,q in S the

line segment pq is completely contained in S.

The Convex Hul CH(S) is the smallest convex set, which

contains S. - Convex hull of a set of points in the

plane

Rubber band experiment

•

•

•

•

•

•

•

•

•

The convex hul of a set P of points is the unique convex

polygon whose vertices are points of P and which contains

al points from P. - Convex Hull

• Input:

– Set S = {s1, …, sn} of n points

• Output:

– Find its convex hull

• Many algorithms:

– Naïve – O(n3)

– Insertion – O(n logn)

– Divide and Conquer – O(n logn)

– Gift Wrapping – O(nh), h = no of points on the hul

– Graham Scan – O(n logn) - Graham Scan

• Polar sort the points around a

point inside the hul

• Scan points in counter-clockwise

(CCW) order

– Discard any point that causes a

clockwise (CW) turn

• If CCW, advance

• If !CCW, discard current point

and back up - Graham-Scan : (1/11)

p10

p

p

p

p

6

7

11

9

p5

p8

p

p

p3

4

12

p2

p1

p0 - Graham-Scan :(1/11)

p10

p

p

p

p

6

7

11

9

p5

p8

p

p

p3

4

12

p2

p1

p0

1.Calculate polar angle

2.Sorted by polar angle - Graham-Scan : (2/11)

p10

p

Stack S:

2

p1

p

p

p

p

p

6

0

7

11

9

p5

p8

p

p

p3

4

12

p2

p1

p0 - Graham-Scan : (3/11)

p10

Stack

p

S:

3

p1

p

p

p

p

p

6

7

0

11

9

p5

p8

p

p

p3

4

12

p2

p1

p0 - Graham-Scan : (4/11)

p10

p4

Stack S: p3

p

p

1

p

p

p

6

p

7

11

9

p

0

5

p8

p

p

p3

4

12

p2

p1

p0 - Graham-Scan (5/11)

p10

p5

Stack S: p3

p

p

1

p

p

p

6

p

7

11

9

p

0

5

p8

p

p

3

12

p4

p2

p1

p0 - Graham-Scan (6/11)

p8

p

p

7

10

p6

p5

Stack S: p3

p

p

1

p

p

p

6

7

p

11

9

p5

0

p8

p

p

3

12

p4

p2

p1

p0 - Graham-Scan (7/11)

p9

p

p

10

6

p5

Stack S: p3

p

p

1

6

p

p

p

11

9

p

0

5

p7

p

p

3

12

p8

p4

p2

p1

p0 - Graham-Scan (8/11)

p10

p10

Stack S: p3

p1

p

p

11

0

p

p6

9

p

p

7

5

p

p

3

12

p8

p4

p2

p1

p0 - Graham-Scan (9/11)

p

p

10

11

p10

Stack S: p3

p1

p

p

11

0

p

p6

9

p

p

7

5

p

p

3

12

p8

p4

p2

p1

p0 - Graham-Scan (10/11)

p

p

10

12

p10

Stack S: p3

p1

p0

p

p6

9

p

p

7

5

p11

p

p

3

12

p8

p4

p2

p1

p0 - Time complexity Analysis

• Graham-Scan

– Sorting in step 2 needs O(n log n).

– Time complexity of stack operation is O(2n)

– The overall time complexity in Graham-Scan is O(n log n).

• Demo:

– http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points- Line segment intersection

• Input:

– Set S = {s1, …, sn} of n line segments, si = (xi, yi)

• Output:

– k = Al intersection points among the segments in S - Line segment intersection

• Worst case:

– k = n(n –1)/2 = O(n2) intersections

• Sweep line algorithm (near optimal algorithm):

– O(n log n + k) time and O(n) space

– O(n) space - Sweep Line Algorithm

Avoid testing pairs of segments that are far apart.

Idea: imagine a vertical sweep line passes through the given

set of line segments, from left to right.

Sweep

line - Assumption on Non-degeneracy

No segment is vertical. // the sweep line always hits a segment at

// a point.

If a segment is vertical, imagine we rotate it clockwise by a tiny angle.

This means:

For each vertical segment, we wil consider its lower

endpoint before upper point. - Sweep Line Status

The set of segments intersecting the sweep line.

It changes as the sweep line moves, but not continuously.

left endpoints

Updates of status happen only at event points.

right endpoints

intersections

A

G

C

T

event points - Ordering Segments

A total order over the segments that intersect the current

position of the sweep line:

•Based on which parts of the segments we are

B > C > D

currently interested in

(A and E not in

the ordering)

B

A

C > D

E

(B drops out of

C

the ordering)

D

D > C

(C and D swap

their positions)

At an event point, the sequence of segments changes:

Update the status.

Detect the intersections. - Status Update (1)

Event point is the left endpoint of a segment.

A new segment L intersecting

K

the sweep line

O

L

Check if L intersects with the

segment above (K) and the

M

segment below (M).

Intersection(s) are new event

N new event

points.

point

K, M, N

K, L, M, N - Status Update (2)

Event point is an intersection.

The two intersecting segments

K

(L and M) change order.

O

L

Check intersection with new

neighbors (M with O and L with N).

M

Intersection(s) are new event points.

N

O, L, M, N

O, M, L, N - Status Update (3)

Event point is a lower endpoint of a segment.

The two neighbors (O and L)

K

become adjacent.

O

L

Check if they (O and L) intersect.

M

Intersection is new event point.

N

O, M, L, N

O, L, N - Data Structure for Event Queue

Ordering of event points:

by x-coordinates

by y-coordinates in case of a tie in x-coordinates.

Supports the following operations on a segment s.

fetching the next event

// O(log m)

inserting an event

// O(log m)

Every event point p is stored with all segments starting at p.

Data structure: balanced binary search tree (e.g., red-black tree).

m = #event points in the queue - Data Structure for Sweep-line Status

Describes the relationships among the segments intersected

by the sweep line.

Use a balanced binary search tree T to support the following

operations on a segment s.

Insert(T, s)

Delete(T, s)

Above(T, s) // segment immediately above s

Below(T, s) // segment immediately below s

e.g, Red-black trees, splay trees (key comparisons replaced

by cross-product comparisons).

O(log n) for each operation. - An Example

O

M

N

N

O

K

L

L

N

M

K

K

L

O

The bottom-up order of the segments correspond to the left-to-right

order of the leaves in the tree T.

Each internal node stores the segment from the rightmost leaf in its

left subtree. - The Algorithm

FindIntersections(S)

Input: a set S of line segments

Ouput: all intersection points and for each intersection the

segment containing it.

1. Q // initialize an empty event queue

2. Insert the segment endpoints into Q // store with every left endpoint

// the corresponding segments

3. T // initialize an empty status structure

4.

while Q

5.

do extract the next event point p

6. Q Q – {p}

7. HandleEventPoint(p) - Handling Event Points

Status updates (1) – (3) presented earlier.

Degeneracy: several segments are involved in one event point (tricky).

A

H

T: E

C

C

A

D

p

G

C

H

A

B

G

E

D

A

D

C

B

E

C

A

(a) Delete D, E, A, C

(b) Insert B, A, C

G

l

G

B

A

H

G

C

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points- Motivation

Transformation of a topographic map

into a perspective view - Terrains

Given: A number of sample points p ..., p

1

n

Required: A triangulation T of the points resulting in a “realistic” terrain.

"Flipping" of an edge:

900

900

50

50

20

20

930

930

Goal: Maximise the minimum angle in the triangulation - Triangulation of Planar Point Sets

Given: Set P of n points in the plane (not all collinear).

A triangulation T(P) of P is a planar subdivision of the

convex hull of P into triangles with vertices from P.

T(P) is a maximal planar subdivision.

For a given point set there are only finitely many different

triangulations. - Size of Triangulations

Theorem : Let P be a set of n points in the plane, not all collinear and let k

denote the number of points in P that lie on the boundary of the convex hull

for P. Then any trianglation of P has 2n-2-k triangles and 3n-3-k edges.

Proof :

Let T be triangulation of P, and let m denote the # of triangles of T. Each triangle

has 3 edges, and the unbounded face has k edges.

n = # of faces of triangulation = m + 1

f

every edge is incident to exactly 2 faces.

Hence, # of edges n = (3m +k)/2.

e

Euler‘s formula : n - n + n = 2.

e

f

Substituting values of n and n , we obtain:

e

f

m = 2n – 2 – k and n = 3n – 3 – k .

e - Angle Vector

Let T(P) be a triangulation of P ( set of n points).

Suppose T(P) has m triangles.

Consider the 3m angles of triangles of T(P), sorted by increasing value.

A(T) = { a ..., a } is called angle-vector of T.

1

3m

Triangulations can be sorted in lexicographical order according to A(T).

A triangulation T(P) is called angle-optimal if A(T(P)) A(T´(P))

for all triangulations T´ of P. - Illegal Edge

Consider a quadrilateral:

Edge flip

a2

a

a ‘

3

a ‘

4

a

a

P

2

1

a ‘

4

j

6

P

a

a

a ‘

P

6

5

a ‘

j

i

1

P

a ‘

5

i

3

Pk

The edge p p is illegal if

min i min ‘

i j

i

1 i 6

1 i 6

Note: Let T be a triangulation with an illegal edge e.

Let T´ be the triangulation obtained from T by flipping e.

Then, A(T´) A(T) . - Legal Triangulation

Definition : A triangulation T(P) is called a legal triangulation,

if T(P) does not contain any illegal edges.

Test for illegality

Lemma :

Let edge p p be incident to triangles p p p

i j

i j k

and p p p , and let C be the circle thru p , p and p .

i j l

i

j

k

The edge p p is illegal iff the point p

i j

l

Pl

lies in the interior of C. Furthermore, if the

points p , p , p , p form a convex quadri-

i

j

k

l

Pj

lateral and do not lie on a common

circle, then exactly one of p p or

i j

p p is an illegal edge.

k l

Pi

Pk - Test of Illegality

Observation:

p lies inside the circle through p , p and p iff p lies inside the

l

i

j

k

k

circle through p , p , p . When all four points lie on circle, both

i

j

l

p p and p p are legal.

i j

k l

P

P

l

l

P

P

j

j

P

P

i

i

P

P

k

k - Thales Theorem

s

q

asb

r

aqb = apb

p

arb

b

pl

a

Lemma: Let C be the circle through the

triangle p , p , p and let the point p be the

i

j

k

l

fourth point of a quadrilateral.

p

pj

i

The edge p p is illegal iff p lies in the interior

i j

l

pk

of C.

il egal - Thales Theorem

p

p

l

Consider the quadrilateral with p in the interior of the

l

i

pj

circle that goes through p , p , p .

i

j

k

Claim: The minimum angle does not occur at p !

k

(likewise: Minimum angle does not occur at p )

l

pk

pl

pi

pj

Goal: Show that p p is il egal

i j

pk - Thales Theorem: Proof

pl

pl

W.l.o.g.

a ‘1a ‘

a

a

2

a minimal

3

4

p

1

a

p

i

a

4

p

2

j

i

pj

a ‘ a ‘

3

4

pk

pk

p

a ‘ > a

1

4

l

a ‘

a ‘ > a

1 a ‘

2

2

2

a

a

p

1

3

i

a

a4

p

2

j

a ‘ a ‘

3

4

pk - Thales Theorem: Proof

pl

a ‘

a ‘ > a

1 a ‘

4

1

2

a

a

p

1

3

a ‘ > a

3

3

i

a

a4

p

2

j

a ‘ a ‘

Hence, min{a ‘} > min{a }

3

4

i

i

pk

Circle criterion violated illegal edge - Circle Criterion

Definition:

A triangulation fulfills the circle criterion if and only if the circumcircle of

each triangle of the triangulation does not contain any other point in its

interior. - Theorems

Theorem:

A triangulation T(P) of a set P of points does not contain an illegal edge if

and only if nowhere the circle criterion is violated.

Theorem:

Every triangulation T(P) of a set P of points can be finally transformed

into an angle-optimal triangulation in a finite number of steps. - Definition of the Delaunay Triangulation

A triangulation T(P) is a Delaunay

Triangulation of P, denoted as DT(P),

if and only if the circumcircle of any

triangle of T does not contain any

other point of P in its interior (i.e. T

fulfills the circle criterion). - Equivalent Characterisations of the

Delaunay Triangulation

1. DT(P) is the straight-line-dual of Voronoi Diagram VD(P).

2. DT(P) is a triangulation of P such that all edges are legal (local

angle-optimal).

3. DT(P) is a triangulation of P such that for each triangle the circle

criterion is fulfilled.

4. DT(P) is global angle-optimal triangulation.

5. DT(P) is a triangulation of P such that for each edge p p there is a

i j

circle, on which p and p lie and which does not contain any other

i

j

point from P. - Algorithm DT(P) (randomized,

incremental)

z (0,3m)

Given: Point set P = {p ..., p }

1

n

Initially:

Compute triangle (x, y, z),

m

which includes the points

p ..., p .

1

n

y (3m,0)

x (-3m,-3m) - Algorithm DT(P)

m = max { |x |,|y | }

i

i

T = ((3m, 0), (3m, 3m), (0, 3m))

1. initialize DT(P) as T.

2. permutate the points in P randomly.

3. for r = 1 to n do

find the triangle in DT(P), which contains p ;

r

insert new edges in DT(P) to p ;

r

legalize new edges.

4. remove all edges, which are connected with x, y or z. - Inserting a Point

2 cases : p is inside a triangle

r

pj

p is on an edge

p

r

j

pl

pr

p

p

k

r

pi

pi

Legalize (p ,p p ,T):

r

i j

pk

if p p is illegal

i j

pj

then let p p p be the triangle adjacent

i j k

to p p p along p p .

r i j

i j

flip p p ,i.e. replace p p by p p

i

j

i j

r

k

pi

Legalize (p , p p , T)

r

i k

p

Legalize (p , p p , T)

r

r

k j - Algorithm Delaunay Triangulation

Input: A set of points P = {p ..., p } in general position

1

n

Output: The Delaunay triangulation DT(P) of P

1. DT(P) = T = (x, y, z)

2. for r = 1 to n do

3. find a triangle p p p T, that contains p .

i j k

r

4. if p lies in the interior of the triangle p p p

r

i j k

5. then split p p p

i j k

6. Legalize(p p p ), Legalize(p p p ),

r, i j

r, i k

Legalize(p p p )

r, j k

7. if p lies on an edge of p p p (say p p )

r

i j k

i j

8. then split p p p and p p p

i j k

i j l

Legalize (p , p p ), Legalize (p , p p ),

r

i l

r

i k

Legalize (p , p p ), Legalize (p , p p )

r

j l

r

j k

9. Delete (x, y, z) with all incident edges to P - Correctness

Lemma :Every new edge created in the algorithm for constructing DT

during the intersection of p is an edge of the Delaunay graph of

r

{ p ,...,p } .

1

r

pq is a Delaunay edge iff there is a (empty) circle, which contains

only p and q on the circumference.

Proof idea : Shrink a circle which was empty before addition of p !

r - Correctness

Correctness of the algorithm: Consider newly produced edges:

Observation: After insertion of p , every new edge produced by edge-

r

flips is incident to p !r

pr

pr - Edge Flips

Edge-flips produce only legal edges.

Before inserting p , circle that goes through p , p , p was empty!

r

i

j

k

pk

pi

p

pj

r

Edge-flips produce edges that are always incident to p !

r - Data Structure for Point Location

t

t

1

t2

t3

1

t

Split t

2

1

t3

t

t

1

2

t3

pj

t2

p

flip p p

i j

i

t3

t1

t2

t3

t4

t5

pi

p

t

t

flip p p

4

5

i k

k

t1

t

t

2

3

t4

t7

t6

t

t

t

t

4

5

6

7 - Analysis of the Algorithm

Lemma :

The expected number of triangles created by the incremental algorithm for

constructing DT(P) is atmost 9n + 1. - Analysis of the Runtime

Theorem :

The Delaunay triangulation of a set of P of n points in the

plane can be computed in O(n log n) expected time, using

O(n) expected storage.

Proof :

Running time without Point Location :

Proportional to the number of created triangles = O(n).

Point Location :

The time to locate the point p in the current triangulation

r

is linear in the number of nodes of D that we visit. - Relation to Euclidean MST

• Problem:

– Find a spanning tree on a set P of N points in a plane such that

the total length of all the edges of the tree is minimized

(Euclidean MST)

• Relation of Delaunay Triangulation

– A Euclidean MST is a sub-graph of a Delaunay Triangulation

– Blindly applying MST finding methods like Kruskal’s or Prim’s on

this problem gives O(m) where m = n(n-1)/2.

– If one builds the DT(P) in O(nlogn) and then does Kruskal’s or

Prim’s, one get an O(nlogn) solution.

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points- Geometry and Air Traffic Control

» During peak times over 5000 planes, per hour, around Frankfurt airspace.

» Avoid collisions at all costs.

» Start by finding the two aeroplanes closest to each other, at specific elevations. - Geometry and Astronomy

» Find the two nearest objects in space. - Search Quickly… and Why?

» Find the two nearest objects in space. - Problem Description

• Input: A set S of n points in the plane.

• Output: The pair of points with the shortest Euclidean distance

between them.

• Other applications in fundamental geometric primitive:

– Graphics, computer vision, geographic information systems, molecular

modeling

– Special case of nearest neighbour, Euclidean MST, Voronoi - Closest Pair of Points

• Naïve method: Brute force.

– Check all pair of points p and q with Θ(n2) comparisons.

• 1D version

– Simple if all points are on a single line.

– Run time O(n log n)

Key to reducing quadratic runtime of the naïve method:

Simply don´t visit each point n times. - Algorithm: DAC – Divide

• Sort S in ascending order of x-coordinates.

• Find the median line L, so that we have ½ n points in SL and ½ n

points SR.

S

S

L

R - Algorithm: DAC – Conquer

• Recursively, find the closest pair in SL and SR.

S

S

L

R - Algorithm: DAC – Merge (Strip-Margins)

• Assuming that distance < S = min( SL, SR).

• Observation: Only need to consider the points within S of line L.

= min(12,21)

S

S

S

L

R

S - Handling Merge

• Sort points in 2 S-strip in ascending y-coordinate order.

• (First observation) Only check those points within 11 positions in

sorted list.

= min(12,21)

S

S

S

L

R

S - Comparing Efficiently

Definition: Let si be the point in the 2 S-strip with the

ith smallest coordinate.

Claim: If |i - j| 12, then the distance between si and

sj is at least S.

Proof:

•

The points si and sj cannot lie in same ½ S-by- ½

S box.

•

si and sj are at least 2 rows apart, and have

distance 2(½ S).

Fact:

•

The above still holds if we replace 12 with 7.

S

S - Closest Pair: DAC Algorithm

Algorithm: Closest-Pair( S = {p1, …, pn} )

Sort al n points in ascending x-coordinate order

Compute the median line L, and divide S into S and S

L

R

Set Closest-Pair(S )

SL

L

Set Closest-Pair(S )

SR

R

Set min( , )

S

SL

SR

Delete all points further than from separation line L

S

Sort remaining points in ascending y-coordinate order

Scan points in y-order and compare distance between

each point and next 7 neighbours. Update if new

S

shorter distance is found.

Return S - Closest Pair: DAC Analysis

Run time:

T(N) 2T(N/2) + O(N log N) T(N) = O(N log2 N)

Can we achieve a better run time?

Yes. Don’t sort points in strip from scratch each time.

• Each recursive step returns two lists: all points sorted by y-coordinate,

and all points sorted by x-coordinate.

• Sort by merging two pre-sorted list.

T(N) 2T(N/2) + O(N) T(N) = O(N log N)

Space:

O(n) - Algorithm: Scan-Line

• Sort S in ascending order of x-coordinates.

• Place sorted points p1, …, pn in the event-queue.

• Initialise distance(p1, p2).

• Start scanning from p3.

» Event-points?

» Status structure? - The Status-Structure

• Maintain the status-structure ( -slab):

– Insert the new event-point pi.

– Remove al points that are greater than distance to the left of

the current event-point pi.

– All points in the status structure are maintained in ascending y-

coordinate order. - The Status-Structure

• Maintain the status-structure ( -slab):

– Insert the new event-point pi.

– Remove al points that are greater than distance to the left of

the current event-point pi.

– All points in the status structure are maintained in ascending y-

coordinate order.

– Perform the ‘Efficient Comparison’, as described earlier, BUT

only between the new event point pi and at most 7 other nearest

points to pi.

– Update if a shorter distance is found. - Closest Pair: Scan-Line Analysis

Invariant:

Whenever an event-point pi has been handled, then is the

minimum distance between any pair of points encountered from p1

up to pi.

Run time:

O(n log n)

Space:

O(n) - Related Problems

• Nearest neighbour query:

– Given a set S of n points, and a query point q,

determine which s S is closest to q.

– Brute force: O(n)

– Goal: O(n log n) pre-processing, O(log n) per query.

• Voronoi region, VR(S):

– A set of points closest to a given point.

• Voronoi diagram, VD(S):

– Planar subdivision deliniating Voronoi regions.

• Delaunay Triangulation (the dual of VD(S)).

• Mainly popular static problems:

– Point inside polygon

– Convex hul

– Line segment intersection

– Delaunay triangulation

– Closest pair of points- Acknowledgment

• Slides prepared mainly from the materials of Prof. Dr. Thomas

Ottman