Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they...

33
Intersections

Transcript of Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they...

Page 1: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersections

Page 2: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection Problem 3

Intersection Detection:

Given two geometric objects, do they intersect?

Intersection detection (test) is frequently easier than the corresponding construction problem

Page 3: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection Problem 2

Pairwise Intersection:

Given n geometric objects, (i) determine whether any two intersect?(ii) report all intersecting pairs.

For testing problem we look for an algorithm that avoids testing each object against every other object.

Page 4: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection of convex polygons

Problem: Given two convex polygons, P with L vertices and Q with M vertices, compute their intersection

Brute force method: O(LM) The intersection of a convex L-gon an

d a convex M-gon can be computed in (L+M) time.

Page 5: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Trivial method for computing intersection of convex

polygons 2

The boundary of PQ consists of alternate chains of vertices of the two polygons, interspersed with points at which the boundaries intersect.

Red, Black, Blue, Black, …

PQ

PQ

Page 6: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Trivial method for computing intersection of convex

polygons 1

To proceed around P, edge by edge, finding all of the boundary intersection point involving Q and keeping a list of the intersection points and vertices along the way.

This takes O(LM) time because each edge of P will be checked against every edge of Q to see if they intersect.

Can this method generalize to solve the intersection of two general polygons ? YES

Page 7: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

(L+M) algorithm for computing intersection of convex polygons 2

The approach consists in subdividing the plane into regions, in each of which the intersection of the two polygons can be easily computed.

Inside a slab each polygon forms a trapezoid

Page 8: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

(L+M) algorithm for computing intersection of

convex polygons 1

To partition plane into regions. O(L+M) merge-sort The boundary of each polygon is divided into two

monotone chains by the left and right extreme points.

Perform a plane-sweep algorithm (merge-sort) from left to right to partition the interior of each polygon into trapezoids.

The key observation is that in each slab the intersection of P and Q is an intersection of two quadrilaterals, which can be found in O(1) time. The resulting pieces can be fitted together in O(L+M) time. O(L+M)

Question: Can this method generalize to solve the intersection of two star-shaped polygons or two general polygons ? NO

Page 9: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection of star-shaped polygons 3

Problem: Given two star-shaped polygons, P and Q, compute their intersection

P Q

Figure 1

Page 10: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection of star-shaped polygons 2

The intersection of two star-shaped polygons P & Q is not a polygon, but is a union of many polygons.

In figure 1, P & Q both have n vertices, and every edge of P intersects every edge of Q, so the intersection has order of n2 vertices.

Page 11: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection of star-shaped polygons 1

Theorem: Finding the intersection of two star-shaped polygons requires (n2) time in the worst case.

Page 12: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection of general polygons

Problem: Given two general polygons, P and Q, compute their intersection

Page 13: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection computation

The intersection of two convex polygons: (n)

The intersection of two star-shaped polygons: (n2).

The intersection of two general polygons: (n2).

But it may not be necessary to spend this much time if we only want to know whether two polygons P & Q intersect at all.

Page 14: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Intersection of line segments

Problem (Line Segment Intersection Test) Given n line segments in the plane, determine whether any two intersect.

Brute-force: Take each pair of segments and determine whether they intersect. This takes O(n2) time.

Theorem: Whether any two of n line segments in the plane intersect can be determined in (n log n) time.

Page 15: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Polygon Intersection Test Problem (Polygon Intersection Test) Given two simple polygons P and Q, determine if the

y intersect. Polygon Intersection Test O(n) Line Segment Inters

ection Test Detect any edge intersection between P and Q b

y using the Line Segment Intersection Test. If no intersection is found, we must test whether

PQ or QP. If PQ, then every vertex of P is internal to Q, so we may apply the single-shot point inclusion test in O(n) time using any vertex of P.

Page 16: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Simple Polygon Test

Problem (Simplicity Test) Given a polygon, determine if it is sim

ple. Simplicity Test O(n) Line Segment Inte

rsection Test

Page 17: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line segment Intersection Problem in R1

Suppose we are given n intervals on the real line and wish to know whether any two overlap.

This can be answered in O(n2) time by inspecting all pairs of intervals

If we sort the 2n endpoints of the intervals and designate them as either right or left, then the intervals themselves are disjoint if and only if the endpoints occur in alternating order: L R L R... R L R. This test can be performed in O(n log n) time.

L L L LR R R R L L L LR R R RL R

Page 18: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Two questions: Can this algorithm be improved? Can it generalize to two dimensions,

i.e. to the case when the line segments are arbitrarily oriented?

Page 19: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Lower Bound Element Uniqueness (Element Distinctness)

Problem (Given n real numbers, are they all distinct ?) requires (n log n) time in algebraic computation tree computation model

Element Uniqueness O(n) Interval Overlap. Given a collection of n real numbers xi, they can be

