GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines...
Transcript of GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines...
![Page 1: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/1.jpg)
GEOMETRY COMP 321 – McGill University These slides are mainly compiled from the following resources.
- Professor Jaehyun Park’ slides CS 97SI - Top-coder tutorials. - Programming Challenges books.
![Page 2: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/2.jpg)
Computational Geometry • Geometry • Cross Product • Convex Hull Problem • Sweep Line Algorithm
![Page 3: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/3.jpg)
Geometry Basics - Line • A Line can be described with mathematical equation: y = mx + c or ax + bx + c = 0. • The y = mx + c equation involves ‘gradient’ / ‘slope’ m.
• Note: Be careful with vertical lines with ‘infinite’ slope. Usually, we treat the vertical lines separately in the solution code (example of the special cases in geometry problems).
• A Line Segment is a line with two end points with finite length.
![Page 4: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/4.jpg)
Geometry Basics - Circles
![Page 5: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/5.jpg)
Geometry Basics - Circles • In a 2-D Cartesian coordinate system, the Circle centered
at (a, b) with radius r is the set of all points (x, y) such that (x − a)2 + (y − b)2 = r2.
• The constant π is the Ratio of any circle’s circumference to its diameter in the Euclidean space. To avoid precision error, the safest value for programming contest is pi = 2 X acos(0.0), unless if this constant is defined in the problem description!
• The Circumference c of a circle with a Diameter d is c = π X d where d = 2 X r.
• The length of an Arc of a circle with a circumference c and an angle α (in degrees) is (α/360.0) x c
![Page 6: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/6.jpg)
Geometry Basics - Circles • The length of a Chord of a circle with a radius r and an
angle α (in degrees) can be obtained with the Law of Cosines: 2r2X(1−cos(α))
• The Area A of a circle with a radius r is A = π X r2
• The area of a Sector of a circle with an area A and an angle α (in degrees) is (α /360.0) X A
• The area of a Segment of a circle can be found by subtracting the area of the corresponding Sector with the area of an Isosceles Triangle with sides: r, r, and Chord-length.
![Page 7: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/7.jpg)
Geometry Basics - Triangles
![Page 8: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/8.jpg)
Geometry Basics - Triangles • A Triangle is a polygon with three vertices and three edges.
• Equilateral Triangle, all three edges have the same length and all inside/interior angles are 60 degrees;
• Isosceles Triangle, two edges have the same length; • Scalene Triangle, no edges have the same length; • Right Triangle, one of its interior angle is 90 degrees (or a right angle).
• The Area A of triangle with base b and height h is A = 0.5 X b X h
• The Perimeter p of a triangle with 3 sides: a, b, and c is p = a + b + c.
• The Heron’s Formula: The area A of a triangle with 3 sides: a, b, c, is A = sqrt(s X (s − a) X (s − b) X (s − c)), where s = 0.5 X p (the Semi-Perimeter of the triangle).
![Page 9: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/9.jpg)
Geometry Basics - Triangles • The radius r of the Triangle’s Inner Circle with area A and
the semi-perimeter s is r = A/s. • The radius R of the Triangle’s Outer Circle with 3 sides: a,
b, c and area A is R =a X b X c/(4 X A). • Also please check
• Law of Cosines. • Law of Sines • Pythagorean Theorem. • Pythagorean Triple.
![Page 10: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/10.jpg)
Geometry Basics - Quadrilateral • It is a polygon with four edges (and four vertices).
![Page 11: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/11.jpg)
Geometry Basics - Rectangles • A Rectangle is a polygon with four edges, four vertices,
and four right angles. • The Area A of a rectangle with width w and height h is A =
w X h. • The Perimeter p of a rectangle with width w and height h
is p = 2 X (w + h). • A Square is a special case of rectangle where w = h.
![Page 12: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/12.jpg)
Geometry Basics - Polygons • A Polygon is a plane figure that is bounded by a closed
path or circuit composed of a finite sequence of straight line segments.
• A polygon is said to be Convex if any line segment drawn inside the polygon does not intersect any edge of the polygon. Otherwise, the polygon is called Concave.
• The area A of an n-sided polygon (either convex or concave) with n pairs of vertex coordinates given in some order (clockwise or counter-clockwise) is:
![Page 13: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/13.jpg)
Geometry Basics - Polygons • Testing if a polygon is convex (or concave) is easy with a
quite robust geometric predicate test called CCW (Counter Clockwise).
• This test takes in 3 points p, q, r in a plane and determine if the sequence p → q → r is a left turn. • Or in other words: p → q → r is counter-clockwise
![Page 14: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/14.jpg)
CCW • We’ll use it all the time
• Applications: • Determining the (signed) area of a triangle • Testing if three points are collinear • Determining the orientation of three points • Testing if two line segments intersect
![Page 15: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/15.jpg)
Counterclockwise Predicate • Define ccw(A,B,C) = (B − A) x (C − A) = (bx − ax)(cy − ay) − (by − ay)(cx − ax).
![Page 16: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/16.jpg)
Segment-Segment Intersection Test • Given two segments AB and CD • Want to determine if they intersect properly: two segments
meet at a single point that are strictly inside both segments
![Page 17: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/17.jpg)
Segment-Segment Intersection Test • Assume that the segments intersect
• From A ’s point of view, looking straight to B , C and D must lie on different sides.
• Holds true for the other segment as well
• The intersection exists and is proper if: • ccw(A,B,C) X ccw(A,B,D) < 0 • and ccw(C,D,A) X ccw(C,D,B) < 0
![Page 18: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/18.jpg)
Non-proper Intersections • We need more special cases to consider!
• e.g., If ccw(A,B,C), ccw(A,B,D), ccw(C,D,A), ccw(C,D,B) are all zeros, then two segments are collinear
• Very careful implementation is required
![Page 19: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/19.jpg)
Convex Hull Problem • Given n points on the plane, find the smallest convex
polygon that contains all the given points • For simplicity, assume that no three points are collinear
![Page 20: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/20.jpg)
Convex Hull Problem: Simple Algorithm • AB is an edge of the convex hull iff ccw(A,B,C) have the
same sign for all other points C • This gives us a simple algorithm
• For each A and B: • If ccw(A,B,C) > 0 for all C ≠ A,B:
• Record the edge A -> B
• Walk along the recorded edges to recover the convex hull
![Page 21: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/21.jpg)
Convex Hull Problem: Graham Scan • We know that the leftmost given point has to be in the
convex hull. • We assume that there is a unique leftmost point
• Make the leftmost point the origin • So that all other points have positive x coordinates
• Sort the points in increasing order of y/x • Increasing order of angle, whatever you like to call it
• Incrementally construct the convex hull using a stack
![Page 22: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/22.jpg)
Convex Hull Problem: Graham Scan • Points are numbered in increasing order of y/x
![Page 23: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/23.jpg)
Convex Hull Problem: Graham Scan • Add the first two points in the chain
![Page 24: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/24.jpg)
Convex Hull Problem: Graham Scan • Adding point 3 causes a concave corner 1-2-3: remove 2
![Page 25: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/25.jpg)
Convex Hull Problem: Graham Scan • That’s better...
![Page 26: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/26.jpg)
Convex Hull Problem: Graham Scan • Adding point 4 to the chain causes a problem: remove 3
![Page 27: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/27.jpg)
Convex Hull Problem: Graham Scan • Continue adding points...
![Page 28: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/28.jpg)
Convex Hull Problem: Graham Scan • Continue adding points...
![Page 29: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/29.jpg)
Convex Hull Problem: Graham Scan • Continue adding points...
![Page 30: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/30.jpg)
Convex Hull Problem: Graham Scan • Bad corner!
![Page 31: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/31.jpg)
Convex Hull Problem: Graham Scan • Bad corner again!
![Page 32: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/32.jpg)
Convex Hull Problem: Graham Scan • Continue adding points...
![Page 33: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/33.jpg)
Convex Hull Problem: Graham Scan • Continue adding points...
![Page 34: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/34.jpg)
Convex Hull Problem: Graham Scan • Continue adding points...
![Page 35: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/35.jpg)
Convex Hull Problem: Graham Scan • Done!
![Page 36: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/36.jpg)
Convex Hull Problem: Graham Scan • Set the leftmost point as (0, 0), and sort the rest of the
points in increasing order of y/x • Initialize stack S • For i = 1, . . . , n:
• Let A be the second topmost element of S, B be the topmost element of S , and C be the i-th point
• If ccw(A,B,C) < 0 , pop S and go back • Push C to S
• Points in S form the convex hull
![Page 37: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/37.jpg)
Sweep Line Algorithm • A problem solving strategy for geometry problems • The main idea is to maintain a line (with some auxiliary
data structure) that sweeps through the entire plane and solve the problem locally
• We can’t simulate a continuous process, (e.g. sweeping a line) so we define events that causes certain changes in our data structure • And process the events in the order of occurrence
• We’ll cover one sweep line algorithm
![Page 38: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/38.jpg)
Sweep Line Algorithm
![Page 39: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/39.jpg)
Sweep Line Algorithm
![Page 40: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/40.jpg)
Sweep Line Algorithm
![Page 41: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/41.jpg)
Sweep Line Algorithm
![Page 42: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/42.jpg)
Sweep Line Algorithm
![Page 43: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/43.jpg)
Sweep Line Algorithm
![Page 44: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/44.jpg)
Sweep Line Algorithm
![Page 45: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/45.jpg)
Sweep Line Algorithm
![Page 46: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/46.jpg)
Sweep Line Algorithm
![Page 47: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/47.jpg)
Sweep Line Algorithm
![Page 48: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/48.jpg)
Sweep Line Algorithm
![Page 49: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/49.jpg)
Sweep Line Algorithm • If the sweep line hits the left edge of a rectangle
• Insert it to the data structure
• Right edge? • Remove it
• Move to the next event, and add the area(s) of the green rectangle(s) • Finding the length of the union of the blue segments is the hardest
step • There is an easy O(n) method for this step
![Page 50: GEOMETRY - cs.mcgill.cadbecer/courses/Winter2017/321/Lecture7… · treat the vertical lines separately in the solution code (example of the special cases in geometry problems). •](https://reader031.fdocuments.in/reader031/viewer/2022030914/5b5ee0f77f8b9a310a8d61e6/html5/thumbnails/50.jpg)
Sweep Line Algorithm • Sweep line algorithm is a generic concept
• Come up with the right set of events and data structures for each problem