Course CPG101
Matrix Theory, Representation and Computation for Computer Game Programmers
Matrix Theory, Representation and Computation for Computer Game Programmers
Duration: 3 Days
The course is aimed at programmers (especially computer game programmers) , scientists and engineers who need to get up to speed quickly with applied matrix based computation for a variety of purposes such as numerical solution of engineering problems, computer games development, graphics programming, and signal processing.
The course will be useful to a wide range of interests related to
- computer games development
- numerical solution of scientific and engineering problems
- operations research
- modeling and simulation
The course assumes a basic knowledge mathematics and linear algebra as well as a reasonable knowledge of C / C++ programming.
Course Overview
The purpose of this course is to
- refresh forgotten knowledge of those whose matrix theory is a "bit rusty"
- describe and discuss various ways of representing matrices - both dense and sparse
- describe various problems in computational geometry, numerical analysis, differential equation solving and signal processing which can be represented using matrix notation
- describe algorithms and data structures for performing matrix operations efficiently
- overview matrix computations using libraries such as scilab and matlab
Course Contents
overview of vectors
- geometrical representation of vecors in 2D and 3D "
- handedness
- scalar and vector products
- n-dimensional spaces
- basis, orthonormal basis and orthogonalisation
matrices and determinants - the basics
- basic concepts
- identity and zero matrices
- matrix sums and products
- diagonal matrices
- transpose of a matrix
- symmetric and skew symmetric matrices
- determinants and their evaluation
- inverse of a matrix
- orthogonal matrices
- block matrices
- triple product
- matrix representation of a transformation
- projection mapping
- changing bases
- isometries and orthogonal matrices
Review of Matrix Algebra
- complex numbers
- eigenvalues and eigenvectors
- linear isometries in 3D space
- rank and row operations
- reducing a matrix to echelon form
- inverting a matrix via row operations
- diagonalisation
- quadratic forms
- Choleski decomposition
- singular value decomposition (SVD)
C Data Structures and Algorithms for vector and matrix manipulation
- Overview of C - arrays, pointers, and dynamic data structures
- fixed point vs. floating point arithmetic
- techniques for representing sparse matrices
- srategies for code optimisation
- strategies for taking advantage of parallelism on multi-processor architectures
- overview of relevant code in "Numerical Recipes in C"
- overview of Scilab's vector and matrix processing capabilities
- overview of Matlab's vector and matrix processing capabilities
- errors and error handling
C++ Data Structures and Algorithms for vector and matrix manipulation
- advantages and disadvantages of C++ vs C
- how efficient is C++ relative to C ?
- devising C++ frameworks for performing vector and matrix operations and calculations at a higher level of abstraction
Some actual applications (can be tailored)
- computer games
- operations research
- modeling and simulation
