Line segment intersection. Family of intersection problems

Similar documents
Computational Geometry

CS 532: 3D Computer Vision 11 th Set of Notes

Polygon decomposition. Motivation: Art gallery problem

Notes and Answers to Homework Exam 1, Geometric Algorithms, 2017

CS 372: Computational Geometry Lecture 3 Line Segment Intersection

Lecture 3: Art Gallery Problems and Polygon Triangulation

Computational Geometry

CMSC 754 Computational Geometry 1

2 A Plane Sweep Algorithm for Line Segment Intersection

1. Meshes. D7013E Lecture 14

Computational Geometry

Voronoi diagram and Delaunay triangulation

CS S Lecture February 13, 2017

CS 532: 3D Computer Vision 14 th Set of Notes

Polygon Partitioning. Lecture03

GEOMETRIC SEARCHING PART 1: POINT LOCATION

Motivation: Art gallery problem. Polygon decomposition. Art gallery problem: upper bound. Art gallery problem: lower bound

Flavor of Computational Geometry. Voronoi Diagrams. Shireen Y. Elhabian Aly A. Farag University of Louisville

Computing intersections in a set of line segments: the Bentley-Ottmann algorithm

Trapezoidal Maps. Notes taken from CG lecture notes of Mount (pages 60 69) Course page has a copy

1/60. Geometric Algorithms. Lecture 1: Introduction. Convex Hulls

CS6100: Topics in Design and Analysis of Algorithms

Improved Bounds for Intersecting Triangles and Halving Planes

Line Arrangements. Applications

Range Searching II: Windowing Queries

Computational Geometry

Computational Geometry Lecture Duality of Points and Lines

CMPS 3130/6130 Computational Geometry Spring Voronoi Diagrams. Carola Wenk. Based on: Computational Geometry: Algorithms and Applications

Voronoi Diagrams and Delaunay Triangulation slides by Andy Mirzaian (a subset of the original slides are used here)

Line Arrangement. Chapter 6

Advanced Algorithms Computational Geometry Prof. Karen Daniels. Fall, 2012

Randomized incremental construction. Trapezoidal decomposition: Special sampling idea: Sample all except one item

K-structure, Separating Chain, Gap Tree, and Layered DAG

Solutions to problem set 1

Computational Geometry

Computational Geometry

arxiv: v1 [cs.cg] 8 Jan 2018

CAD & Computational Geometry Course plan

Polygon Triangulation. (slides partially by Daniel Vlasic )

Planar Point Location

1 The range query problem

Introduction to Algorithms

2 Line Segment Intersection

The Geometry of Carpentry and Joinery

Motorcycle Graphs and Straight Skeletons

External-Memory Algorithms with Applications in GIS - (L. Arge) Enylton Machado Roberto Beauclair

Convex Hulls in Three Dimensions. Polyhedra

Geometric Algorithms and Data Structures. Part II: Scan-Line Algorithms and Planar Decompositions. Jim Fix

An Implementation of a Near-Linear Polygon Triangulation Algorithm for General Polygons

CSE331 Introduction to Algorithms Lecture 15 Minimum Spanning Trees

CS 410/584, Algorithm Design & Analysis, Lecture Notes 8!

Delaunay Triangulations

Critical Area Computation for Missing Material Defects in VLSI Circuits

Discrete Mathematics I So Practice Sheet Solutions 1

Field: We have been doing geometry eg linear programming. But in computational geometry, key difference in focus: low dimension d

MISCELLANEOUS SHAPES

Henneberg construction

Divided-and-Conquer for Voronoi Diagrams Revisited. Supervisor: Ben Galehouse Presenter: Xiaoqi Cao

Fortune s Algorithm. Notes from the book by de Berg, Van Krevald, Overmars, and Schwarzkpf

Stabbers of line segments in the plane

For a set S of line segments, a separator can be found using duality. Under duality, the segments transform to double wedges, and a separator line tra

Convex Hull of the Union of Convex Objects in the Plane: an Adaptive Analysis

CS 410/584, Algorithm Design & Analysis, Lecture Notes 8

Polygon Triangulation. (slides partially by Daniel Vlasic )

would be included in is small: to be exact. Thus with probability1, the same partition n+1 n+1 would be produced regardless of whether p is in the inp

Chapter 8. Voronoi Diagrams. 8.1 Post Oce Problem

Ma/CS 6b Class 26: Art Galleries and Politicians

Computational Geometry [csci 3250]

Algorithm Design (8) Graph Algorithms 1/2

Ma/CS 6b Class 11: Kuratowski and Coloring

Mesh Generation. Quadtrees. Geometric Algorithms. Lecture 9: Quadtrees

Elementary maths for GMT. Algorithm analysis Part II

