530 likes | 592 Views
Understand the concepts of convexity, convex hulls, and line segment intersection in computational geometry. Explore applications, algorithms, and lower bounds for these fundamental geometric problems.
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: Lec 1-4, 6 • Assignment2.cpp and ch_2.cpp • Will talk more about it towards the end of class.
Today (Jan 16th) • 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 : GIS Cities, rivers, railroads and their overlay in western Canada.
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 • 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?
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.
Today ( Jan 20th) • 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.
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 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.
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: ?
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 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
Polygon: Definition In geometry a polygon is traditionally a planefigure 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.
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.
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
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 deque.
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 polygon.
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 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 encountered.