Presentation is loading. Please wait.

Presentation is loading. Please wait.

Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Technical Trainer GeorgeAtanasov George Atanasov.

Similar presentations


Presentation on theme: "Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Technical Trainer GeorgeAtanasov George Atanasov."— Presentation transcript:

1 Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev http://academy.telerik.com Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer

2  Vectors  Extended revision  The vector dot product  The vector cross product  Collision detection  In Game programming  Sphere collision  Bounding volumes  AABBs 2

3 Revision, Normals, Projections

4 4  Ordered sequences of numbers  OA (6, 10, 18) – 3-dimensional  OA (6, 10) – 2-dimensional  OA (6, 10, 18, -5) – 4-dimensional  Have magnitude and direction A

5 5  No location  Wherever you need them  Can represent points in space  Points are vectors with a beginning at the coordinate system center  Example:  Point A(5, 10) describes the location (5, 10)  Vector U(5, 10), beginning at (0, 0), describes ‘the path’ to the location (5, 10)

6 6  All vectors on the same line are called collinear  Can be derived by scaling any vector on the line  E.g.: A(2, 1), B(3, 1.5), C(-1, -0.5) are collinear  Two vectors, which are not collinear, lie on a plane and are called coplanar  => Two non-collinear vectors define a plane  Three vectors, which are not coplanar, define a space

7  Collinear vectors:  Coplanar vectors: 7

8  Vectors defining a 3D vector space 8

9  Perpendicular vectors  Constitute a right angle  Deriving a vector, perpendicular to a given one:  Swap two of the coordinates of the given vector (one of the swapped coordinates can’t be zero)  Multiply ONE of the swapped coordinates by -1  Example:  A (5, 10) given => A’(-10, 5) is perpendicular to A  V (3, 4, -1) given => V’(3, 1, 4) is perpendicular to V 9

10  Normal vectors to a surface  Constitute a right angle with flat surfaces  Perpendicular to at least two non-collinear vectors on the plane  Constitute a right angle with the tangent to curved surfaces 10

11  Projection of a vector on another vector 11

12 Definition, Application, Importance

13  Dot Product (a.k.a. scalar product)  Take two equal-length sequences  e.g. sequence A (5, 6) and sequence B (-3, 2)  Multiply each element of A with each element of B  A [i] * B [i]  Add the products  Dot Product(A, B) = A[0] * B[0] + A[1] * B[1] + … + A[i] * B[i] + … + A[n-1] * B[n-1] 13

14  Dot Product (2)  Example:  A (5, 6) B (-3, 2) = 5 * (-3) + 6 * 2 = -15 + 12 = -3  Result  A scalar number 14

15  Dot product of coordinate vectors  Take two vectors of equal dimensions  Apply the dot product to their coordinates  2D Example:  A(1, 2). B(-1, 1) = 1*(-1) + 2*1 = 1  3D Example:  A(1, 2, -1). B(-1, 1, 5) = 1*(-1) + 2*1 + (-1) * 5 = -4  Simple as that 15

16  Meaning in Euclidean geometry  If A(x 1, y 1, … ), B(x 2, y 2, … ) are vectors  theta is the angle, in radians, between A and B  Dot Product (A, B) = A. B = = |A|*|B|*cos(theta)  Applies to all dimensions (1D, 2D, 3D, 4D, … nD) 16

17  Meaning in Euclidean geometry (2)  If U and V are unit vectors, then U. V =  cosine of the angle between U and V  the oriented length of the projection of U on V  If U and V are non-unit vectors  ( U. V ) divided by |U|*|V| = cosine of the angle between U and V  ( U. V ) divided by |V| = the oriented length of the projection of U on V 17

18  Consequences  If A. B > 0, A and B are in the same half-space  If A. B = 0, A and B are perpendicular  If A. B < 0, A and B are in different half-spaces  Applications  Calculating angles  Calculating projections  Calculating lights  Etc… 18

19 Live Demo

20 Definition, Features, Application

21  Cross product  Operates on vectors with up to 3 dimensions  Forms a determinant of a matrix of the vectors  Result – depends on the dimension  In 2D – a scalar number (1D)  In 3D – a vector (3D)  Not defined for 1D and dimensions higher than 3 21

22  2D Cross product  Take the vectors U(x 1, y 1 ) and V(x 2, y 2 )  Multiply their coordinates across and subtract:  U(x 1, y 1 ) x V(x 2, y 2 ) = (x 1 * y 2 ) – (x 2 * y 1 )  Result  A scalar number 22

23  Scalar meaning in Euclidean geometry  If U(x 1, y 1 ) and V(x 2, y 2 ) are 2D vectors  theta is the angle between U and V  Cross Product (U, V) = U x V = = |U| * |V| * sin(theta)  |U| and |V| denote the length of U and V  Applies to 2D and 3D 23

