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