Computational Geometry

Lecture 16: Voronoi Diagrams and Fortune s Algorithm

Testing Bipartiteness of Geometric Intersection Graphs David Eppstein

G 6i try. On the Number of Minimal 1-Steiner Trees* Discrete Comput Geom 12:29-34 (1994)

Insertions and Deletions in Delaunay Triangulations using Guided Point Location. Kevin Buchin TU Eindhoven

Delaunay Triangulations. Presented by Glenn Eguchi Computational Geometry October 11, 2001

Week 7 Convex Hulls in 3D

Geometric Modeling Mortenson Chapter 11. Complex Model Construction

MA 323 Geometric Modelling Course Notes: Day 36 Subdivision Surfaces

Computational Geometry. Geometry Cross Product Convex Hull Problem Sweep Line Algorithm

6.854J / J Advanced Algorithms Fall 2008

Motion Planning. O Rourke, Chapter 8

CS 361 Data Structures & Algs Lecture 11. Prof. Tom Hayes University of New Mexico

10. Line Arrangements Lecture on Monday 2 nd November, 2009 by Michael Homann

CS 372: Computational Geometry Lecture 10 Linear Programming in Fixed Dimension

arxiv: v1 [cs.cc] 30 Jun 2017

Theoretical Computer Science

Polygon Triangulation

Pebble Sets in Convex Polygons

2D Geometry. Pierre Alliez Inria Sophia Antipolis

Math 366 Lecture Notes Section 11.4 Geometry in Three Dimensions

Connected Components of Underlying Graphs of Halving Lines

l Heaps very popular abstract data structure, where each object has a key value (the priority), and the operations are:

Week 2 Polygon Triangulation

The Piecewise Linear-Quadratic Model for Convex Bivariate Functions

Domination, Independence and Other Numbers Associated With the Intersection Graph of a Set of Half-planes

Efficient Algorithmic Techniques for Several Multidimensional Geometric Data Management and Analysis Problems

CS 2336 Discrete Mathematics

Transcription:

CG Lecture 2 Line segment intersection Intersecting two line segments Line sweep algorithm Convex polygon intersection Boolean operations on polygons Subdivision overlay algorithm 1 Family of intersection problems 1. Line segment intersection: given n line segments, report their intersections efficiently. Worst case: k = n(n 1)/2 = O(n 2 ) intersections. Optimal algorithm: O(n log n + k) time and O(n) space. 2. Polygon intersection Intersection of two simple polygons is not a simple polygon. Boolean operations of union and difference very similar Optimal algorithm: O(n log n + k) time, O(n+m) for convex. 3. Subdivision overlay: given two planar subdivisions, computer their overlay. Generalization of 2. 2 1

Family of intersection problems (2) 4. Line intersections and arrangements: given n lines (half-spaces), compute their intersections and the regions they define efficiently. 5. Face and polyhedra intersections Intersection of two polygonal (triangular) faces in space Intersection of two (convex) polyhedra. Applications: MANY! Basic operations in graphics. Engineering and VLSI design Non-geometric domains: databases, parallelization. 3 Intersection of two line segments Theorem: Segments (p 1,p 2 ) and (p 3,p 4 ) intersect in their interior iff p 1 and p 2 on different sides of line p 3 p 4 p 4 p 2 p 3 and p 4 on different sides of line p 1 p 2 Both conditions can be tested by computing the orientations of four triangles. Which ones? Special cases: p 1 p 3 4 2

Intersection point computation pt () = p1+ ( p2 p1) t 0 t 1 qs () = q+ ( q q) s 0 s 1 1 2 1 p 2 Question: What is the meaning of other values of s and t? q 1 q 2 Solve (2D) linear vector equation for t and s: pt () = qs ( ) check that t [0,1] and s [0,1] p 1 5 Line segment intersections Problem: Given n line-segments in the plane, compute all their intersections. Variant: Is there any pair of intersecting segments? Assume: general position No line segment is vertical. No two segments are collinear. # of segments: n No three segments intersect at a common point. # of intersections: k 0 k n(n 1)/2 Naive algorithm: Check each pair of segments for intersection. Time complexity: Θ(n 2 ). 6 3

Line segment intersections Goal: Output-sensitive algorithm O(n log n + k log n) time O(n) space not optimal, but good start Idea: Segments that are close together are candidates for intersection. Keep track of closedness changes. If x and y projections don t t intersect, no intersection. 7 Sweep line: idea Segment adjacencies with respect to a horizontal (vertical) line change locally: s i and s j must be adjacent for the intersection to occur. (s i,s j ) before intersection. (s j,s i ) after intersection. s 1 s 2 s 3 s 5 s 4 (s 1,s 2,s 3 ) (s 1,s 3,s 2 ) (s 1,s 3 ) s 6 Keep track of segment adjacencies as vertical line moves from left to right. Stop only at event points! 8 4

