Our Friend the Dot Product Jim Van Verth




































- Slides: 36
Our Friend the Dot Product Jim Van Verth (jim@essentialmath. com) Essential Math for Games
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
Background • Assume you know something about vectors • Will be skipping some steps for time • Just follow along Essential Math for Games
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
Definition #1: Coordinant-Free • In Euclidean space, define dot product of vectors a & b as a where || || == length == angle between a & b Essential Math for Games b
Definition #2: Coordinant-Dependant • By using Law of Cosines, can compute coordinate-dependant definition in 3 space: or 2 -space: Essential Math for Games
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
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
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 o v t Essential Math for Games
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
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
Angles: View Cone • Test against view cone – store cosine of view angle and compare ^ ^ • If d • L < cos v, cull • Nice for spotlights ^ L v • Must normalize ^ d Essential Math for Games
Angles: Collinear Test • Test for parallel vectors ^ parallel & pointing same § If ^ v and w ^~1 direction, ^ v • w § If ^ v and ^ w parallel & pointing opposite ^ ~ -1 direction, v^ • w § Has problems w/floating point, though § And you have to normalize Essential Math for Games
Use #2: Projection • Suppose want to project a onto b a b • Is part of a pointing along b • Represented as Essential Math for Games
Use #2: Projection a • From trig • Now multiply by normalized b, so Essential Math for Games b
Use #2: Projection • So have • If b is already normalized (often the case), then becomes Essential Math for Games
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
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
Use #2: Projection • Can use this to break a into components parallel and perpendicular to b a Essential Math for Games b
Projection: Line-Point Distance • • Line defined by point P and vector ^v Break vector w = Q – P into w and w|| = (w ^ v) ^v Q ||w ||2 = ||w||2 – ||w||||2 w w w|| P ^ v Essential Math for Games
Projection: Line-Point Distance • Final formula: • If v isn't normalized: Essential Math for Games
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
Planes • Defined by § normal n = (a, b, c) § point on plane P 0=(x 0, y 0, z 0) • Plane equation § ax+by+cz+d = 0 § d=-(ax 0 + by 0 + cz 0) • Dot products! Essential Math for Games
Planes • Why a dot product? • Plane is all points P = (x, y, z) passing through P 0 and orthogonal to normal • Can express as n P 0 Essential Math for Games P
Planes • Plane is all points P = (x, y, z) such that • Can rewrite as or Essential Math for Games
Planes • Can use plane equation to test locality of point n ax+by+cz+d > 0 ax+by+cz+d = 0 ax+by+cz+d < 0 • If n is normalized, gives distance to plane Essential Math for Games
Planes • Project point to plane n v|| P 0 P v P’ • Assuming n normalized, Essential Math for Games
Planes • Want to mirror point across a plane • Take dot product of vector with normal • Subtract twice from vector n v|| -v|| v v - 2 v|| Essential Math for Games
Matrix Product or • In general, element ABij is dot product of row i from A and column j from B Essential Math for Games
Matrix Product • So what does this mean? • Beats me… but it’s cool Essential Math for Games
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
Use #4: Perpendicular Dot Product • 2 D cross product, sort of • Perpendicular takes 2 D vector and rotates it 90 ccw • Take another vector and dot it, get • Looks like z term from cross product Essential Math for Games
Perpendicular Dot Product • Result is • So if you want to compute signed angle from v 0 to v 1, could do (works for 3 D, too, just need to get length of cross product) Essential Math for Games
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 d v v v d v Essential Math for Games
Conclusion • Dot product is cool • Dot product has many uses • Use it heavily and often Essential Math for Games
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, 7 th Ed, Wiley & Sons, 1994. • Axler, Sheldon, Linear Algebra Done Right, Springer Verlag, 1997. Essential Math for Games




































