1 / 35

Lecture 14: COMPUTATIONAL GEOEMTRY: Part 1 Convex Hulls

Lecture 14: COMPUTATIONAL GEOEMTRY: Part 1 Convex Hulls. CS1050: Understanding and Constructing Proofs. Spring 2006. Jarek Rossignac. Lecture Objectives. Understand the notions of convexity and convex hulls Learn some algorithms and some proofs. Not a polygon.

Download Presentation

Lecture 14: COMPUTATIONAL GEOEMTRY: Part 1 Convex Hulls

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture 14: COMPUTATIONAL GEOEMTRY: Part 1Convex Hulls CS1050: Understanding and Constructing Proofs Spring 2006 Jarek Rossignac

  2. Lecture Objectives • Understand the notions of convexity and convex hulls • Learn some algorithms and some proofs

  3. Not a polygon Disconnected (multiple components) Connected but with one or more holes Simply connected polygon (non-convex) Lower-dimensional Convex polygon Attributes of subset of the plane In what follows,A and B are subsets of the plane: Non-manifold polygon

  4. P iP eP Polyloop, boundary, interior, exterior When A is a simply connected polygon. Its boundary, denoted A, is a polyloop P. VALIDITY ASSUMPTION: We assume that the vertices and edge-interiors of P are pair-wise disjoint P divides space into 3 sets: the boundary: P the interior: iP, the exterior: eP

  5. What is the Stringing of A? The“Stringing”S(A) is the union of all seg(p,q) with pA and qA

  6. Prove that AS(A) Proof:pA, pseg(p,p)S(A) In fact, AS(A), since opposite rays from each point p of the interior of ∂ A must each exit A at a point of ∂A p

  7. When is a planar set A convex? q p seg(p,q) is the line segment from p to q A is convex  ( pA qA  seg(p,q)A ) p q p q

  8. What is the convex hull of a set A? The convex hull H(A) is the intersection of all convex sets that contain A.

  9. Conjecture: S(A)=H(A) Prove, disprove…

  10. Counter example where S(A)≠H(A) S  segment(p,q) for all pS and qS H(S)

  11. Other properties/conjectures? Prove/disprove: • S(A)  H(A) • A convex  S(A) = H(A) • H(A) = union of all triangles with their 3 vertices in A

  12. Is H(A) a Tightening? H(A) is the tightening of a polyloop P that contains A in its interior Tightening shrinks P without penetrating in A

  13. What is the orientation of a polyloop P is oriented clockwise (CW) or counterclockwise (CCW) Often orientation is implicitly encoded in the order in which the vertices are stored. CW CCW

  14. y CW by b ay a x ax bx area(a,b):=(ay+by)(bx–ax)/2 How to compute the orientation? Compute the signed area aP of iP as the sumof signed areas of trapezes between each oriented edge and its orthogonal projection (shadow) on the x-axis. If aP>0, the P is CW. Else, reveres the orientation (vertex order).

  15. When is a vertex concave/convex? Vertex q a CW polyloop is concave when P makes a left turn at q. If is convex otherwise. CW

  16. When is a vertex a left turn? Consider a sequence of 3 vertices (p, q, r) ina polyloop P. Vertex q is a left turn, written leftTurn(p,q,r), when (xr–xq) (yr–yp) > (xr–xp) (yr–yq) r v=(x,y) v.left=(y,–x) (q–p).left q p (q–p).left(r–q)>0 left turn

  17. What is the decimation of a vertex? Delete the vertex from P

  18. Concave Vertex Decimation: CVD(P) The CVD algorithm keeps finding and decimating the left-turn vertices of a CW polyloop P until none are left

  19. Conjecture: CVD(P) computed H(P) Prove/disprove….

  20. Counterexample CVD may lead to self-intersecting polyloops Now, all vertices are right turns, but we do not have H(P). In fact the polyloop is invalid (self-intersects).

  21. Can you fix the CVD algorithm?

  22. Preserve validity! • Only do decimations of concave vertices when they preserve validity of the polyloop This vertex should not be decimated

  23. Example of the fixed the CVD algorithm Only decimate concave vertices when the validity of the polyloop is preserved Skip this vertex

  24. How to test the validity of a decimation? What is different between these two decimations? bad good

  25. How to test the validity of a decimation? What is different between these two decimations? bad good

  26. Other vertex in swept triangle! What is different between these two decimations? bad good

  27. How to implement point-in-triangle? • How to test whether point v is in triangle (p,q,r)? p v q r

  28. p p q v v v q r leftTurn(r,p,v) is false q p r r all 4 are true all 4 are false Use the left-turn test! If leftTurn(p,q,r), leftTurn(p,q,v), leftTurn(q,r,v), leftTurn(r,p,v) are all equal, then v is in the triangle.

  29. What is the complexity of the fixed CVD? ? Test this vertex p v r q

  30. What is the cost of testing a vertex? ? Test this vertex p v r q

  31. What is the cost of testing a vertex? • Go through all the remaining vertices and perform a constant cost test: O(n) ? Test this vertex p v r q

  32. How many times is a vertex tested? ? ?

  33. How many times is a vertex tested? • Test each vertex once and put concave vertices in a queue. • The h vertices on H(P) never become concave. They will not be tested again. • The initial set of concave vertices will be tested at least once. • At least one of them will be decimated. • You only need to retest the vertex preceding a decimation. • So the number of in-triangle tests is < 2n–h… O(n) ? ?

  34. What is the total complexity? • O(n) tests • Each O(n)

  35. Assigned Homework Learn the definition, algorithms, and counterexamples discussed in these slides

More Related