24  Scalar meaning in Euclidean geometry (2)  For every two 2D vectors U and V  U x V = the oriented face of the parallelogram, defined by U and V  For every three 2D points A, B and C  If U x V = 0, then A, B and C are collinear  If U x V > 0, then A, B and C constitute a ‘left turn’  If U x V < 0, then A, B and C constitute a ‘right turn’ 24

25  Applications  Graham scan (2D convex hull)  Easy polygon area computation  Cross product divided by two equals oriented (signed) triangle area  2D orientation  ‘left’ and ‘right’ turns 25

26 Live Demo

27  3D Cross product  Take two 3D vectors U(x 1, y 1, z 1 ) and V(x 2, y 2, z 2 )  Calculate the following 3 coordinates  x 3 = y 1 *z 2 – y 2 *z 1  y 3 = z 1 *x 2 – z 2 *x 1  z 3 = x 1 *y 2 – x 2 *y 1  Result  A 3D vector with coordinates (x 3, y 3, z 3 ) 27

28  Meaning in Euclidean geometry  The magnitude  Always positive (length of the vector)  Has the unsigned properties of the 2D dot product  The vector  Perpendicular to the initial vectors U and V  Normal to the plane defined by U and V  Direction determined by the right-hand rule 28

29  The right-hand rule  Index finger points in direction of first vector (a)  Middle finger points in direction of second vector (b)  Thumb points up in direction of the result of a x b 29

30 30  Unpredictable results occur with  Cross product of two collinear vectors  Cross product with a zero-vector  Applications  Calculating normals to surfaces  Calculating torque (physics)

31 Live Demo

32 форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране http://academy.telerik.com/

33 Basics, Methods, Problems, Optimization

34 34  Collisions in Game programming  Any intersection of two objects’ geometry  Raise events in some form  Usually the main part in games  Collision response – deals with collision events

35 35  Collision objects  Can raise collision events  Types  Spheres  Cylinders  Boxes  Cones  Height fields  Triangle meshes

36 36  Sphere-sphere collision  Easiest to detect  Used in  particle systems  low-accuracy collision detection  Collision occurrence:  Center-center distance less than sum of radiuses  Optimization  Avoid computation of square root

37 Live Demo

38 38  Triangle meshes collision  Very accurate  Programmatically heavy  Computation heavy (n 2 )  Rarely needed

39 39  Collision detection in Game programming  Combines several collision models  Uses bounding volumes  Uses optimizations  Axis-sweep  Lower accuracy in favor of speed

40  Bounding volumes  Easy to check for collisions  Spheres  Boxes  Cylinders, etc.  Contain high-triangle-count meshes  Tested for collision before the contained objects  If the bounding volume doesn’t collide, then the mesh doesn’t collide 40

41  Bounding sphere  Orientation-independent  Center – mesh’s center  Radius  distance from mesh center to farthest vertex  Effective for  convex, oval bodies  mesh center equally distant from surface vertices  rotating bodies 41

42 Live Demo

43  Minimum bounding sphere  Center – the center of the segment, connecting the two farthest mesh vertices  Radius – the half-length of the segment, connecting the two farthest mesh vertices  Efficient with  convex, oval bodies  rotating bodies  Sphere center rotated with the other mesh vertices 43

44 Live Demo

45  Axis-aligned bounding box (AABB)  Very fast to check for collisions  Usually smaller volume than bounding spheres  Edges parallel to coordinate axes  Minimum corner  coordinates – lowest coordinate ends of mesh  Maximum corner  coordinates – highest coordinate ends of mesh 45

46  Axis-aligned bounding box (2)  Efficient with  non-rotating bodies  convex bodies  oblong bodies  If the body rotates, the AABB needs to be recomputed 46

47 Live Demo

48  Checking AABBs for collision  Treat the minimum and maximum corners’ coordinates as interval edges  3D case  If the x intervals overlap  And the y intervals overlap  And the z intervals overlap  Then the AABBs intersect / collide 48

49 Live Demo

50  Oriented bounding box (OBB)  Generated as AABB  Rotates along with the object’s geometry  Advantage:  Rotating it is much faster than creating an new AABB  Usually less volume than AABB  Disadvantage:  Much slower collision check 50

51 Live Demo

52 форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране http://academy.telerik.com/

53  3D Graphics and Game Development  academy.telerik.com/.../3d-game- development-opengl academy.telerik.com/.../3d-game- development-opengl academy.telerik.com/.../3d-game- development-opengl  Telerik Software Academy  academy.telerik.com academy.telerik.com  Telerik Academy @ Facebook  facebook.com/TelerikAcademy facebook.com/TelerikAcademy  Telerik Software Academy Forums  forums.academy.telerik.com forums.academy.telerik.com


Download ppt "Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Technical Trainer GeorgeAtanasov George Atanasov."

Similar presentations


Ads by Google