Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computational Geometry for the Tablet PC

Similar presentations


Presentation on theme: "Computational Geometry for the Tablet PC"— Presentation transcript:

1 Computational Geometry for the Tablet PC
CSE 490ra

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

3 Tablet Geometry Basic structure – Stroke: sequence of points
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 Point Line segment Distance Basic Test p (p1, p2)
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 Sweepline Algorithm Event queue Move sweepline to next event
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

14 Sweepline example 3 6 5 1 2 7 4

15 Activity: Identify when each of the intersections is detected
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 Compute the Convex Hull

23 Algorithms Convex hull algorithms: O(nlog n) Insertion algorithm
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 Algorithms Gift 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 Polar sort the red points around q (Start with p, CCW order)
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 If CCW(x, y, z)
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 New Packet outside the hull
SUB: Describe what to do New Packet outside the hull

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


Download ppt "Computational Geometry for the Tablet PC"

Similar presentations


Ads by Google