Computational Geometry Piyush Kumar Lecture 3 Convexity and

  • Slides: 53
Download presentation
Computational Geometry Piyush Kumar (Lecture 3: Convexity and Convex hulls) Welcome to CIS 5930

Computational Geometry Piyush Kumar (Lecture 3: Convexity and Convex hulls) Welcome to CIS 5930

Convexity A set S is convex if for any pair of points p, q

Convexity A set S is convex if for any pair of points p, q S we have pq S. p p q convex q non-convex

Convex Hulls : Equivalent definitions The intersection of all covex sets that contains P

Convex Hulls : Equivalent definitions The intersection of all covex sets that contains P The intersection of all halfspaces that contains P. The union of all triangles determined by points in P. All convex combinations of points in P. P here is a set of input points

Convex Hulls Applications § § § Collision Detection Fitting shapes Shape Approximation NN-Searching Useful

Convex Hulls Applications § § § Collision Detection Fitting shapes Shape Approximation NN-Searching Useful as a preprocessing step to many other algorithms in computational geometry. § The most ubiquitous structure in computational geometry.

Convex hulls Extreme point Int angle < pi p 6 p 9 p 12

Convex hulls Extreme point Int angle < pi p 6 p 9 p 12 p 7 p 11 p 8 p 5 p 4 p 2 p 1 p 0 Extreme edge Supports the point set

Convex hull : Representation We will represent the convex hull by an enumeration of

Convex hull : Representation We will represent the convex hull by an enumeration of the vertices of the CH(P) in counterclockwise order. Naïve Algorithm to compute convex hulls can be implemented in O(n 3) in the plane (How? ) Anyone with an O(n 2) algorithm?

Convex hull has a lower bound equivalent to sorting has many similar algorithms to

Convex hull has a lower bound equivalent to sorting has many similar algorithms to sorting. We will see today § § § Graham Scan Incremental (one point at a time) D&C Qhull ( similar to Quick Sort) Jarvis March Chan’s Algorithm

Assignments for next week Notes of Dr. Mount: Lec 1 -4, 6 Assignment 2.

Assignments for next week Notes of Dr. Mount: Lec 1 -4, 6 Assignment 2. cpp and ch_2. cpp § Will talk more about it towards the end of class.

Today (Jan 16 th) Line Segment intersection Homeworks / Projects

Today (Jan 16 th) Line Segment intersection Homeworks / Projects

Line Segment Intersection Applications § § VLSI (Intel uses it a lot) Map Overlay

Line Segment Intersection Applications § § VLSI (Intel uses it a lot) Map Overlay Clipping in Graphics CSG Problem : Given a set of line segments in the plane, compute all the intersection point.

Line Segment Intersection : GIS Cities, rivers, railroads and their overlay in western Canada.

Line Segment Intersection : GIS Cities, rivers, railroads and their overlay in western Canada.

Line Segment Intersection Lower Bound from EU EU : Given a list of n

Line Segment Intersection Lower Bound from EU EU : Given a list of n numbers, are all these numbers unique? [Y / N]? § Lower bound is Ω(nlogn) § How do we use this fact to prove a Ω(nlogn) on Line segment intersection problem? § Does this imply a lower bound of Ω(nlogn+k)? Tell me a naïve algorithm to solve this problem.

Line Segment intersection Naïve O(n^2) Bentley Ottman sweep O((n+k)log n): 1979. Edelsbrunner Chazelle 92

