Download presentation

Presentation is loading. Please wait.

Published byDaisy Hutchcroft Modified about 1 year ago

1
ADA: 15. Basic Math1 Objective o a reminder about dot product and cross product, and their use for analyzing line segments (e.g. do two segments intersect and the distance of a point to a line) Algorithm Design and Analysis (ADA) , Semester Some Basic Maths Used in CG

2
ADA: 15. Basic Math2 1.Simple Geometry 2.Dot (Scalar) Product 3.Cross (Vector) Product 4.The CCW() Function 5.Line Segment Intersection 6.Distance Between a Point and a Line 7.Area of a Convex PolygonOverview

3
ADA: 15. Basic Math3 Points o (x, y) Cartesian coordinates o (r, Θ) Polar coordinates Line Segments o Positioned using their end points Lines o 2-tuple (m, c) using y = mx + c o 3-tuple (a, b, c) using ax + by = c o Two points P 0, P 1 on the line using P(t) = (1-t)P 0 + t P 1 Polygons o Ordered list of points 1. Simple Geometry

4
Line Segments & Vectors p = (x, y ) 1 2 O = (0, 0)x y 1 2 Points (vectors): p, p, p p = p p p p = (x x, y y ) 1 2 Line segment: p p = p p

5
ADA: 15. Basic Math5 Given the two vectors a = and b = then the dot product is a · b = a1*b1 + a2*b2 + a3*b3 Example a =, b = a · b = 0*2 + -3*3 + 7*1 = 9 – 7 = 2 2. Dot (Scalar) Product

6
Dot Product as Geometry a b = |a| |b| cos θ The dot product is the product of the magnitudes of the two vectors a and b and the cosine of the angle between them. The angle between a and b is: Θ = cos -1 ((a b) / |a||b|) The angle between a and b is: Θ = cos -1 ((a b) / |a||b|)

7
ADA: 15. Basic Math7 Angle Example

8
ADA: 15. Basic Math8 It can be used to get the projection (length) of vector a onto vector b. Uses of Dot Product

9
ADA: 15. Basic Math9 3. Cross (Vector) Product

10
ADA: 15. Basic Math10 Cross Product Example

11
ADA: 15. Basic Math11 The cross product a × b is defined as a vector c that is perpendicular to both a and b, with a direction given by the right-hand rule (the unit vector n ) and a magnitude equal to the area of the parallelogram that the vectors span. Cross Product as Geometry the area of the parallelogram. a b = |a| |b | sin θ n

12
ADA: 15. Basic Math12 Angle Example

13
ADA: 15. Basic Math13 You can use the cross product of the vectors a and b to generate a perpendicular vector, which is the normal to the plane defined by a and b. Normals are very useful when calculating things like lighting in 3D computer games, and up/down in FPSs. Uses of Cross Product

14
ADA: 15. Basic Math14 Suppose we have three vectors a, b, c which form a 3D figure like so: Geometric Properties b a c

15
ADA: 15. Basic Math15 Area of the parallelogram of the front face of the object is: area = | a x b | Volume of the parallelepiped (the entire object) is: volume = | a · ( b x c ) | If the volume == 0 then it must mean that all three vectors lie in the same plane o in terms of the box diagram, it means that |a| is 0 units above the b x c face Area and Volume

16
ADA: 15. Basic Math16Example

17
ADA: 15. Basic Math17 A basic geometric function: o Returns 1 if the points are in counter-clockwise order (ccw) o Returns -1 if the points are in clockwise order (cw) o Returns 0 if the points are collinear CCW() utilises cross product. 4. The CCW() Function ccw(p0, p1, p2) returns 1

18
Turning of Consecutive Segments Counterclockwise Clockwise No turn (collinear) p p p p p p pp p 0 12 p p p p > p p p p < p p p p = Segments p p and p p. Move from p to p then to p

19
ADA: 15. Basic Math19 5. Line Segment Intersection p4 p3 p1 p2 Boundary cases must be considered.

20
ADA: 15. Basic Math20

