Linear Algebra in Games - Game Programmer Portfolio
Download
Report
Transcript Linear Algebra in Games - Game Programmer Portfolio
Matthew Christian
About Me
Introduction to Linear Algebra
Vectors
Matrices
Quaternions
Links
Student
Applied Mathematics and Computer Science: Software
Development at UW-Stout
Degree
Associates Degree in Computer Programming from
Northcentral Technical College
Gamer
Beaten over 140 games (Yes I have a list)
Independent Game Developer (spare time) for 5 years
XNA developer for around a year and a half
Definition
The part of algebra that deals with the theory of linear
equations and linear transformations
In which the specific properties of vector spaces are
studied (including matrices)
This is NOT about ‘Linear Algebra’, it’s about the
gaming version of ‘Linear Algebra’
Definitions
A variable quantity that can be resolved into
components
A straight line segment whose length is magnitude and
whose orientation in space is direction
Vectors are simple row-based data structures
In XNA:
Microsoft.XNA.Framework
Vector2, Vector3, Vector4
public Vector2 ( float x, float y );
Let P be a point at (2,2)
Then the vector p can
be described as:
p = [2, 2]
Ex: [2,1] , [1,3]
Vector Addition
Add terms in similar positions
Vector “Subtraction”
Remember, vectors represent directions
How to subtract direction? Add negative direction
Scalar-Vector Multiplication
Scaling a Vector up or down is easy, multiply each
element by the scalar
Similar for Division (multiply by scalar fraction)
Vector Matrix Multiplication
See later
Dot Product
Helps determine the angle between 2 vectors
Cross Product
Creates another vector
perpendicular to the
other two vectors
(normal) (3D)
Normalizing
Magnitude (length)
Storing values (positions)
Directions (move direction, collision direction)
Demo(s)
Simple Vectors
Vector Collision
Definition
A rectangular array of quantities… set out by rows and
columns, treated as a single element and manipulated
accordingly…
For us programmers,
Multi-dimensional arrays
A column is a 3x3 matrix if it has
3 rows and 3 columns
Nxm matrix is a matrix with n rows and m columns
Square Matrix
N-rows, N-columns
Main Diagonal
Runs from upper left corner down (includes non-square
matrices)
Diagonal Matrix
Matrix where all entries outside of the main diagonal are
zero (main diagonal entries can be zero)
Identity Matrix
The matrix equivalent of multiplying by 1; 1’s across the
main diagonal with zero’s elsewhere (nxn sized)
3D Rendering is possible BECAUSE of matrices
ModelViewProjection Matrix
Model Matrix – Matrix describing the
position/rotation/scale of your object
Order is important (multiply in order of operations)
View Matrix – Camera position, target, up direction
(orientation)
Projection Matrix – View frustum ‘squished’ (your
monitor doesn’t display ‘3D’)
Math Demos
Transformations!
In XNA
Microsoft.XNA.Framework
Matrix
4x4 matrix (M11 – M44)
Demos
MatrixTransformations
Camera Demo (from Tutorials)
Quaternions are compact descriptions of rotations…
Quaternions DON’T Prevent Gimbal Lock
Matrices use Euler numbers to calculate rotations which
‘cancels’ a direction
After calculating, you can only rotate on the Z-Axis
In all honesty, I’m still
researching it!
(X, Y, Z, W)
(X, Y, Z) is the axis to do rotations about
(W) is the amount to rotate about that axis
Arbitrary Axis
Not global axis
Demo
Quaternion Camera
http://www.insidegamer.org/XnaTutorials.aspx
My tutorials (specifically Tutorial 4)
http://www.ziggyware.com/readarticle.php?article_id=54
Specifically about Vectors in XNA
http://hyperphysics.phy-astr.gsu.edu/hbase/vect.html
Some Vector operations
http://geekswithblogs.net/CodeBlog
My (seldom updated) Blog