1 / 33

Computational Geometry for the Tablet PC

Computational Geometry for the Tablet PC. CSE 490ra. Overview. SUB: Ask for submission of a picture. Computational Geometry on the Tablet PC Geometric primitives Intersections Polygons Convexity. Tablet Geometry. SUB: What is Points[6.4]?. Basic structure – Stroke: sequence of points

nike
Download Presentation

Computational Geometry for the Tablet PC

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. ComputationalGeometry for the Tablet PC CSE 490ra

  2. Overview SUB: Ask for submission of a picture • Computational Geometry on the Tablet PC • Geometric primitives • Intersections • Polygons • Convexity

  3. Tablet Geometry SUB: What is Points[6.4]? • Basic structure – Stroke: sequence of points • Himetric coordinates • Sampled 150 times per second • Coordinates stored in an array Points

  4. Computational Geometry • Algorithms for geometric computation • Numerical issues with coordinates • Importance of degenerate cases • Examples of degenerate cases • Three lines intersecting at a point • Segments overlapping • Three points co-linear

  5. Basic geometry p2 • Point • p • Line segment • (p1, p2) • Distance • Dist(p1, p2) • Basic Test • LeftOf(p1, p2, p3) • CCW(p1, p2, p3) p p1 p3 p2 p1

  6. Distance computation • Avoid computing square root when possible • Example: find closest point to q closestSoFar = p1; d = Dist(p1, q); for k = 2 to n { d1 = Dist(pk, q) if (d1 < d){ closestSoFar = pk; d = d1; } }

  7. Counter Clockwise Test • CCW(p1, p2, p3) public static bool CcwTest(Point p1, Point p2, Point p3){ int q1 = (p1.Y - p2.Y)*(p3.X - p1.X); int q2 = (p2.X - p1.X)*(p3.Y - p1.Y); return q1 + q2 < 0; } ASIDE: Give derivation based on the determinant

  8. Segment intersection • Find intersection of (p1,p2) and (p3,p4) • Q = ap1 + (1-a)p2 • Q = bp3 + (1-b)p4 • Solve for a, b • Two equations, two unknowns • Intersect if 0 < a < 1 and 0 < b < 1 • Derived points • In general, try to avoid computing derived points in geometric algorithms

  9. Problem SUB Tell students segments are not co-linear • Determine if two line segments (p1, p2) and (p3,p4) intersect just using CCW Tests

  10. Making intersection test more efficient • Take care of easy cases using coordinate comparisons • Only use CCW tests if bounding boxes intersect

  11. Computing intersections SUB Ignore degenerate cases • Given k strokes, find all intersections • Given a stroke, find self intersections • Break into segments, and find all pairwise intersections • How many self intersections can a single stroke with n points have?

  12. Segment intersection algorithm • Run time O(nlog n + Klog n) for finding K intersections • Sweepline Algorithm 3 6 5 1 2 7 4

  13. Event queue Start Segment (S2) End Segment (E2) Intersection (I2,4) Move sweepline to next event Maintain vertical order of segments as line sweeps across Start Segment Insert in list Check above and below for intersection End Segment Remove from list Check newly adjacent segments for intersection Intersection Reorder segments Check above and below for intersection Sweepline Algorithm

  14. Sweepline example 3 6 5 1 2 7 4

  15. Activity: Identify when each of the intersections is detected D A F C E B

  16. Polygons • Sequence of points representing a closed path • Simple polygon – closed path with no self intersections

  17. Polygon inclusion test • Is the point q inside the Polygon P?

  18. Convexity • Defn: Set S is convex if whenever p1, and p2 are in S, the segment (p1, p2) is contained in S

  19. Convex polygons • P = {p0, p1, . . . pn-1} • P is convex if • CCW(pi, pi+1, pi+2) for all I • Interpret subscripts mod n • Also holds for CW (depending on how points are ordered)

  20. Problem: Test if a point is inside a convex polygon using CCW Tests SUB: Describe an algorithm using CCW Tests

  21. Convex hull • Smallest enclosing convex figure • Rubber band “algorithm”

  22. Compute the Convex Hull SUB: Students draw the hull

  23. Illustrate insertion with diagram on right Algorithms • Convex hull algorithms: O(nlog n) • Related to sorting • Insertion algorithm • Gift Wrapping (Jarvis’s march) • Divide and Conquer • Graham Scan

  24. Convex Hull AlgorithmsGift wrapping

  25. Divide and Conquer

  26. Graham Scan • Polar sort the points around a point inside the hull • Scan points in CCW order • Discard any point that causes a CW turn • If CCW advance • If !CCW, discard current point and back up

  27. SUB: Students draw the hull Polar sort the red points around q(Start with p, CCW order) p q SUB: Use the result for a first illustration of the algorithm

  28. Graham Scan Algorithm • Stack of vertices • Possible hull vertices • z – next vertex • y – top of stack • x – next on stack • If CCW(x, y, z) • Push(x) • If (! CCW(x, y, z)) • Pop stack x y z x z y

  29. GS Example to walk through

  30. Student submission: Give order vertices are discard in the scan p

  31. Application of Convex Hull • Construct a Convex Hull Selection Lasoo • Maintain convex hull of pen stroke for selection • Operations on packet event in RTS • New packet is outside of the hull • Update the hull • Packet is inside the hull • Computation to make it more efficient when pen leaves the hull

  32. SUB: Describe what to do New Packet outside the hull

  33. SUB: Describe what to do SUB: Give ideas what to do – emphasize that I don’t have an answer in mind New Packet inside the hull

More Related