1 / 36

Our Friend the Dot Product

Our Friend the Dot Product. Jim Van Verth (jim@essentialmath.com). So… Why The Dot Product?. Probably the single most important vector operation The Ginzu ™ knife of graphics It slices, it dices, it has 1001 uses Understanding is a 3-D sword… So Define Utilize. Background.

elisal
Download Presentation

Our Friend the Dot Product

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. Our Friend the Dot Product Jim Van Verth (jim@essentialmath.com)

  2. So… Why The Dot Product? • Probably the single most important vector operation • The Ginzu™ knife of graphics • It slices, it dices, it has 1001 uses • Understanding is a 3-D sword… • So • Define • Utilize Essential Math for Games

  3. Background • Assume you know something about vectors • Will be skipping some steps for time • Just follow along Essential Math for Games

  4. What is the Dot Product? • One of a class of vector functions known as inner products • Means that it satisfies various axioms • Useful for dot product math Essential Math for Games

  5. Definition #1: Coordinant-Free • In Euclidean space, define dot product of vectors a & b as where || || == length  == angle between a & b a  b Essential Math for Games

  6. Definition #2: Coordinant-Dependant • By using Law of Cosines, can compute coordinate-dependant definition in 3-space: or 2-space: Essential Math for Games

  7. Use #1: Measure Angles • Look at def #1: • Can rearrange to compute angle between vectors: • A little expensive – cheaper tests available Essential Math for Games

  8. Use #1: Measure Angles • Rather than determining exact angle, can use sign to classify angle • ||a|| and ||b|| are always non-negative, so sign depends on cos , therefore • a • b > 0 if angle < 90° • a • b = 0 if angle = 90° (orthogonal) • a • b < 0 if angle > 90° Essential Math for Games

  9. Angles: View Testing • Simple view culling • Suppose have view vector v and vector t to object in scene (t = o - e) • If v • t < 0, object behind us, cull e v t o Essential Math for Games

  10. Angles: View Testing • Note: doesn’t work well for • large objects • objects close to view plane • Best for AI, not rendering e v t o Essential Math for Games

  11. Angles: Collision Response • Have normal n (from object A to object B), relative velocity va-vb • Three cases of contact: • Separating (va-vb) • n< 0 • Colliding (va-vb) • n> 0 • Resting (va-vb) • n= 0 Essential Math for Games

  12. Angles: View Cone • Test against view cone – store cosine of view angle and compare • If d • L < cosv, cull • Nice for spotlights • Must normalize ^ ^ ^ L v ^ d Essential Math for Games

  13. Angles: Collinear Test • Test for parallel vectors • If v and w parallel & pointing same direction, v • w ~ 1 • If v and w parallel & pointing opposite direction, v • w ~ -1 • Has problems w/floating point, though • And you have to normalize ^ ^ ^ ^ ^ ^ ^ ^ Essential Math for Games

  14. Use #2: Projection • Suppose want to projecta onto b • Is part of a pointing along b • Represented as a  b Essential Math for Games

  15. Use #2: Projection a • From trig • Now multiply by normalized b, so  b Essential Math for Games

  16. Use #2: Projection • So have • If b is already normalized (often the case), then becomes Essential Math for Games

  17. Projection: OBB Collision • Idea: determine if separating plane between boxes exists • Project box extent onto plane normal, test against projection btwn centers c a b bv av cv Essential Math for Games

  18. Projection: OBB Collision • To ensure maximum extents, take dot product using only absolute values • Check against axes for both boxes, plus cross products of all axes • See Gottschalk for more details Essential Math for Games

  19. Use #2: Projection • Can use this to break a into components parallel and perpendicular to b a b Essential Math for Games

  20. Projection: Line-Point Distance ^ • Line defined by point P and vector v • Break vector w= Q – P into wand w|| • w||=(w  v) v • ||w||2 = ||w||2 – ||w||||2 ^ ^ Q w w w|| ^ P v Essential Math for Games

  21. Projection: Line-Point Distance • Final formula: • If v isn't normalized: Essential Math for Games

  22. Use #3: Hidden Dot Products • There are dot products everywhere… just need to know to look for them • Examples: • Plane equation • Matrix multiplication • Luminance calculation Essential Math for Games

  23. Planes • Defined by • normal n = (a, b, c) • point on plane P0=(x0, y0, z0) • Plane equation • ax+by+cz+d = 0 • d=-(ax0 + by0 + cz0) • Dot products! Essential Math for Games

  24. Planes • Why a dot product? • Plane is all points P= (x, y, z) passing through P0 and orthogonal to normal • Can express as n P0 P Essential Math for Games

  25. Planes • Plane is all points P= (x, y, z) such that • Can rewrite as or Essential Math for Games

  26. Planes • Can use plane equation to test locality of point • If n is normalized, gives distance to plane n ax+by+cz+d > 0 ax+by+cz+d = 0 ax+by+cz+d < 0 Essential Math for Games

  27. v|| P’ Planes • Project point to plane • Assuming n normalized, n P v P0 Essential Math for Games

  28. v|| -v|| v - 2v|| Planes • Want to mirror point across a plane • Take dot product of vector with normal • Subtract twice from vector n v Essential Math for Games

  29. Matrix Product • In general, element ABij is dot product of row i from A and column j from B or Essential Math for Games

  30. Matrix Product • So what does this mean? • Beats me… but it’s cool Essential Math for Games

  31. Luminance • Can convert RGB color to single ‘luminance’ value by computing • In this case, a projection of sorts • “Luminance” vector not normalized Essential Math for Games

  32. Use #4: Perpendicular Dot Product • 2D cross product, sort of • Perpendicular takes 2D vector and rotates it 90 ccw • Take another vector and dot it, get • Looks like z term from cross product Essential Math for Games

  33. Perpendicular Dot Product • Result is • So if you want to compute signed angle from v0 to v1, could do (works for 3D, too, just need to get length of cross product) Essential Math for Games

  34. Perpendicular Dot Product • Another use: sign of perp dot product indicates turning direction • Have velocity v, direction to target d • If v• d is positive, turn left • If negative, turn right v v d d v v Essential Math for Games

  35. Conclusion • Dot product is cool • Dot product has many uses • Use it heavily and often Essential Math for Games

  36. References • Van Verth, James M. and Lars Bishop, Essential Mathematics for Games and Interactive Applications, Morgan Kaufmann, 2004. • Anton, Howard and Chris Rorres, Elementary Linear Algebra, 7th Ed, Wiley & Sons, 1994. • Axler, Sheldon, Linear Algebra Done Right, Springer Verlag, 1997. Essential Math for Games

More Related