+ All Categories
Home > Documents > Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Date post: 17-Dec-2015
Category:
Upload: melvin-ramsey
View: 230 times
Download: 0 times
Share this document with a friend
Popular Tags:
52
Computational Geometry & Collision detection Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation www.telerik. com
Transcript
Page 1: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Computational Geometry &

Collision detectionVectors, Dot Product, Cross Product,

Basic Collision Detection

George GeorgievTelerik Corporationwww.telerik.

com

Page 2: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Table of Contents Vectors

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

In Game programming

Sphere collision

Bounding volumes

AABBs2

Page 3: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

VectorsRevision, Normals, Projections

Page 4: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Vectors – revision Collinear vectors:

Coplanar vectors:

7

Page 8: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Vectors – revision Vectors defining a 3D vector space

8

Page 9: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Vectors – revision Projection of a vector on another vector

11

Page 12: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Vector Dot ProductDefinition, Application, Importance

Page 13: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Dot Product ComputationLive Demo

Page 20: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Vector Cross ProductDefinition, Features, Application

Page 21: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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 3 21

Page 22: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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 number

22

Page 23: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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 3D

23

Page 24: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

2D Cross Product Computation

Live Demo

Page 27: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

3D Cross Product ComputationLive Demo

Page 32: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Computational geometry

Questions? ?

?? ? ?

???

?

?

Page 33: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Collision detectionBasics, Methods, Problems,

Optimization

Page 34: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Collision detection

35

Collision objects Can raise collision events

Types

Spheres

Cylinders

Boxes

Cones

Height fields

Triangle meshes

Page 36: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Sphere-sphere collision detection

Live Demo

Page 38: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Collision detection

38

Triangle meshes collision Very accurate

Programmatically heavy

Computation heavy (n2)

Rarely needed

Page 39: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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 collide

40

Page 41: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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 bodies

41

Page 42: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Bounding sphere generationLive Demo

Page 43: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Minimum bounding sphere generation

Live Demo

Page 45: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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 mesh

45

Page 46: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Axis-aligned bounding box generation

Live Demo

Page 48: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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 / collide48

Page 49: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Axis-aligned bounding box collision detection

Live Demo

Page 50: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

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 check50

Page 51: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Oriented bounding box updating

Live Demo

Page 52: Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev Telerik Corporation .

Computational geometry & Collision

detection

Questions? ?

?? ? ?

???

?

?


Recommended