computational geometry tommy färnqvist seminar …tddd95/timetable/le13_20160503.pdf2016/05/03  ·...

33
Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area Convex Hull Closest Pair Final Note 13.1 Seminar 13 Computational Geometry TDDD95: APS Seminar in Algorithmic Problem Solving May 3, 2016 Tommy Färnqvist Department of Computer and Information Science Linköping University

Upload: others

Post on 11-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.1

Seminar 13Computational GeometryTDDD95: APS

Seminar in Algorithmic Problem SolvingMay 3, 2016

Tommy FärnqvistDepartment of Computer and Information Science

Linköping University

Page 2: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.2

Outline

1 Primitive Operations

2 Polygon Area

3 Convex Hull

4 Closest Pair

Page 3: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.3

Geometric Primitives

• Point: two numbers (x , y).• Line: two numbers a and b. [ax + by = 1]

• Line segment: two points.• Polygon: sequence of points.

Primitive operations• Is a polygon simple?• Is a point inside a polygon?• Do two line segments intersect?• What is the Euclidean distance between two points?• Given tree points p1,p2,p3, is p1 → p2 → p3 a counterclockwise turn?

Page 4: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.4

Geometric IntuitionWarning: intution may be misleading.• Humans have spatial intuition in 2D and 3D.• Computers do not.• Neither has good intuition in higher dimensions!

Q. Is a given polygon simple? (No crossings.)

Page 5: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.5

Polygon inside, outside

Theorem (Jordan curve theorem, Jordan 1886, Veblen 1905)

Any continuous simple closed curve cuts the plane in exactly two pieces: the insideand the outside.

Q. Is a point inside a simple polygon?

Page 6: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.6

Polygon inside, outside: crossing number

Page 7: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.7

Implementing ccw

CCW. Given three points a, b, and c, is a→ b → c a counterclockwise turn?• Analog of compares in sorting• Idea: compare slopes

Lesson. Geometric primitives are tricky to implement.• Dealing with degenerate cases.• Coping with floating-point precision.

Page 8: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.8

Implementing ccw

CCW. Given three points a, b, and c, is a→ b → c a counterclockwise turn?• Determinant gives twice signed area of triangle.

• If area > 0 then a→ b → c is counterclockwise.• If area < 0 then a→ b → c is clockwise.• If area = 0 then a→ b → c are collinear.

Page 9: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.9

Immutable Point Data Type

Page 10: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.10

Sample ccw client: line intersection

Intersect. Given two line segments, do they intersect?• Idea 1: find intersection point using algebra and check.• Idea 2: check if the endpoints of one line segment are on different “sides” of the

other line segment (4 calls to ccw).

Page 11: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

Area of PolygonsArea. The area of any simple polygon is given by the following formula

A =n∑

k=0

(xk+1 + xk )(yk+1 − yk )

2,

where n is the number of vertices, (xk , yk ) is the k th point when labelled in acounterclockwise manner, and (xn+1, yn+1) = (x0, y0).

Example

A =n∑

k=0

(xk+1 + xk )(yk+1 − yk )

2

=(1.5 + 0)(0 − 0)

2+

(2.5 + 1.5)(−1 − 0)2

+(3.5 + 2.5)(0 − (−1))

2+

(5 + 3.5)(0 − 0)2

+(5 + 5)(2 − 0)

2+

(3.5 + 5)(2 − 2)2

+(2.5 + 3.5)(3 − 2)

2

+(1.5 + 2.5)(2 − 3)

2+

(0 + 1.5)(2 − 2)2

+(0 + 0)(0 − 2)

2= 0 + (−2) + 3 + 0 + 10 + 0 + 3 + (−2) + 0 + 0

= 12

Page 12: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.12

Area of Polygons

Area. The area of any simple polygon with vertices at integer coordinates is givenby Pick’s theorem:

A = I +R2− 1,

where R is the number of integer points on the boundary of the polygon, and I is thenumber of integer points in the interior of the polygon.

