Date post: | 17-Dec-2015 |
Category: |
Documents |
Upload: | melvin-ramsey |
View: | 230 times |
Download: | 0 times |
Computational Geometry &
Collision detectionVectors, Dot Product, Cross Product,
Basic Collision Detection
George GeorgievTelerik Corporationwww.telerik.
com
Table of Contents Vectors
Extended revision The vector dot product The vector cross product Collision detection
In Game programming
Sphere collision
Bounding volumes
AABBs2
VectorsRevision, Normals, Projections
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
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)
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
Vectors – revision Collinear vectors:
Coplanar vectors:
7
Vectors – revision Vectors defining a 3D vector space
8
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
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
Vectors – revision Projection of a vector on another vector
11
Vector Dot ProductDefinition, Application, Importance
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
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
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
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
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
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
Dot Product ComputationLive Demo
Vector Cross ProductDefinition, Features, Application
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
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
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
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
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
2D Cross Product Computation
Live Demo
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
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
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
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)
3D Cross Product ComputationLive Demo
Computational geometry
Questions? ?
?? ? ?
???
?
?
Collision detectionBasics, Methods, Problems,
Optimization
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
Collision detection
35
Collision objects Can raise collision events
Types
Spheres
Cylinders
Boxes
Cones
Height fields
Triangle meshes
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
Sphere-sphere collision detection
Live Demo
Collision detection
38
Triangle meshes collision Very accurate
Programmatically heavy
Computation heavy (n2)
Rarely needed
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
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
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
Bounding sphere generationLive Demo
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
Minimum bounding sphere generation
Live Demo
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
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
Axis-aligned bounding box generation
Live Demo
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
Axis-aligned bounding box collision detection
Live Demo
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
Oriented bounding box updating
Live Demo
Computational geometry & Collision
detection
Questions? ?
?? ? ?
???
?
?