Game Development Reference

In-Depth Information

APPENDIX B

Matrix Operations

This appendix implements a class called
Matrix3x3
that encapsulates all of the opera‐

tions you need to handle 3×3 (nine-element) matrices when writing 3D rigid-body

simulations.

Matrix3×3 Class

The
Matrix3x3
class is defined with nine elements, e
ij
, where
i
represents the
i
th row

and
j
the
j
th column. For example,
e
21
refers to the element on the second row in the

first column. Here's how all of the elements are arranged:

The class has two constructors, one of which initializes the matrix elements to zero, and

the other of which initializes the elements to those passed to the constructor:

class Matrix3x3 {

public:

// elements eij: i -> row, j -> column

float e11, e12, e13, e21, e22, e23, e31, e32, e33;

Matrix3x3(void);

Matrix3x3(float r1c1, float r1c2, float r1c3,

float r2c1, float r2c2, float r2c3,

float r3c1, float r3c2, float r3c3 );

float det(void);

Matrix3x3 Transpose(void);

Matrix3x3 Inverse(void);