Computational Geometry Convex Hull Line Segment...
Transcript of Computational Geometry Convex Hull Line Segment...
![Page 1: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/1.jpg)
Autumn 2001
Computational Geometry
Convex HullLine Segment Intersection
Voronoi Diagram
![Page 2: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/2.jpg)
CSE 589 - Lecture 10 - Autumn 2001
2
• Algorithms about points, lines, planes, polygons, triangles, rectangles and other geometric objects.
• Applications in many fields– robotics, graphics, CAD/CAM, geographic
systems,
• We have done some already– Euclidian traveling salesman– Nearest neighbors
![Page 3: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/3.jpg)
CSE 589 - Lecture 10 - Autumn 2001
3
• Given n points on the plane find the smallest enclosing curve.
![Page 4: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/4.jpg)
CSE 589 - Lecture 10 - Autumn 2001
4
• The convex hull is a polygon whose vertices are some of the points.
![Page 5: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/5.jpg)
CSE 589 - Lecture 10 - Autumn 2001
5
• Input: Set of points p1, p2, ... , pn in 2 space. (Each point is an ordered pair p = (x,y) of reals.)
• Output: A sequence of points pi1, pi2, ... , pik such that traversing these points in order gives the convex hull.
![Page 6: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/6.jpg)
CSE 589 - Lecture 10 - Autumn 2001
6
p1
p5p6
p3p8
p12
p11
p2
p7
p4
p10
p9
Input: p1, p2, p3, p4, p5, p6, p7, p8, p8, p9, p10, p11, p12
Output: p6, p1, p2, p11, p12, p10
![Page 7: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/7.jpg)
CSE 589 - Lecture 10 - Autumn 2001
7
• For each pair of points p, q determine if the line from p to q is on the convex hull.
No Yes
![Page 8: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/8.jpg)
CSE 589 - Lecture 10 - Autumn 2001
8
• For each pair of points p, q, form the line that passes through p and q and determine if all the other points are on one side of the line.– If so the line from p to q is on the convex hull– Otherwise not
• Time Complexity is O(n3)– Constant time to test if point is on one side of the
line
21121122 qpqp)yq(p)xp(q0 −+−+−=
![Page 9: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/9.jpg)
CSE 589 - Lecture 10 - Autumn 2001
9
• Sort the points from left to right (sort on the first coordinate in increasing order)
![Page 10: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/10.jpg)
CSE 589 - Lecture 10 - Autumn 2001
10
• Process the points in left to right order
![Page 11: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/11.jpg)
CSE 589 - Lecture 10 - Autumn 2001
11
• Right Turn
![Page 12: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/12.jpg)
CSE 589 - Lecture 10 - Autumn 2001
12
• Right Turn
![Page 13: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/13.jpg)
CSE 589 - Lecture 10 - Autumn 2001
13
• Left Turn – back up
![Page 14: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/14.jpg)
CSE 589 - Lecture 10 - Autumn 2001
14
• Left Turn – back up
![Page 15: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/15.jpg)
CSE 589 - Lecture 10 - Autumn 2001
15
![Page 16: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/16.jpg)
CSE 589 - Lecture 10 - Autumn 2001
16
• Left Turn – back up
![Page 17: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/17.jpg)
CSE 589 - Lecture 10 - Autumn 2001
17
![Page 18: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/18.jpg)
CSE 589 - Lecture 10 - Autumn 2001
18
• Right Turn
![Page 19: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/19.jpg)
CSE 589 - Lecture 10 - Autumn 2001
19
• Left Turn – back up
![Page 20: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/20.jpg)
CSE 589 - Lecture 10 - Autumn 2001
20
![Page 21: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/21.jpg)
CSE 589 - Lecture 10 - Autumn 2001
21
• Left Turn – back up
![Page 22: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/22.jpg)
CSE 589 - Lecture 10 - Autumn 2001
22
![Page 23: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/23.jpg)
CSE 589 - Lecture 10 - Autumn 2001
23
• Left Turn – back up
![Page 24: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/24.jpg)
CSE 589 - Lecture 10 - Autumn 2001
24
![Page 25: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/25.jpg)
CSE 589 - Lecture 10 - Autumn 2001
25
• Left Turn – back up
![Page 26: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/26.jpg)
CSE 589 - Lecture 10 - Autumn 2001
26
![Page 27: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/27.jpg)
CSE 589 - Lecture 10 - Autumn 2001
27
• Upper convex hull is complete
Continue the process in reverse order to get the lower convex hull
![Page 28: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/28.jpg)
CSE 589 - Lecture 10 - Autumn 2001
28
• Right Turn
![Page 29: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/29.jpg)
CSE 589 - Lecture 10 - Autumn 2001
29
• Left Turn – back up
![Page 30: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/30.jpg)
CSE 589 - Lecture 10 - Autumn 2001
30
![Page 31: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/31.jpg)
CSE 589 - Lecture 10 - Autumn 2001
31
• Right Turn
![Page 32: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/32.jpg)
CSE 589 - Lecture 10 - Autumn 2001
32
• Left Turn – back up
![Page 33: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/33.jpg)
CSE 589 - Lecture 10 - Autumn 2001
33
• Left Turn – back up
![Page 34: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/34.jpg)
CSE 589 - Lecture 10 - Autumn 2001
34
![Page 35: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/35.jpg)
CSE 589 - Lecture 10 - Autumn 2001
35
• Right Turn
![Page 36: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/36.jpg)
CSE 589 - Lecture 10 - Autumn 2001
36
• Left Turn – back up
![Page 37: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/37.jpg)
CSE 589 - Lecture 10 - Autumn 2001
37
![Page 38: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/38.jpg)
CSE 589 - Lecture 10 - Autumn 2001
38
• Right Turn
![Page 39: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/39.jpg)
CSE 589 - Lecture 10 - Autumn 2001
39
• Left Turn – back up
![Page 40: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/40.jpg)
CSE 589 - Lecture 10 - Autumn 2001
40
• Left Turn – back up
![Page 41: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/41.jpg)
CSE 589 - Lecture 10 - Autumn 2001
41
• Done!
![Page 42: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/42.jpg)
CSE 589 - Lecture 10 - Autumn 2001
42
• Not a left turn– Middle point is included in the convex hull
![Page 43: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/43.jpg)
CSE 589 - Lecture 10 - Autumn 2001
43
• Sort– First increasing in x– Second decreasing in y
![Page 44: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/44.jpg)
CSE 589 - Lecture 10 - Autumn 2001
44
• Slope increases from one segment to next
(p1,p2)
(q1,q2)
(r1,r2)
11
22
11
22
qrqr
pqpq
−−<
−−
left turn
))(())( 11221122 pqqrqrp(q −−<−− to avoid dividing by zero
![Page 45: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/45.jpg)
CSE 589 - Lecture 10 - Autumn 2001
45
• Sorting – O(n log n)
• During the scan each point is “visited” at most twice– Initial visit– back up visit (happens at most once)
• Scan - O(n)• Total time O(n log n)• This is best possible because sorting is
reducible to finding convex hull.
![Page 46: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/46.jpg)
CSE 589 - Lecture 10 - Autumn 2001
46
• O(n log n) – Graham (1972)
• O(n log h) algorithm where h is size of hull– Kirkpatrick and Seidel (1986)– Output sensitive algorithm
• d-dimensional Convex Hull– Ω(nd/2) in the worst case because the output can
be this large.
![Page 47: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/47.jpg)
CSE 589 - Lecture 10 - Autumn 2001
47
• Given two convex hulls compute the combined convex hull in linear time.
![Page 48: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/48.jpg)
CSE 589 - Lecture 10 - Autumn 2001
48
Input output
![Page 49: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/49.jpg)
CSE 589 - Lecture 10 - Autumn 2001
49
Report the segment and all thelines that meet on it.
report the point and all the linesthat meet there.
![Page 50: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/50.jpg)
CSE 589 - Lecture 10 - Autumn 2001
50
• Polygons have no self intersections
Use line segment intersection to solve polygon intersection
![Page 51: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/51.jpg)
CSE 589 - Lecture 10 - Autumn 2001
51
• What if no line segment intersections?
![Page 52: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/52.jpg)
CSE 589 - Lecture 10 - Autumn 2001
52
• Intersect a ray from each polygon with the other– Inside, if ray has an odd number of intersections, otherwise
outside. Jordan curve theorem (1887).
![Page 53: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/53.jpg)
CSE 589 - Lecture 10 - Autumn 2001
53
• With n line segments there may be O(n2) intersections.
• Goal: Good output sensitive algorithm– O(n log n + s) would be ideal where s is the
number of intersections.
![Page 54: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/54.jpg)
CSE 589 - Lecture 10 - Autumn 2001
54
• Sweep a plane vertically from top to bottom maintaining the set of known future events.
• Events– Beginning of a segment– End of a segment– Intersection to two “adjacent” segments
sweepdirection
![Page 55: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/55.jpg)
CSE 589 - Lecture 10 - Autumn 2001
55
• We maintain ordered list of segments
af
dc b
y
segment ordering at y = c, d, f, b, e, a
e
![Page 56: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/56.jpg)
CSE 589 - Lecture 10 - Autumn 2001
56
• Just before an intersection event the two line segments must be adjacent in the segment order.
• When a new adjacency occurs between two lines we must check for a possible new intersection event.
![Page 57: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/57.jpg)
CSE 589 - Lecture 10 - Autumn 2001
57
• Event Queue – contains all the beginning points and all the end
points of segments ordered by decreasing y value.
• Segment List– Empty
Event Queueba,bb,bc,bd,ed,be,eb,ee,ea,ec
ab
cd
e
![Page 58: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/58.jpg)
CSE 589 - Lecture 10 - Autumn 2001
58
• Remove the next event from the event queue
a b
c
begin segment event
1. Insert b into the segment listbetween a and c
2. Check for intersections withadjacent segments (a,b) and(b,c), and add any to event queue
a bc 1. Delete b from the segment list
2. Check for intersections withadjacent segments (a,c), and add any to event queue
end segment event
![Page 59: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/59.jpg)
CSE 589 - Lecture 10 - Autumn 2001
59
intersection event event
a
b
c 1. Reverse the order of b and con the segment list
2. Check for intersections withadjacent segments (a,c) and (b,d)and add any to event queue
d
![Page 60: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/60.jpg)
CSE 589 - Lecture 10 - Autumn 2001
60
• Several events can coincide.
• Horizontal lines
begin segment eventend segment eventintersection event
begin end
do in left to right order
![Page 61: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/61.jpg)
CSE 589 - Lecture 10 - Autumn 2001
61
ab
cd
e
Segment List
Event Queueba, bb, bc, bd, ed, be, eb, ee, ea, ec
![Page 62: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/62.jpg)
CSE 589 - Lecture 10 - Autumn 2001
62
ab
cd
e
Segment Lista
Event Queuebb, bc, bd, ed, be, eb, ee, ea, ec
![Page 63: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/63.jpg)
CSE 589 - Lecture 10 - Autumn 2001
63
ab
cd
e
Segment Listb, a
Event Queuebc, bd, ed, be, eb, ee, ea, ec
![Page 64: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/64.jpg)
CSE 589 - Lecture 10 - Autumn 2001
64
ab
cd
e
Segment Listc, b, a
Event Queuebd, i(c,b), ed, be, eb, ee, ea, ec
![Page 65: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/65.jpg)
CSE 589 - Lecture 10 - Autumn 2001
65
ab
cd
e
Segment Listc, d, b, a
Event Queuei(d,b), i(c,b), ed, be, eb, ee, ea, ec
![Page 66: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/66.jpg)
CSE 589 - Lecture 10 - Autumn 2001
66
ab
cd
e
Segment Listc, b, d, a
Event Queuei(c,b), ed, be, eb, ee, ea, ec
![Page 67: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/67.jpg)
CSE 589 - Lecture 10 - Autumn 2001
67
ab
cd
e
Segment Listb, c, d, a
Event Queueed, be, eb, ee, ea, ec
![Page 68: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/68.jpg)
CSE 589 - Lecture 10 - Autumn 2001
68
ab
cd
e
Segment Listb, c, a
Event Queuebe, eb, ee, ea, ec
![Page 69: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/69.jpg)
CSE 589 - Lecture 10 - Autumn 2001
69
ab
cd
e
Segment Listb, e, c, a
Event Queuei(e,c), eb, ee, ea, ec
![Page 70: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/70.jpg)
CSE 589 - Lecture 10 - Autumn 2001
70
ab
cd
e
Segment Listb, c, e, a
Event Queueeb, i(e,a) ee, ea, ec
![Page 71: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/71.jpg)
CSE 589 - Lecture 10 - Autumn 2001
71
ab
cd
e
Segment Listc, e, a
Event Queuei(e,a), ee, ea, ec
![Page 72: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/72.jpg)
CSE 589 - Lecture 10 - Autumn 2001
72
ab
cd
e
Segment Listc, a, e
Event Queueee, ea, ec
![Page 73: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/73.jpg)
CSE 589 - Lecture 10 - Autumn 2001
73
ab
cd
e
Segment Listc, a
Event Queueea, ec
![Page 74: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/74.jpg)
CSE 589 - Lecture 10 - Autumn 2001
74
ab
cd
e
Segment Listc
Event Queueec
![Page 75: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/75.jpg)
CSE 589 - Lecture 10 - Autumn 2001
75
ab
cd
e
Segment List
Event Queue
![Page 76: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/76.jpg)
CSE 589 - Lecture 10 - Autumn 2001
76
• Event List – Priority queue ordered by decreasing y, then by
increasing x– Delete minimum, Insertion
• Segment List– Balanced binary tree search tree– Insertion, Deletion– Reversal can be done by deletions and insertions
• Time per event is O(log n)
![Page 77: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/77.jpg)
CSE 589 - Lecture 10 - Autumn 2001
77
• Total time for plane sweep algorithm is O(n log n + s log n) where s is the number of intersections.– n log n for the initial sorting– log n per event
• Plane sweep algorithms were pioneered by Shamos and Hoey (1975).
• Intersection Reporting - Bentley and Ottmann (1979)
![Page 78: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/78.jpg)
CSE 589 - Lecture 10 - Autumn 2001
78
Each site defines an area of points nearest to it.Boundaries are perpendicular bisectors.http://www.cs.cornell.edu/Info/People/chew/Delaunay.
Vertex
Edge
Site
![Page 79: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/79.jpg)
CSE 589 - Lecture 10 - Autumn 2001
79
• Each Voronoi area is the intersection of half spaces defined by perpendicular bisectors.
O(n2 log n) time
![Page 80: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/80.jpg)
CSE 589 - Lecture 10 - Autumn 2001
80
• The Voronoi Diagram is a planar embedding so it obeys Euler’s equation 2FEV =+−
Vertices = 7 (single vertex at infinity)Edges = 11Faces = 6
![Page 81: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/81.jpg)
CSE 589 - Lecture 10 - Autumn 2001
81
• F = E - V + 2 (Euler’s equation)
• n = F (one site per face)• 2E > 3V because each vertex is of degree at
least 3 and each edge has 2 vertices.• n > 3V/2 – V + 2 = V/2 + 2• 2n – 2 > V
• n > E – (2n – 2) + 2• 3n – 4 > E
![Page 82: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/82.jpg)
CSE 589 - Lecture 10 - Autumn 2001
82
1. A vertex is the center of a circle through at least three sites
![Page 83: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/83.jpg)
CSE 589 - Lecture 10 - Autumn 2001
83
2. A point on a perpendicular bisector of sites p and q is on an edge if the circle centered at the point through p and q contains no other sites.
![Page 84: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/84.jpg)
CSE 589 - Lecture 10 - Autumn 2001
84
• We maintain a “beach line,” a sequence of parabolic segments that is the set of point equidistant from a site and the sweep line.
• Events– Site event – new site is encountered by the sweep
line– Circle event – new vertex is inserted into the
Voronoi diagram
![Page 85: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/85.jpg)
CSE 589 - Lecture 10 - Autumn 2001
85
a
b
c
beach line
event queuea, b, c
![Page 86: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/86.jpg)
CSE 589 - Lecture 10 - Autumn 2001
86
site point eventa
b
c
beach linea
event queueb, c
![Page 87: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/87.jpg)
CSE 589 - Lecture 10 - Autumn 2001
87
points equidistant from point and line
b
c
a
beach linea
event queueb, c
![Page 88: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/88.jpg)
CSE 589 - Lecture 10 - Autumn 2001
88
site event
b
c
a
beach linea, b, a
event queuec
![Page 89: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/89.jpg)
CSE 589 - Lecture 10 - Autumn 2001
89
b
c
a
beach linea, b, a
event queuec
breakpoint
segment
![Page 90: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/90.jpg)
CSE 589 - Lecture 10 - Autumn 2001
90
b
c
a
site event
beach linea, b, a, c, a
event queue?
![Page 91: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/91.jpg)
CSE 589 - Lecture 10 - Autumn 2001
91
b
c
a
circle event must be added to the event queue
beach linea, b, a, c, a
event queuec(b,a,c)
![Page 92: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/92.jpg)
CSE 589 - Lecture 10 - Autumn 2001
92
b
c
beach linea, b, a, c, a
event queuec(b,a,c)
a
![Page 93: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/93.jpg)
CSE 589 - Lecture 10 - Autumn 2001
93
b
c
beach linea, b, c, a
event queue
a
circle event
![Page 94: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/94.jpg)
CSE 589 - Lecture 10 - Autumn 2001
94
b
c
beach linea, b, c, a
event queue
a
![Page 95: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/95.jpg)
CSE 589 - Lecture 10 - Autumn 2001
95
b
c
a
• Contains site events and circle events sorted by y in decreasing order, then by x in increasing order
• Circle events can be both inserted and deleted.
![Page 96: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/96.jpg)
CSE 589 - Lecture 10 - Autumn 2001
96
b
c
a
• Implemented as a balanced binary search tree.– sites at leaves– breakpoints at internal nodes
a b a c
a:b
a
a:c
b:a
c:a
![Page 97: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/97.jpg)
CSE 589 - Lecture 10 - Autumn 2001
97
• For each site output the vertices in clockwise order. When a circle event occurs add to the vertex list of the three (or more) sites.
1
f a
e d
c
b
infinf
inf
inf
1. f, a, d, c, e2. f, a, b, inf
2
![Page 98: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/98.jpg)
CSE 589 - Lecture 10 - Autumn 2001
98
• Number of segments in the beach line < 2n– Each site event adds at most 2 segments.
• Number of circle event insertions < 2n– Each site event creates at most 2 circle events.
• Time per event is O(log n)– Insert new segments into the segment tree.– Insert new circle events into the event queue– Delete circle events from the event queue
• Total time is O(n log n)
![Page 99: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/99.jpg)
CSE 589 - Lecture 10 - Autumn 2001
99
• Voronoi diagram– Dirichlet (1850), Voronoi (1907)
• O(n log n) algorithm– Divide and conquer - Shamos and Hoey (1975)– Plane sweep – Fortune (1987)
![Page 100: Computational Geometry Convex Hull Line Segment ...courses.cs.washington.edu/courses/csep521/01au/lectures/...begin segment event 1. Insert b into the segment list between a and c](https://reader034.fdocuments.net/reader034/viewer/2022042708/5f3b8f85b7cf9b02bb052c94/html5/thumbnails/100.jpg)
CSE 589 - Lecture 10 - Autumn 2001
100
• Give an O(n log n) algorithms which given a set of n points on the plane, for each point finds its nearest neighbor.