9. computational geometry and collision detection - 3d graphics and game development course
DESCRIPTION
Main topics:In this presentation, part of the 3D graphics and game develpment course, we discuss vectors, the vector dot product, the vector cross product and collision detection.http://academy.telerik.com/.../3d-game-development-openglTelerik Software Academy: http://www.academy.telerik.comThe website and all video materials are in BulgarianTRANSCRIPT
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 that15
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 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, PhoneGap
free 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, PhoneGap
free 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