230 likes | 412 Vues
Computational Geometry. Piyush Kumar (Lecture 3: Convexity and Convex hulls). Welcome to CIS5930. p. q. p. convex. non-convex. q. Convexity. A set S is convex if for any pair of points p,q S we have pq S. Convex Hulls : Equivalent definitions.
E N D
Computational Geometry Piyush Kumar (Lecture 3: Convexity and Convex hulls) Welcome to CIS5930
p q p convex non-convex q Convexity A set S is convex if for any pair of points p,q S we have pq S.
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 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 p6 p9 p5 p12 p7 p4 p11 p1 p8 p2 p0 Extreme edge Supports the point set
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(n3) in the plane (How?) • Anyone with an O(n2) algorithm?
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: Upto Page 20 • D&C notes • Assignment2.cpp and ch_2.cpp • Will talk more about it towards the end of class.
Today (Jan 24th) • Chan’s Algorithm • Line Segment intersection • Homeworks / Projects
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 • 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 O((n+k)log n) • Edelsbrunner Chazeele 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 primitive? CG FAQ 1.3 • Any special cases?
Today ( Jan 26th) • Line Segment intersection Algorithm • Project discussion • Polygons
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 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 queue (O(nlog n)). • Sweep line status is empty. • Algorithm proceeds by inserting and deleting discrete events from the queue until it is empty.
Useful lemma • Given s1,s2 intersecting in p, there is a placement of the sweepline prior to this event such that s1,s2 are adjacent along the sweepline. • Just before an intersection occurs, the two relevant segments are adjacent to each other in the sweep line status.
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 – 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 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)
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
Polygons • Definition of a simple polygon • Point containment in simple polygon • Area of a simple polygon • Triangulation of a simple polygon • Convex hull of a simple polygon • Fast preprocessing of a convex polygon to do in/out queries.