21
Using Cross Products p p 1 2 p p 3 4 Two line segments intersect iff each of the two pairs of cross products below have different signs (or one cross product in the pair is 0). (p p ) ( p p ) and ( p p ) ( p p ) p 1 p 2 p 3 p // the line through p p // intersects p p // the line through p p // intersects p p. 4 12

22
ADA: 15. Basic Math22 SEGMENTS-INTERSECT(p 1, p 2, p 3, p 4 ) 1 d 1 = CCW(p 3, p 4, p 1 ) 2 d 2 = CCW(p 3, p 4, p 2 ) 3 d 3 = CCW(p 1, p 2, p 3 ) 4 d 4 = CCW(p 1, p 2, p 4 ) 5 if ((d 1 > 0 and d 2 0)) && ((d 3 > 0 and d 4 0)) 6 return true 7 elseif d 1 = 0 and ON-SEGMENT(p 3, p 4, p 1 ) 8 return true 9 elseif d 2 = 0 and ON-SEGMENT(p 3, p 4, p 2 ) 10 return true 11 elseif d 3 = 0 and ON-SEGMENT(p 1, p 2, p 3 ) 12 return true 13 elseif d 4 = 0 and ON-SEGMENT(p 1, p 2, p 4 ) 14 return true 15 else return falseCode lines straddle check boundary cases

23
ADA: 15. Basic Math23 CCW(p i, p j, p k ) // called DIRECTION in CLRS return (p k - p i ) × (p j - p i ) ON-SEGMENT(p i, p j, p k ) 1 if min(x i, x j ) ≤ x k ≤ max(x i, x j ) && min(y i, y j ) ≤ y k ≤ max(y i, y j ) 2 return true 3 else return false

24
ADA: 15. Basic Math24 Intersection Cases

25
ADA: 15. Basic Math25

26
ADA: 15. Basic Math26 Given a point and a line or line segment, determine the shortest distance between them. 6. Distance Between a Point and a Line P3 P1 P2 h The equation of a line defined through two points P1 (x1,y1) and P2 (x2,y2) is P = P1 + u (P2 - P1) using the dot product

27
ADA: 15. Basic Math27 The point P3 (x3, y3) is closest to the line at the tangent to the line which passes through P3, that is, the dot product of the tangent and line is 0, thus ( P3 - P ) ( P2 - P1 ) = 0 Substituting the equation of the line gives: [ P3 - P1 - u( P2 - P1 )] ( P2 - P1 ) = 0 Solving this gives the value of u: Uses a (b+c) = (a b) + (a c)

28
ADA: 15. Basic Math28 Substituting this into the equation of the line gives the point of intersection (x, y) of the tangent as: x = x1 + u (x2 - x1) y = y1 + u (y2 - y1) The distance therefore between the point P3 and the line is the distance between (x, y) and P3.

29
ADA: 15. Basic Math29 double distToSegment(Point2D p1, Point2D p2, Point2D p3) { double xDelta = p2.getX() - p1.getX(); double yDelta = p2.getY() - p1.getY(); if ((xDelta == 0) && (yDelta == 0)) return -1; // p1 and p2 are the same point double u = ((p3.getX() - p1.getX()) * xDelta + (p3.getY() - p1.getY()) * yDelta) / (xDelta * xDelta + yDelta * yDelta); Point2D closePt; // the (x,y) of the previous slide if (u < 0) closePt = p1; else if (u > 1) closePt = p2; else closePt = new Point2D.Double(p1.getX() + u * xDelta, p1.getY() + u * yDelta); return closePt.distance(p3); }Code

30
ADA: 15. Basic Math30 The coordinates (x1, y1), (x2, y2), (x3, y3),..., (xn, yn) of a convex polygon are arranged as shown. They must be in counter-clockwise order around the polygon, beginning and ending at the same point. 7. Area of a Convex Polygon (x 1, y 1 ) (x n, y n ) (x 2, y 2 ) … …

31
ADA: 15. Basic Math31 Example Can be proved using induction on area defined in terms of triangles.

Similar presentations

© 2016 SlidePlayer.com Inc.

All rights reserved.

Ads by Google