Geometry
Geometry
• segment intersection
• orientation
• point inclusion
• simple closed path
Geometric Algorithms 1
Basic Geometric Objects in the Plane
point : denoted by a pair of coordinates (x,y)
Geometric Algorithms 2
Some Geometric Problems
Segment intersection Given two segments, do they intersect
Geometric Algorithms 3
An Apparently Simple Problem:
Segment Intersection
• Test whether segments (a,b) and (c,d) intersect. How do we do it?
a d
c b
• We could start by writing down the equations of the lines through
the segments, then test whether the lines intersect, then ...
• An alternative (and simpler) approach is based in the notion of
orientation of an ordered triplet of points in the plane
Geometric Algorithms 4
Orientation in the Plane
• The orientation of an ordered triplet of points in the plane can
be
-counterclockwise (left turn)
-clockwise (right turn) c b
-collinear (no turn) a a
• Examples:
b c
counter clockwise (left turn ) clockwise (right turn )
a b c
Geometric Algorithms 5
collinear ( no turn )
Intersection and Orientation
• Two segments (p1,q1) and (p2,q2) intersect if and only if one of the
following two conditions is verified
• general case: (p1,q1,p2) and (p1,q1,q2) have different orientations and
(p2,q2,p1) and (p2,q2,q1) have different orientations
• special case: (p1,q1,p2), (p1,,q1,q2), (p2,q2,p1), and (p2,q2,q1) are all
collinear and the x-projections of (p1,q1) and (p2,q2) intersect the y-
projections of (p1,q1) and (p2,q2) intersect
p1
q2
Geometric Algorithms 6
p2 q1
Examples (General Case)
• general case: (p1,q1,p2), and (p1,q1,q2) have different orientations
and (p2,q2,p1) and (p2,q2,q1) have different orientations
q1
q2
p2
(p1,q1,p2), q2
p2
(p1,q1,q2),
p1
(p1,q1,p2), q1
(p2,q2,p1),
(p1,q1,q2),
(p2,q2,q1)
(p2,q2,p1),
Geometric Algorithms 7
(p2,q2,q1) p1
Examples (General Case)
• general case: (p1,q1,p2), and (p1,q1,q2) have different orientations
and (p2,q2,p1) and (p2,q2,q1) have different orientations
q1
q2
p2 q2
p2
(p1,q1,p2),
(p1,q1,q2), (p1,q1,p2),
p1 q1
(p2,q2,p1), (p1,q1,q2),
(p2,q2,q1) (p2,q2,p1),
Geometric Algorithms
(p2,q2,q1) 8
Examples (Special Case)
• general case: (p1,q1,p2), and (p1,q1,q2) have different orientations
and (p2,q2,p1) and (p2,q2,q1) have different orientations
q2 (p1,q1,p2),
q1
p2 (p1,q1,q2),
p1 (p2,q2,p1),
(p2,q2,q1)
p2 q2 (p1,q1,p2),
q1
(p1,q1,q2),
p1 (p2,q2,p1),
Geometric Algorithms 9
(p2,q2,q1)
How to Compute the Orientation
• slope of segment (p1,p2): = (y2-y1) / (x2-x1)
• slope of segment (p2,p3): = (y3-y2) / (x3-x2)
• Orientation test
p3
counterclockwise (left turn): <
clockwise (right turn): >
collinear (left turn): =
• The orientation depends on whether the expression
(y2-y1) (x3-x2)- (y3-y2) (x2-x1) p2
x3 x2
is positive, negative, or zero.
Geometric Algorithms 10
p1 x2 x1
Point Inclusion
• given a polygon and a point, is the point inside or outside the polygon?
• orientation helps solving this problem in linear time
Geometric Algorithms 11
Point Inclusion — Part II
• Draw a horizontal line to the right of each point and extend it to
infinity
• Count the number of times a line intersects the polygon. We have:
-even number point is outside a
-odd number point is inside
• Why? b
c
d
e
f
What Geometric
about Algorithms
points d and g ?? Degeneracy! 12
Degeneracy
• Degeneracies are input configurations that involve tricky special
cases.
• When implementing an algorithm, degeneracies should be taken care
of separately -- the general algorithm might fail to work.
• For example, in the previous example where we had to determine
whether two segments intersect, we have degeneracy if two segments
are collinear. q2
q1
p2
p1
The general algorithm of checking for orientation would fail to
distinguish whether the two segments intersect. Hence, this case
should be dealt with separately.
Geometric Algorithms 13
Simple Closed Path — Part I
Problem:Given a set of points ...
Geometric Algorithms 14
Simple Closed Path — Part II
Pick the bottommost point a as the anchor point
a
For each point p, compute the angle q(p) of the segment (a,p)
with respect to the x-axis:
p
(p)
Geometric Algorithms a 15
Simple Closed Path — Part III
• Traversing the points by increasing angle yields a simple closed path:
a
-The question is: how do we compute angles?
-We could use trigonometry (e.g., arctan).
-However, the computation would be inefficient since trigonometric
functions are not in the normal instruction set of a computer and need
a call to a math-library routine.
-Observation:, we don’t care about the actual values of the angles. We
just want to sort by angle.
• Idea: use orientation to compare angles without actually computing
16
Simple Closed Path — Part IV
• Orientation can be used to compare angles without actually
computing them ... Cool!
p
q
a
• q(p) < q(q) orientation of (a,p,q) is counterclockwise
• We can sort the points by angle by using any “sorting-by-comparison”
algorithm (e.g., heapsort or merge-sort) and replacing angle
comparisons with orientation tests
• We obtain an O(N log N)-time algorithm for the simple closed path
problem on N points
Geometric Algorithms 17