Adjacency theorem Theorem: Just before an intersection occurs (infinitesimally-close to it), the two respective segments are adjacent to each other in the sweep-line status. Proof: In practice: Look ahead: whenever two line segments become adjacent along the sweep line, check for their intersection below the sweep line. 9 Sweep line algorithm An event is any endpoint or intersection point. Sweep a horizontal line from top to bottom. Maintain two data structures: Event priority queue Q: sorted by y coordinate. Sweep line status L: stores segments currently intersected by the sweep line, sorted by y coordinate. s 1 s 2 s 3 s 5 s 4 s 6 () (s 2 ) (s 2,s 3 ) # of events n + k # of segments in L n 10 5

Balanced binary tree Balanced binary tree sorted by x coordinate Insertion, deletion, and neighbor operations in O(log n) s 1 s 2 s 3 s s 4 s 3 5 s 1 s 4 s 1 s 2 s 4 s 5 s 2 s 3 11 Sweep line algorithm Initialization: Put all segment endpoints in the event queue Q, sorted according to y coordinates. Time: O(n log n). Sweep line status is initially empty. The algorithm proceeds by inserting, deleting, and handling discrete events from the queue Q until it is empty. It also maintains the list L. 12 6

Event handling start of segment Event of type A: Beginning of segment (upper endpoint) Locate segment position in the status. Insert segment into sweep line status. Test for intersection below the sweep line with the segments immediately to the left and right of it. Insert intersection point(s) (if found, and if not already in the queue) into the event queue. Time complexity: n events, O(log n) time for each O(n log n) total. s i s j s k s l 13 Event handling end of segment Event of type B: End of segment (lower endpoint) Locate segment position in the status. Delete segment from sweep line status. Test for intersection below the sweep line between the segments immediately to the left and right. Insert intersection point (if found, and if not already in the queue) into the event queue. Time complexity: n events, O(log n) time for each O(n log n) in total. s i s j s k s l 14 7

Event handling intersection Event of type C: Intersection point Report the point. Swap the two respective line segments in the sweep line status. For the new left and right segments test each for intersection against the segment immediately adjacent the status line (if exists). Insert intersection point (if found, and if not already in the queue) into the event queue. Time complexity: k such events, O(log n) each O(k log n) in total. s m s i s j s l k is the output size 15 Example a3 s3 b4 e1 s4 a1 a2 s2 s1 a0 a4 b 1 s0 b0 b2 b3 Sweep Line Status Event Queue 16 8

Complexity analysis Basic data structures: Event queue: heap Sweep line status: balanced binary tree Each heap/tree operation requires O(log n) time. (Why is O(log k) = O(log n)?) Total time complexity: O((n+k) log n). If k n 2 this is slightly worse than the naive algorithm. When k=o(n 2 /log n) then the sweep algorithm is faster. Total space complexity: O(n+k). Question: How can this be improved to O(n)? Note: There exists a better algorithm whose running time is Θ(n log n + k) with O(n+k) space complexity. 17 Handling degeneracies Horizontal segments with same y coordinate treat them in arbitrary order (i.e., from left to right y coordinate) Overlapping segments report them as special Multiple segment intersections at the same point p s i q p s i s s k j p s i s j 18 9

Handling degeneracies 19 Line segment intersection algorithm 20 10

