53
Computational Geometry & Collision detection Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev http://academy.telerik.com Technical Trainer academy.telerik.c om /.../3d-game-deve lopm ent-opengl George Atanasov Front-End Developer

Computational Geometry & Collision detection

  • Upload
    akando

  • View
    44

  • Download
    1

Embed Size (px)

DESCRIPTION

academy.telerik.com /.../3d-game-development-opengl. Computational Geometry & Collision detection. Vectors, Dot Product, Cross Product, Basic Collision Detection. George Georgiev. http://academy.telerik.com. Technical Trainer. Front-End Developer. George Atanasov. Table of Contents. - PowerPoint PPT Presentation

Citation preview

Page 1: Computational Geometry & Collision detection

Computational Geometry &

Collision detectionVectors, Dot Product, Cross Product,

Basic Collision Detection

George Georgiev

http://academy.telerik.com

Technical Trainer

academy.telerik.com

/.../3d-game-developm

ent-opengl

George AtanasovFront-End Developer

Page 2: Computational Geometry & Collision detection

Table of Contents Vectors

Extended revision The vector dot product The vector cross product Collision detection

In Game programming Sphere collision Bounding volumes AABBs 2

Page 3: Computational Geometry & Collision detection

VectorsRevision, Normals, Projections

Page 4: Computational Geometry & Collision detection

Vectors – revision

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

Page 5: Computational Geometry & Collision detection

Vectors – revision

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)

Page 6: Computational Geometry & Collision detection

Vectors – revision

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

Page 7: Computational Geometry & Collision detection

Vectors – revision Collinear vectors:

Coplanar vectors:

7

Page 8: Computational Geometry & Collision detection

Vectors – revision Vectors defining a 3D vector space

8

Page 9: Computational Geometry & Collision detection

Vectors – revision 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

Page 10: Computational Geometry & Collision detection

Vectors – revision 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

Page 11: Computational Geometry & Collision detection

Vectors – revision Projection of a vector on another vector

11

Page 12: Computational Geometry & Collision detection

Vector Dot ProductDefinition, Application, Importance

Page 13: Computational Geometry & Collision detection

Vector dot product 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

Page 14: Computational Geometry & Collision detection

Vector dot product Dot Product (2)

Example: A (5, 6) B (-3, 2) = 5 * (-3) + 6 * 2

= -15 + 12 = -3

Result A scalar number

14

Page 15: Computational Geometry & Collision detection

Vector dot product 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

Page 16: Computational Geometry & Collision detection

Vector dot product Meaning in Euclidean geometry

If A(x1, y1, …), B(x2, y2, …) 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

Page 17: Computational Geometry & Collision detection

Vector dot product 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

Page 18: Computational Geometry & Collision detection

Vector dot product 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

Page 19: Computational Geometry & Collision detection

Dot Product ComputationLive Demo

Page 20: Computational Geometry & Collision detection

Vector Cross ProductDefinition, Features, Application

Page 21: Computational Geometry & Collision detection

Vector cross product 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 321

Page 22: Computational Geometry & Collision detection

2D Vector cross product 2D Cross product

Take the vectors U(x1, y1) and V(x2, y2)

Multiply their coordinates across and subtract: U(x1, y1) x V(x2, y2) = (x1 * y2) – (x2 *

y1) Result

A scalar number22

Page 23: Computational Geometry & Collision detection

2D Vector cross product Scalar meaning in Euclidean geometry If U(x1, y1) and V(x2, y2) 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 3D23

Page 24: Computational Geometry & Collision detection

2D Vector cross product 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 ‘rightturn’

24

Page 25: Computational Geometry & Collision detection

2D Vector cross product 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

Page 26: Computational Geometry & Collision detection

2D Cross Product Computation

Live Demo

Page 27: Computational Geometry & Collision detection

3D Vector cross product 3D Cross product

Take two 3D vectors U(x1, y1, z1) and V(x2, y2, z2)

Calculate the following 3 coordinates x3 = y1*z2 – y2*z1

y3 = z1*x2 – z2*x1

z3 = x1*y2 – x2*y1

Result A 3D vector with coordinates (x3, y3,

z3)

27

Page 28: Computational Geometry & Collision detection

3D Vector cross product 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

Page 29: Computational Geometry & Collision detection

3D Vector cross product 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

Page 30: Computational Geometry & Collision detection

3D Vector cross product

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)

Page 31: Computational Geometry & Collision detection

3D Cross Product ComputationLive Demo

Page 32: Computational Geometry & Collision detection

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен 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, PhoneGapfree C# book, безплатна книга C#, книга Java, книга C# Дончо Минков - сайт за програмиране

Николай Костов - блог за програмиранеC# курс, програмиране, безплатно

?? ? ?

??? ?

?

? ?

??

?

?

? ?

Questions?

?

Computational geometry

http://academy.telerik.com/

Page 33: Computational Geometry & Collision detection

Collision detectionBasics, Methods, Problems,

Optimization

Page 34: Computational Geometry & Collision detection

Collision detection

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

Page 35: Computational Geometry & Collision detection

Collision detection

35

Collision objects Can raise collision events Types

Spheres Cylinders Boxes Cones Height fields Triangle meshes

Page 36: Computational Geometry & Collision detection

Collision detection

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

Page 37: Computational Geometry & Collision detection

Sphere-sphere collision detection

Live Demo

Page 38: Computational Geometry & Collision detection

Collision detection

38

Triangle meshes collision Very accurate Programmatically heavy Computation heavy (n2) Rarely needed

Page 39: Computational Geometry & Collision detection

Collision detection

39

Collision detection in Game programming Combines several collision models Uses bounding volumes Uses optimizations

Axis-sweep Lower accuracy in favor of speed

Page 40: Computational Geometry & Collision detection

Collision detection 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 collide40

Page 41: Computational Geometry & Collision detection

Collision detection 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 bodies41

Page 42: Computational Geometry & Collision detection

Bounding sphere generationLive Demo

Page 43: Computational Geometry & Collision detection

Collision detection 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

Page 44: Computational Geometry & Collision detection

Minimum bounding sphere generation

Live Demo

Page 45: Computational Geometry & Collision detection

Collision detection 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 mesh45

Page 46: Computational Geometry & Collision detection

Collision detection 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

Page 47: Computational Geometry & Collision detection

Axis-aligned bounding box generation

Live Demo

Page 48: Computational Geometry & Collision detection

Collision detection 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

Page 49: Computational Geometry & Collision detection

Axis-aligned bounding box collision detection

Live Demo

Page 50: Computational Geometry & Collision detection

Collision detection 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

Page 51: Computational Geometry & Collision detection

Oriented bounding box updating

Live Demo

Page 52: Computational Geometry & Collision detection

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен 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, PhoneGapfree C# book, безплатна книга C#, книга Java, книга C# Дончо Минков - сайт за програмиране

Николай Костов - блог за програмиранеC# курс, програмиране, безплатно

?? ? ?

??? ?

?

? ?

??

?

?

? ?

Questions?

?

Computational geometry & Collision

detection

http://academy.telerik.com/

Page 53: Computational Geometry & Collision detection

Free Trainings @ Telerik Academy

3D Graphics and Game Development academy.telerik.com/.../3d-game-de

velopment-opengl Telerik Software Academy

academy.telerik.com Telerik Academy @ Facebook

facebook.com/TelerikAcademy Telerik Software Academy Forums

forums.academy.telerik.com