Appendix B. Matrix Operations
This appendix implements a class called Matrix3x3
that encapsulates all of the operations
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, eij,
where i represents the ith row
and j the jth column. For
example, e21 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); Matrix3x3& operator+=(Matrix3x3 m); Matrix3x3& operator-=(Matrix3x3 m); Matrix3x3& operator*=(float s); Matrix3x3& operator/=(float s); }; // Constructor inline Matrix3x3::Matrix3x3(void) { e11 = 0; e12 = 0; e13 = 0; e21 = 0; e22 = 0; e23 = 0; e31 = 0; e32 = 0; e33 = 0; } // Constructor inline Matrix3x3::Matrix3x3(float r1c1, float r1c2, float r1c3, float r2c1, float r2c2, float r2c3, float r3c1, float r3c2, float r3c3 ) { e11 = r1c1; e12 = r1c2; e13 = r1c3; ...
Get Physics for Game Developers, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.