Intersection of convex polygons Input: Two convex polygons A = n and B = m. Output: one convex polygon A B n + m in optimal O(n+m) time and space. Observations: alternation of A and B boundary pieces. alternation at intersection points order of vertices is kept. at each intersection, choose leftmost segment. 9 11 5 3 6 7 4 1 A = {1,2,3,4,5} B = {6,7,8,9{ 6,7,8,9} I = {10,11{ 10,11} A B = {6,7{ 6,7,10,8,9,11} 8 10 2 21 Code for convex polygon intersection 22 11

Advance rules advance advance a i b j a i b j advance advance a i b j a i b j Do not advance on the boundary of either A or B whose current edge may contain a yet-to to-be-found intersection 23 Example of convex intersection trace a b 24 12

Binary operations on polygons Operations: intersection, union, difference. Observations: Operations on simple connected polygons can lead to holes and disconnected pieces Operations are similar, once the intersection points are found. Only the boundary reconstruction rules changes. Maximum number of pieces/holes is O(nm) 5 A 4 7 2 13 14 3 12 9 11 6 8 10 1 B A = {1,2,3,4,5} B = {6,7,8{ 6,7,8} I = {9,10,11,12,13,14{ 9,10,11,12,13,14} 25 Maximum number of pieces/holes Each piece has O(n) ) slabs. The intersection has O(n 2 ) pieces. 26 13

Intersection of polygons A B A 4 7 5 2 13 14 3 B 13 14 12 3 12 9 9 11 11 6 8 10 10 1 A = {1,2,3,4,5} B = {6,7,8{ 6,7,8} Boundary rule: I = {9,10,11,12,13,14{ 9,10,11,12,13,14} Follow segment with A B = {9,10,11,12}{ U {13,3,14} both interiors to the left 27 Union of polygons A U B A 4 4 7 5 2 13 14 7 5 2 3 B 13 14 12 9 9 11 11 6 8 6 8 10 10 1 1 A = {1,2,3,4,5} B = {6,7,8{ 6,7,8} Boundary rule: I = {9,10,11,12,13,14{ 9,10,11,12,13,14} Follow segment with A UB = {(6,10,1,11,8,7,14,4,5), 6,10,1,11,8,7,14,4,5),(9,2,13) 9,2,13)} either interior to the left 28 14

Difference of polygons A 4 7 5 2 13 14 3 B 12 9 11 6 8 10 1 A = {1,2,3,4,5} B = {6,7,8{ 6,7,8} I = {9,10,11,12,13,14{ 9,10,11,12,13,14} A B = {9,12,2,13,14,4,5{ 9,12,2,13,14,4,5} 5 2 4 13 14 9 12 A B Boundary rule: Follow segment with A s s interior to the left 29 Subdivision overlay intersection Algorithm for a more general class of shapes subdivision overlays, a subdivision of faces in the plane represented by a planar graph. Idea: use the sweep line technique to detect intersections and build the new overlay by adding vertices and updating pointers. Start with an overlay consisting of two disconnected components, S 1 and S 2. Add points and links as events occur. S 2 S 1 O(S 1,S 2 ) 30 15

Subdivision overlay representation A face is the maximal connected subset of the plane that does not contain in its interior a point on an edge or vertex. The incident edges and vertices form its boundary. Representation as a doubly-connected edge list. Directed edges are half-edges Vertex: : coordinates, incident edge Face: : inner and outer components Half-edge edge: : origin, twin edge, next and previous edges, incident face. 31 Example of subdivision 32 16

Event handling sketch Use a sweep line, stopping at vertices. Keep a doubly connected list D,, initially containing edges of S 1 and S 2 If the event involves only edges from either S 1 or S 2, there is no need to update D. Otherwise, locally update the data structures. (pointer manipulations tedious details omitted). All operations take O(m), where m is the cardinality of the vertex. At the end of the sweep line, the vertex and edges have been properly handled in the data structure. The face information (old and new faces) must now be 33 updated to create O(S 1,S 2 ). Event handling example v 1 u 4 e e15 12 w 5 e 34 e43 u e 21 3 v 2 v 1 u 4 e 52 u 3 v 2 34 17

Boundary and face tracing Boundary cycles are extracted directly from D by following pointers faces are directly created and extracted. Missing information: is the boundary an outer or an inner face? Which face does it belong to? Inner or outer face: find the angle of the leftmost vertex. If it is greater than π, then it is an outer face, otherwise it is an outer face. 35 Face handling connected components holes outer boundaries 36 18

Subdivision intersection algorithm (1) 1. Initialize D with S 1 and S 2 2. Compute all intersections between edges from S 1 and edges of S 2 with line-sweep. In addition to the actions on T and Q, do 1. Update D when the event involves edges from both S 1 and S 2. 2. Store first half-edge to the left of the event point at corresponding vertex in D (used later for face computation). 3. Find boundary cycles. 4. Compute connected components of graph G whose nodes are boundary cycles and whose arcs connect each hole cycle to the cycle left of its leftmost vertex. 37 Subdivision intersection algorithm (2) 5. For each connected component in G do: Let C be the unique outer boundary cycle in the component, and let f be the face bounded by the cycle. a. Create a face record for f b. Set OuterComponent(f) to a half-edge of C c. Construct the list InnerComponents(f) with pointers to one half-edge in each hole cycle in the component. d. Make the IncidentFace() pointers of all half-edges in the cycles point to the face record of f. Theorem: : The overlay of two planar subdivisions S 1 and S 2 of complexity n can be computed in O(nlogn + klogn) ) where k is the complexity of the resulting overlay. 38 19

Line segment intersection algorithms Naïve O(n 2 ) Bentley-Ottman, 1988: O((n+k) log n) Edelsbrunner-Chazelle, 1990: O(nlogn + k) requires O(nlogn) space, complex. Clarkson-Shor, Mumuley, 1992: O(nlogn + k) with randomized O(n) space Balaban, 1995: O(nlogn + k) with O(n) space, optimal deterministic. Solved a long open problem! 39 20