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
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
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 321
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
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
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
форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно
програмиране за деца – безплатни курсове и уроцибезплатен 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/
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 collide40
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
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 mesh45
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 / collide
48
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 check 50
Oriented bounding box updating
Live Demo
форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно
програмиране за деца – безплатни курсове и уроцибезплатен 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/
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