Example

Here, R = 12, and I = 40, which means thearea of the polygon is 40 + 6− 1 = 45.

Page 13: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.13

Convex Hull

A set of points is convex if, for any two points p and q in the set, the line segment pqis completely in the set.

Convex hull. Smallest convex set containing all the points.

• Shortest (perimeter) fence surrounding the points.• Smallest (area) convex polygon enclosing the points.

Page 14: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.14

Mechanical Solution

Mechanical convex hull algorithm. Hammer nails perpendicular to the plane; stretchelastic rubber band around points.

Page 15: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.15

Brute-force Algorithm

Observation 1. Edges of convex hull of P connects pairs of points in P.

Observation 2. p-q is on convex hull of all other points are counterclockwise of −→pq.

O(N3) algorithm. For all pairs of points p and q:• Compute Point.ccw(p, q, x) for all other points x .• p → q is on hull if all valules are positive.

Degeneracies. Three (or more) points on a line.

Page 16: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.16

Package Wrap (Jarvis March)

• Start with point with smallest y -coordinate.• Rotate sweep line aroung current point in the ccw direction.• First point hit is on the hull.• Repeat.

Page 17: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.17

Package Wrap (Jarvis March)

• Compute angle between current point and all remaining points.• Pick smallest angle larger than current angle.• Θ(N) per iteration.

Page 18: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.18

How Many Points on the Hull?

Parameters.• N = number of points.• h = number of points on the hull.

Package wrap running time. Θ(Nh).

How many points on the hull?• Worst case: h = N.• Average case: difficult problems in stochastic geometry.

• uniformly at random in a disc: h = N1/3

• uniformly at random in a convex polygon with O(1) edges: h = log N

Page 19: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.19

Graham Scan

• Choose point p with smallest y -coordinate.• Sort points by polar angle with p to get (simple) polygon.• Consider points in order, and discard those that would create clockwise turn.

Page 20: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.20

Graham Scan: Implementation

• Input: p[1], p[2], ..., p[N] are distinct points (not all collinear).• Output: M and rearrangement so that p[1], p[2], ..., p[M] is convex

hull.

Running time. N log N for sort and linear for rest. (Why?)

Page 21: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.21

Quick Elemination

Quick elimination.• Choose a quadrilateral Q or rectangle R with 4 points

as corners.• Any point inside cannot be on hull.

• 4 ccw tests for quadrilateral• 4 compares for rectangle

Three-phase algorithm.• Pass through all points to compute R.• Eliminate points inside R.• Find convex hull of remaining points.

In practice. Eliminates almost all points in linear time.

Page 22: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.22

Closest Pair

Closest pair problem. Given N points in the plane, find a pair of points with thesmallest Euclidean distance between them.

Brute force. Check all pairs with N2 distance calculations.

1d version. Easy N log N algorithm if points are on a line.

Non-degeneracy assumption. No two points have the same x-coordinate.

Page 23: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.23

Divide-and-conquer Algorithm

Page 24: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.24

Divide-and-conquer Algorithm

Page 25: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.25

Divide-and-conquer Algorithm

Page 26: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.26

Divide-and-conquer Algorithm

Page 27: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.27

Divide-and-conquer Algorithm

Page 28: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.28

Divide-and-conquer Algorithm

Page 29: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.29

Divide-and-conquer Algorithm

Page 30: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.30

Divide-and-conquer Algorithm

Page 31: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.31

Divide-and-conquer Algorithm

Page 32: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.32

Divide-and-conquer Algorithm

Page 33: Computational Geometry Tommy Färnqvist Seminar …TDDD95/timetable/le13_20160503.pdf2016/05/03  · Computational Geometry Tommy Färnqvist Outline Primitive Operations Polygon Area

ComputationalGeometry

Tommy Färnqvist

Outline

Primitive Operations

Polygon Area

Convex Hull

Closest Pair

Final Note

13.33

Next time

Combinatorics/Probability theory. . .