My Project
|
3x3 matrix. More...
#include <Matrix3x3.h>
Public Member Functions | |
Matrix3x3 (float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22) | |
Empty constructor Constructor from 9 values. | |
Matrix3x3 (const D3DXMATRIX &mat4x4) | |
Matrix3x3 (const Matrix3x3 &mat) | |
Copy constructor. | |
void | Set (float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22) |
Assign values. | |
void | SetScale (const D3DXVECTOR3 &p) |
Sets the scale from a D3DXVECTOR3. The point is put on the diagonal. | |
void | SetScale (float sx, float sy, float sz) |
Sets the scale from floats. Values are put on the diagonal. | |
void | Scale (const D3DXVECTOR3 &p) |
Scales from a D3DXVECTOR3. Each row is multiplied by a component. | |
void | Scale (float sx, float sy, float sz) |
Scales from floats. Each row is multiplied by a value. | |
void | Copy (const Matrix3x3 &source) |
Copy from a Matrix3x3. | |
void | GetRow (const DWORD r, D3DXVECTOR3 &p) const |
Returns a row. | |
const D3DXVECTOR3 & | GetRow (const DWORD r) const |
Returns a row. | |
D3DXVECTOR3 & | GetRow (const DWORD r) |
Returns a row. | |
void | SetRow (const DWORD r, const D3DXVECTOR3 &p) |
Sets a row. | |
void | GetCol (const DWORD c, D3DXVECTOR3 &p) const |
Returns a column. | |
void | SetCol (const DWORD c, const D3DXVECTOR3 &p) |
Sets a column. | |
float | Trace () const |
Computes the trace. The trace is the sum of the 3 diagonal components. | |
void | Zero () |
Clears the matrix. | |
void | Identity () |
Sets the identity matrix. | |
bool | IsIdentity () const |
Checks for identity. | |
void | SkewSymmetric (const D3DXVECTOR3 &a) |
Makes a skew-symmetric matrix (a.k.a. More... | |
void | Neg () |
Negates the matrix. | |
void | Neg (const Matrix3x3 &mat) |
Neg from another matrix. | |
void | Add (const Matrix3x3 &mat) |
Add another matrix. | |
void | Sub (const Matrix3x3 &mat) |
Sub another matrix. | |
void | Mac (const Matrix3x3 &a, const Matrix3x3 &b, float s) |
Mac. | |
void | Mac (const Matrix3x3 &a, float s) |
Mac. | |
void | Mult (const Matrix3x3 &a, float s) |
this = A * s | |
void | Add (const Matrix3x3 &a, const Matrix3x3 &b) |
void | Sub (const Matrix3x3 &a, const Matrix3x3 &b) |
void | Mult (const Matrix3x3 &a, const Matrix3x3 &b) |
this = a * b | |
void | MultAtB (const Matrix3x3 &a, const Matrix3x3 &b) |
this = transpose(a) * b | |
void | MultABt (const Matrix3x3 &a, const Matrix3x3 &b) |
this = a * transpose(b) | |
Matrix3x3 & | FromTo (const D3DXVECTOR3 &from, const D3DXVECTOR3 &to) |
Makes a rotation matrix mapping vector "from" to vector "to". | |
void | RotX (float angle) |
Set a rotation matrix around the X axis. More... | |
void | RotY (float angle) |
Set a rotation matrix around the Y axis. More... | |
void | RotZ (float angle) |
Set a rotation matrix around the Z axis. More... | |
void | RotYX (float y, float x) |
cy sx.sy -sy.cx RY.RX 0 cx sx sy -sx.cy cx.cy | |
Matrix3x3 & | Rot (float angle, const D3DXVECTOR3 &axis) |
Make a rotation matrix about an arbitrary axis. | |
void | Transpose () |
Transpose the matrix. | |
void | Transpose (const Matrix3x3 &a) |
this = Transpose(a) | |
float | Determinant () const |
Compute the determinant of the matrix. We use the rule of Sarrus. | |
Matrix3x3 & | Invert () |
Invert the matrix. Determinant must be different from zero, else matrix can't be inverted. | |
Matrix3x3 & | Normalize () |
Matrix3x3 & | Exp (const Matrix3x3 &a) |
this = exp(a) | |
void | FromQuat (const D3DXQUATERNION &q) |
void | FromQuatL2 (const D3DXQUATERNION &q, float l2) |
Matrix3x3 | operator+ (const Matrix3x3 &mat) const |
Operator for Matrix3x3 Plus = Matrix3x3 + Matrix3x3;. | |
Matrix3x3 | operator- (const Matrix3x3 &mat) const |
Operator for Matrix3x3 Minus = Matrix3x3 - Matrix3x3;. | |
Matrix3x3 | operator* (const Matrix3x3 &mat) const |
Operator for Matrix3x3 Mul = Matrix3x3 * Matrix3x3;. | |
D3DXVECTOR3 | operator* (const D3DXVECTOR3 &v) const |
Operator for D3DXVECTOR3 Mul = Matrix3x3 * D3DXVECTOR3;. | |
Matrix3x3 | operator* (float s) const |
Operator for Matrix3x3 Mul = Matrix3x3 * float;. | |
Matrix3x3 | operator/ (float s) const |
Operator for Matrix3x3 Div = Matrix3x3 / float;. | |
Matrix3x3 & | operator+= (const Matrix3x3 &mat) |
Operator for Matrix3x3 += Matrix3x3. | |
Matrix3x3 & | operator-= (const Matrix3x3 &mat) |
Operator for Matrix3x3 -= Matrix3x3. | |
Matrix3x3 & | operator*= (const Matrix3x3 &mat) |
Operator for Matrix3x3 *= Matrix3x3. | |
Matrix3x3 & | operator*= (float s) |
Operator for Matrix3x3 *= float. | |
Matrix3x3 & | operator/= (float s) |
Operator for Matrix3x3 /= float. | |
operator D3DXMATRIX () const | |
Cast a Matrix3x3 to a Matrix4x4. | |
operator D3DXQUATERNION () const | |
Cast a Matrix3x3 to a Quat. | |
const D3DXVECTOR3 & | operator[] (int row) const |
D3DXVECTOR3 & | operator[] (int row) |
Public Attributes | |
float | m [3][3] |
Friends | |
Matrix3x3 | operator* (float s, const Matrix3x3 &mat) |
Operator for Matrix3x3 Mul = float * Matrix3x3;. | |
Matrix3x3 | operator/ (float s, const Matrix3x3 &mat) |
Operator for Matrix3x3 Div = float / Matrix3x3;. | |
3x3 matrix.
DirectX-compliant, ie row-column order, ie m[Row][Col]. Same as: m11 m12 m13 first row. m21 m22 m23 second row. m31 m32 m33 third row. Stored in memory as m11 m12 m13 m21...
Multiplication rules:
[x'y'z'] = [xyz][M]
x' = x*m11 + y*m21 + z*m31 y' = x*m12 + y*m22 + z*m32 z' = x*m13 + y*m23 + z*m33
|
inline |
Set a rotation matrix around the X axis.
1 0 0 RX = 0 cx sx 0 -sx cx
|
inline |
Set a rotation matrix around the Y axis.
cy 0 -sy RY = 0 1 0 sy 0 cy
|
inline |
Set a rotation matrix around the Z axis.
cz sz 0 RZ = -sz cz 0 0 0 1
|
inline |
Makes a skew-symmetric matrix (a.k.a.
Star(*) Matrix) [ 0.0 -a.z a.y ] [ a.z 0.0 -a.x ] [ -a.y a.x 0.0 ] This is also called a "cross matrix" since for any vectors A and B, A^B = Skew(A) * B = - B * Skew(A);