converted in linear time to n intervals [xi, xi]. These intervals overlap if and only if the original points are not distinct .

We conclude that (n log n) comparisons are necessary and sufficient to determine whether n intervals in R1 are disjoint.

Page 20: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Generalize Interval Overlap Problem in R1 to R2

The idea behind Interval Overlap Algorithm in R1: If any two intervals contain a point of the same x-coord, then the two intervals overlap.

The idea behind Line Segment Intersection Algorithm in R2: Even though two line-segments contain a point of the same x-coord., i.e. both are intersected by a vertical line, it doesn’t mean that these two line-segments intersect.

For each vertical line L, the line segments intersected by L are ordered in y-coord. by their intersections.

When two line segment cross each other, they must be adjacent in y-coord. for some vertical line L.

Page 21: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

10

Line-segment Intersection problem can be solved by plane-sweep technique.

plane-sweep technique makes use of two basic data structures: the sweep-line status and the event-point schedule.

Page 22: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

9

sweep-line status: a data structure maintaining the ordering of line segments intersecting with a give sweep line L and must support the following operations: (a height-balanced tree will do) INSERT(s, L). Insert segment s into the total

order maintained by L. O(log n) DELETE(s, L). Delete segment s from L. O(log

n) ABOVE(s, L). Return the name of the segment

immediately above s in the ordering. O(1) BELOW(s, L). Return the name of the segment

immediately below s in the ordering. O(1)

Page 23: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

8

event-point schedule: a data structure recording the ordering of events at which the sweep-line status changes and it must support the following operation: (A min-priority queue will do) MIN(E). Determine the smallest element in E

and delete it O(log n) INSERT(x, E). Insert abscissa x into the total

order maintained by E. O(log n) MEMBER(x, E). Determine if abscissa x is a

member of E. O(log n)

Page 24: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

7

The ordering of line segments can change in only three ways for each sweep-line:

1. At the left endpoint of segment s. In this case s must be added to the ordering.

2. At the right endpoint of segment s. In this case s must be removed from the ordering.

3. At an intersection point of two segments s1 and s2. Here s1 and s2 exchange places in the ordering.

Page 25: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

6

We now outline the algorithm: as the vertical line sweeps the plane, at each event point sweep-line status L is updated and all pairs of segments that become adjacent in this update are checked for intersection. s1

s2

s3

S1 = ABOVE(s2, L)S3 = BELOW(s2, L)

Page 26: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

5

procedure LINE SEGMENT INTERSECTION sort the 2n endpoints lexicographically by x and y and place

them into priority queue E; A := while (E ) do p := MIN(E); if (p is left endpoint) then HANDLE LEFT EVENT(p); else if (p is a right endpoint) then HANDLE RIGHT EVENT(p); else HANDLE INTERSECTION EVENT(p); /*P is an intersection*/ while (A ) do (s, s') A; x := common abscissa of s and s'; if (MEMBER(x, E) = FALSE) then output (s, s'); INSERT(x, E);

Page 27: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

4

HANDLE LEFT EVENT(p) s:= segment of which p is an endpoint; INSERT(s, L); s1 := ABOVE(s, L); s2 := BELOW(s, L); if (s1 intersects s) then A (s1, s); if (s2 intersects s) then A (s2, s);

Page 28: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

3

HANDLE RIGHT EVENT(p) s:= segment of which p is an endpoint; s1 := ABOVE(s, L); s2 := BELOW(s, L); if (s1 intersects s2 to the right of p) then A (s1, s2); DELETE(s, L);

Page 29: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

2

HANDLE INTERSECTION EVENT(p) (s1, s2) := segment of which p is

intersection; /* with s1 = ABOVE(s2) to the left of p */ s3 := ABOVE(s1, L); s4 := BELOW(s2, L); if (s3 intersects s2) then A (s3, s2); if (s1 intersects s4) then A (s1, s4);

Page 30: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Line-segment Intersection Algorithm

1

That no intersection is missed by this algorithm follows from the observation that only adjacent segments may intersect and that all adjacencies are correctly examined at least once.

Page 31: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Example

Page 32: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Problem (Line Segment Intersection) Given n line segments in the plane, find all int

ersecting pairs. Theorem[Bentley-Ottmann(1979)]: The I inte

rsecting pairs of a set of n line segments can be reported in time O((n+I) log n).

Theorem[Chazelle-Edelsbrunner(1988)]: The I intersecting pairs of a set of n line segments can be reported in time O(n log n+I).

Page 33: Intersections. Intersection Problem 3 Intersection Detection: Given two geometric objects, do they intersect? Intersection detection (test) is frequently.

Resume

The intersection of two convex polygons: (n) Pairwise Line Segment Intersection: O(n log n+I) The intersection of two star-shaped polygons: (n

2) The intersection of two general polygons: (n2) Line Segment Intersection Test: (n log n) Polygon Intersection Test: (n log n) Polygon Simplicity Test: (n log n)