Matrix3x3 Class Reference

List of all members.

Public Methods

__forceinline Matrix3x3 ()
 Empty constructor.

__forceinline Matrix3x3 (float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22)
 Constructor from 9 values.

__forceinline Matrix3x3 (const Matrix3x3 &mat)
 Copy constructor.

__forceinline ~Matrix3x3 ()
 Destructor.

__forceinline Matrix3x3 & Set (float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22)
 Assign values.

__forceinline Matrix3x3 & SetScale (const Point &p)
 Sets the scale from a Point. The point is put on the diagonal.

__forceinline Matrix3x3 & SetScale (float sx, float sy, float sz)
 Sets the scale from floats. Values are put on the diagonal.

__forceinline Matrix3x3 & Scale (const Point &p)
 Scales from a Point. Each row is multiplied by a component.

__forceinline Matrix3x3 & Scale (float sx, float sy, float sz)
 Scales from floats. Each row is multiplied by a value.

__forceinline Matrix3x3 & Copy (const Matrix3x3 &source)
 Copy from a Matrix3x3.

__forceinline void GetRow (const udword r, Point &p) const
 Returns a row.

__forceinline void SetRow (const udword r, const Point &p)
 Sets a row.

__forceinline void GetCol (const udword c, Point &p) const
 Returns a column.

__forceinline void SetCol (const udword c, const Point &p)
 Sets a column.

__forceinline float Trace () const
 Computes the trace. The trace is the sum of the 3 diagonal components.

__forceinline Matrix3x3 & Zero ()
 Clears the matrix.

__forceinline Matrix3x3 & Identity ()
 Sets the identity matrix.

__forceinline bool IsIdentity () const
 Checks for identity.

__forceinline Matrix3x3 & SkewSymmetric (const Point &a)
 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 ].

__forceinline Matrix3x3 & Neg ()
 Negates the matrix.

__forceinline Matrix3x3 & Neg (const Matrix3x3 &mat)
 Neg from another matrix.

__forceinline Matrix3x3 & Add (const Matrix3x3 &mat)
 Add another matrix.

__forceinline Matrix3x3 & Sub (const Matrix3x3 &mat)
 Sub another matrix.

__forceinline Matrix3x3 & Mac (const Matrix3x3 &a, const Matrix3x3 &b, float s)
 Mac.

__forceinline Matrix3x3 & Mac (const Matrix3x3 &a, float s)
 Mac.

__forceinline Matrix3x3 & Mult (const Matrix3x3 &a, float s)
 this = A * s.

__forceinline Matrix3x3 & Mult (const Matrix3x3 &a, const Matrix3x3 &b)
 this = a * b.

__forceinline Matrix3x3 & MultAtB (const Matrix3x3 &a, const Matrix3x3 &b)
 this = transpose(a) * b.

__forceinline Matrix3x3 & MultABt (const Matrix3x3 &a, const Matrix3x3 &b)
 this = a * transpose(b).

Matrix3x3 & FromTo (const Point &from, const Point &to)
 Makes a rotation matrix mapping vector "from" to vector "to".

Matrix3x3 & RotX (float angle)
 Set a rotation matrix around the X axis.

Matrix3x3 & RotY (float angle)
 Set a rotation matrix around the Y axis.

Matrix3x3 & RotZ (float angle)
 Set a rotation matrix around the Z axis.

Matrix3x3 & Rot (float angle, const Point &axis)
 Make a rotation matrix about an arbitrary angle.

Matrix3x3 & Transpose ()
 Transpose the matrix.

Matrix3x3 & Transpose (const Matrix3x3 &a)
 this = Transpose(a).

float Determinant () const
 Compute the determinant of the matrix. We use the rule of Sarrus.

float CoFactor (ubyte row, ubyte column) const
 Compute a cofactor. Used for matrix inversion.

Matrix3x3 & Invert ()
 Invert the matrix. Determinant must be different from zero, else matrix can't be inverted.

Matrix3x3 & Exp (const Matrix3x3 &a)
 this = exp(a).

__forceinline Matrix3x3 operator+ (const Matrix3x3 &mat) const
 Operator for Matrix3x3 Plus = Matrix3x3 + Matrix3x3;.

__forceinline Matrix3x3 operator- (const Matrix3x3 &mat) const
 Operator for Matrix3x3 Minus = Matrix3x3 - Matrix3x3;.

__forceinline Matrix3x3 operator * (const Matrix3x3 &mat) const
 Operator for Matrix3x3 Mul = Matrix3x3 * Matrix3x3;.

__forceinline Point operator * (const Point &v) const
 Operator for Point Mul = Matrix3x3 * Point;.

__forceinline Matrix3x3 operator * (float s) const
 Operator for Matrix3x3 Mul = Matrix3x3 * float;.

__forceinline Matrix3x3 operator/ (float s) const
 Operator for Matrix3x3 Div = Matrix3x3 / float;.

__forceinline Matrix3x3 & operator+= (const Matrix3x3 &mat)
 Operator for Matrix3x3 += Matrix3x3.

__forceinline Matrix3x3 & operator-= (const Matrix3x3 &mat)
 Operator for Matrix3x3 -= Matrix3x3.

__forceinline Matrix3x3 & operator *= (const Matrix3x3 &mat)
 Operator for Matrix3x3 *= Matrix3x3.

__forceinline Matrix3x3 & operator *= (float s)
 Operator for Matrix3x3 *= float.

__forceinline Matrix3x3 & operator/= (float s)
 Operator for Matrix3x3 /= float.

 operator Matrix4x4 () const
 Cast a Matrix3x3 to a Matrix4x4.

 operator Quat () const
 Cast a Matrix3x3 to a Quat.


Friends

__forceinline friend Matrix3x3 operator * (float s, const Matrix3x3 &mat)
 Operator for Matrix3x3 Mul = float * Matrix3x3;.

__forceinline friend Matrix3x3 operator/ (float s, const Matrix3x3 &mat)
 Operator for Matrix3x3 Div = float / Matrix3x3;.


Detailed Description

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

Author:
Pierre Terdiman
Version:
1.0
Warning:
THIS IS ONLY A VERY LITTLE SUBSET OF THE ORIGINAL ICE CLASS


The documentation for this class was generated from the following files:


Flat Four Engine
Copyright (C) 2001 by 379, Inc.
This page generated by Doxygen