Line Segment intersection Naïve O(n^2) Bentley Ottman sweep O((n+k)log n): 1979. Edelsbrunner Chazelle 92 § O(nlogn +k) : Supercomplicated O(nlogn) space Clarkson and Shor § O(nlogn +k) Randmized O(n) space Balaban : Deterministic O(nlogn + k) in O(n space. Solved a long open problem.

Segment Intersection How do we intersect two segments? How do we implement such a

Segment Intersection How do we intersect two segments? How do we implement such a primitive? CG FAQ 1. 3 Any special cases?

Do two segments intersect?

Do two segments intersect?

Intersection point? Solve for s, t. Beware of degenerate cases. Compute_intersection_point primitive is one

Intersection point? Solve for s, t. Beware of degenerate cases. Compute_intersection_point primitive is one of the most time consuming parts of segment intersection algorithms. For speed: Floating point filters on rational arithmetic is used.

Point inside Simplex?

Point inside Simplex?

Today ( Jan 20 th) Line Segment intersection Algorithm Project discussion Polygons

Today ( Jan 20 th) Line Segment intersection Algorithm Project discussion Polygons

Line Segment intersection Sweep line paradigm § Main idea is to sweep the entire

Line Segment intersection Sweep line paradigm § Main idea is to sweep the entire plane with a line and compute what we want to , as we sweep past the input. Event scheduling and updates § Carefully schedule the computation so that it does not take too much time to compute the output.

Line Segment Intersection A Sorted sequence data structure § § Insert Delete Successor/Predecessor All

Line Segment Intersection A Sorted sequence data structure § § Insert Delete Successor/Predecessor All in O(log n) X-structure (or the event queue) Y-structure (or the sweep line)

Plane Sweep Paradigm Initialization: § Add all segment endpoints to the X-structure or event

Plane Sweep Paradigm Initialization: § Add all segment endpoints to the X-structure or event queue (O(n log n)). § Sweep line status is empty. Algorithm proceeds by inserting and deleting discrete events from the queue until it is empty.

Plane Sweep

Plane Sweep

Pretend these never happened! No line segment is vertical If two segments intersect, then

Pretend these never happened! No line segment is vertical If two segments intersect, then they intersect in a single point (that is, they are not collinear). No three line segments intersect in a common point.

Useful lemma Given si, sj intersecting in p, there is a placement of the

Useful lemma Given si, sj intersecting in p, there is a placement of the sweepline prior to this event such that si, sj are adjacent along the sweepline. Just before an intersection occurs, the two relevant segments are adjacent to each other in the sweep line status.

Proof of Lemma

Proof of Lemma

Plane Sweep Event A: Segment left endpoint § Insert segment in sweep line or

Plane Sweep Event A: Segment left endpoint § Insert segment in sweep line or the Y-structure. § Test for intersection to the right of the sweep line with the segments immediately above and below it. Insert intersection points (if found) into X-structure or event queue. Complexity: ? Worst case?

Plane Sweep : Left Endpoint

Plane Sweep : Left Endpoint

Plane Sweep – Algorithm Event B: Segment right endpoint § Delete segment from sweep

Plane Sweep – Algorithm Event B: Segment right endpoint § Delete segment from sweep line status. § Test for intersection to the right of the sweep line between the segments immediately above and below. (can you do any optimization for this case? ) Insert point (if found) into event queue. Complexity: ?

Plane Sweet: Right endpoint

Plane Sweet: Right endpoint

A simple optimization: Right endpoints When s is deleted, p gets recomputed. Avoid it

A simple optimization: Right endpoints When s is deleted, p gets recomputed. Avoid it using a hash?

Plane Sweep – Algorithm Event C: Intersection point § Report the point. § Swap

Plane Sweep – Algorithm Event C: Intersection point § Report the point. § Swap the two line relevant segments in the sweep line status. § For the new upper segment – test it against its predecessor for an intersection. Insert point (if found) into event queue. § Similar for new lower segment (with successor). Complexity: O(klogn)

Plane sweep : Degenerate cases.

Plane sweep : Degenerate cases.

The Simplified Algorithm Construct the X-structure scan thru the X-structure (or the event queue)

The Simplified Algorithm Construct the X-structure scan thru the X-structure (or the event queue) from left to right processing: § Segment Left endpoint § Segment right endpoint § Intersection points

Handling Degeneracies

Handling Degeneracies

Polygon: Definition In geometry a polygon is traditionally a plane figure that is bounded

Polygon: Definition In geometry a polygon is traditionally a plane figure that is bounded by a closed path or circuit, composed of a finite sequence of straight line segments (i. e. , by a closed polygonal chain). These segments are called its edges or sides, and the points where two edges meet are the polygon's vertices or corners.

Point in polygon test?

Point in polygon test?

Polygons Point containment in simple polygon Area of a simple polygon Convex hull of

Polygons Point containment in simple polygon Area of a simple polygon Convex hull of a simple polygon Triangulation of a simple polygon Fast preprocessing of a convex polygon to do in/out queries.

Area of a convex polygon

Area of a convex polygon

Area of a polygon

Area of a polygon

Area of a polygon

Area of a polygon

From a distance

From a distance

Area of a polyon

Area of a polyon

Volume in higher dimensions

Volume in higher dimensions

Volume in 3 D

Volume in 3 D

Convex hull of poygons Melkman’s Algorithm. Uses a deque: head-tail linked list, for which

Convex hull of poygons Melkman’s Algorithm. Uses a deque: head-tail linked list, for which elements can be added to or removed from the front (head) or back (tail). Considered to be the best CH algorithm for simple polygons.

Melkman’s algorithm Start with CH of 3 vertices = Triangle

Melkman’s algorithm Start with CH of 3 vertices = Triangle

Partition plane in 4 colors Points in the deque are circled in blue. The

Partition plane in 4 colors Points in the deque are circled in blue. The point N is special point stored separately. F and B are front and back vertices of

Partition plane in 4 colors Next point on the polygon can only lie in

Partition plane in 4 colors Next point on the polygon can only lie in the colored regions. Invariant : N followed by the vertices in the deque (front to back) form a convex

Partition plane in 4 colors If p falls into region I, push N onto

Partition plane in 4 colors If p falls into region I, push N onto the front of the deque, then overwrite N by p. To restore the invariant, backtrack/delete vertices from the front of the deque until a convex turn is encountered.

Partition plane in 4 colors If p falls into region II, push N onto

Partition plane in 4 colors If p falls into region II, push N onto the back of the deque, then overwrite N by p. Restore the invariant by backtracking/deleting vertices from the back of the deque until a convex turn is

Partition plane in 4 colors If p falls into region III, simply overwrite N

Partition plane in 4 colors If p falls into region III, simply overwrite N by p, and restore the invariants as in both cases I and II.

Partition plane in 4 colors If p falls into region IV , ignore this

Partition plane in 4 colors If p falls into region IV , ignore this and all following vertices until one emerges into another region.

Melkman’s algorithm An example of online algorithm: meaning that points can be added in

Melkman’s algorithm An example of online algorithm: meaning that points can be added in a streaming fashion. Very simple to code. Practical. Implemented in CGAL.