Presentation is loading. Please wait.

Presentation is loading. Please wait.

Line Segment Intersection Computational Geometry, WS 2006/07 Lecture 3 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik.

Similar presentations


Presentation on theme: "Line Segment Intersection Computational Geometry, WS 2006/07 Lecture 3 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik."— Presentation transcript:

1 Line Segment Intersection Computational Geometry, WS 2006/07 Lecture 3 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät für Angewandte Wissenschaften Albert-Ludwigs-Universität Freiburg

2 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann2 Line Segment Intersection Motivation: Computing the overlay of several maps The Sweep-Line-Paradigm: A visibility problem Line Segment Intersection Overlay of planar subdivisions

3 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann3 Line segment intersection Input: Set S = {s 1...,s n } of n closed line segments s i ={(x i, y i ), (x´ i, y´ i )} Output: All intersection points among the segments in S The intersection of two lines can be computed in time O(1).

4 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann4 Sweep line principle Event queue: upper, lower, intersection points Status structure: Ordered set of active line segments

5 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann5 Example: Segment Intersection A D C B E.A.C.D C..E B. A. D. QT E..B B

6 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann6 Data structures: Event Queue Q Operations: Initialisation (sequence of upper and lower endpoints of segments in decreasing y-order), min-delete, insertion (of intersection points) Implementation: Balanced search tree with order p < q  p y < q y or (p y = q y and p x < q x ) Space: O(n + k), k = #intersections Time:Initialisation: O(n log n) Min-delete: O(log n) Insertion: O(log n)

7 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann7 Data structures: Status structure T Balanced search tree k m i i j l l jk i j k l m Operations: insertion, deletion, neighbor search, (changing order) Space: O(n) Time: O(log n)

8 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann8 Number of operations, total time n = #segments k = #intersections Number of operations on event queue Q: ≤ 2n+k, Number of operations on status structure T: ≤ 2n+k Result: Total time required to carry out the sweep-line algorithm for computing all k intersections in a set of n line segments is O((n+k) log n). The sweep-line algorithm is output sensitive!

9 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann9 A simple neighborhood lemma Lemma : Let s i and s j be two non-horizontal segments intersecting in a single point p and no third segment passing through p. Then there is an event point above p where s i and s j become adjacent and are tested for intersection. L p sisi sjsj Proof : L is so close to p that s i and s j are next to each other. Since s i and s j are not yet adjacent at the beginning of the algorithm there is an event q where s i and s j become adjacent and tested for intersection.

10 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann10 Handling special cases 3 8 4 5 7 1 3 2 1 P L

11 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann11 Special cases I 1 3 5 7 4 4 7 51 3 8 L(P) C(P) 3 8 4 5 7 1 3 2 1 P L

12 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann12 Special cases II 2 1 3 7 7 3 12 8 U(P) C(P) 3 8 4 5 7 1 3 2 1 P L

13 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann13 HandleEventPoint(p) if ( L(p)  U(p)  C(p) contains more than 1 segment) then {report p as intersection; delete L(p)  C(p) from T; insert U(p)  C(p) into T;} if ( U(p)  C(p) = {} ) then {Let s l and s r be left and right neighbours of p in T FindNewEvent(s l,s r,p) else s´ = leftmost segment of U(p)  C(p) in T s l = left neighbour of s´ in T FindNewEvent(s l,s´,p) s´´ = rightmost segment of U(p)  C(p) s r = right neighbour of s´´ in T FindNewEvent(s´´,s r,p)

14 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann14 FindNewEvent(s,s´,p) If (s and s´ intersect below the sweep line L or on it and to the right of the current event point p) and (the intersection of s and s´is not yet present in Q) then insert the intersection point into Q;

15 Computational Geometry, WS 2006/07 Prof. Dr. Thomas Ottmann15 Summary Theorem: Let S be a set of n line segments in the plane. All intersection points in S, with for each intersection point the segments involved in it, can be reported in O(n log n + k log n) time and O(n) space, where k is the size of the output.. k can be reduced to I, I = #intersections


Download ppt "Line Segment Intersection Computational Geometry, WS 2006/07 Lecture 3 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik."

Similar presentations


Ads by Google