KrisLibrary
1.0.0
|
A 3x3 matrix class. More...
#include <primitives.h>
Public Member Functions | |
Matrix3 (const Matrix3 &) | |
Matrix3 (Real) | |
Matrix3 (const Real[3][3]) | |
Matrix3 (const Real *) | |
Matrix3 (const Vector3 &xb, const Vector3 &yb, const Vector3 &zb) | |
bool | operator== (const Matrix3 &) const |
bool | operator!= (const Matrix3 &) const |
const Matrix3 & | operator= (const Matrix3 &) |
void | operator+= (const Matrix3 &) |
void | operator-= (const Matrix3 &) |
void | operator*= (const Matrix3 &) |
void | operator*= (Real scale) |
void | operator/= (Real scale) |
operator const Real * () const | |
Real & | operator() (int i, int j) |
const Real & | operator() (int i, int j) const |
void | mul (const Matrix3 &a, Real b) |
void | div (const Matrix3 &a, Real b) |
void | set (const Matrix3 &) |
void | set (Real) |
void | set (const Real[3][3]) |
void | set (const Real[9]) |
void | set (const Vector3 &xb, const Vector3 &yb, const Vector3 &zb) |
void | setZero () |
void | setIdentity () |
void | setDiagonal (const Vector3 &) |
void | setTranspose (const Matrix3 &) |
void | setNegative (const Matrix3 &) |
bool | setInverse (const Matrix3 &) |
void | setScale (Real s) |
void | setScale (Real sx, Real sy, Real sz) |
void | setCrossProduct (const Vector3 &) |
sets the matrix that performs the vector cross product | |
void | setRotateX (Real rads) |
sets the matrix that rotates ccw by rads around the x axis | |
void | setRotateY (Real rads) |
sets the matrix that rotates ccw by rads around the x axis | |
void | setRotateZ (Real rads) |
sets the matrix that rotates ccw by rads around the x axis | |
void | setOuterProduct (const Vector3 &a, const Vector3 &b) |
this = a*b^t | |
void | get (Matrix3 &) const |
void | get (Real[3][3]) const |
void | get (Real[9]) const |
void | get (Vector3 &xb, Vector3 &yb, Vector3 &zb) const |
void | getTranspose (Matrix3 &) const |
void | getNegative (Matrix3 &) const |
bool | getInverse (Matrix3 &) const |
void | getCrossProduct (Vector3 &) const |
if this is a cross-product matrix, returns the vector that performs the cross product | |
void | inplaceTranspose () |
void | inplaceNegative () |
bool | inplaceInverse () |
void | inplaceMul (Real s) |
void | inplaceDiv (Real s) |
void | inplaceRowScale (Real sx, Real sy, Real sz) |
void | inplaceColScale (Real sx, Real sy, Real sz) |
bool | isZero (Real eps=Zero) const |
bool | isIdentity (Real eps=Zero) const |
bool | isEqual (const Matrix3 &, Real eps=Zero) const |
bool | isInvertible (Real eps=Zero) const |
Real | cofactor (int i, int j) const |
Real | determinant () const |
Real | trace () const |
Real | minElement (int *i=NULL, int *j=NULL) const |
Real | maxElement (int *i=NULL, int *j=NULL) const |
Real | minAbsElement (int *i=NULL, int *j=NULL) const |
Real | maxAbsElement (int *i=NULL, int *j=NULL) const |
bool | Read (File &) |
bool | Write (File &) const |
Real * | col (int j) |
Real * | col1 () |
Real * | col2 () |
Real * | col3 () |
const Real * | col (int j) const |
const Real * | col1 () const |
const Real * | col2 () const |
const Real * | col3 () const |
void | setCol (int j, const Vector3 &v) |
void | setCol1 (const Vector3 &v) |
void | setCol2 (const Vector3 &v) |
void | setCol3 (const Vector3 &v) |
void | setRow (int i, const Vector3 &v) |
void | setRow1 (const Vector3 &v) |
void | setRow2 (const Vector3 &v) |
void | setRow3 (const Vector3 &v) |
void | getCol (int j, Vector3 &v) const |
void | getCol1 (Vector3 &v) const |
void | getCol2 (Vector3 &v) const |
void | getCol3 (Vector3 &v) const |
void | getRow (int i, Vector3 &v) const |
void | getRow1 (Vector3 &v) const |
void | getRow2 (Vector3 &v) const |
void | getRow3 (Vector3 &v) const |
Vector3 | getXBasis () const |
Vector3 | getYBasis () const |
Vector3 | getZBasis () const |
Vector2 | getXBasis2D () const |
Vector2 | getYBasis2D () const |
Vector2 | getTranslation2D () const |
matrix ops (this = a op b) | |
void | add (const Matrix3 &a, const Matrix3 &b) |
void | sub (const Matrix3 &a, const Matrix3 &b) |
void | mul (const Matrix3 &a, const Matrix3 &b) |
void | mulTransposeA (const Matrix3 &a, const Matrix3 &b) |
void | mulTransposeB (const Matrix3 &a, const Matrix3 &b) |
vector ops (out = this op a) | |
void | mul (const Vector3 &a, Vector3 &out) const |
Note: result is incorrect if out = a. | |
void | mulTranspose (const Vector3 &a, Vector3 &out) const |
homogeneous vector ops (3rd coord is homogeneous coord) | |
void | mulPoint (const Vector2 &a, Vector2 &out) const |
assumes w = 1 | |
void | mulVector (const Vector2 &a, Vector2 &out) const |
assumes w = 0 | |
void | mulVectorTranspose (const Vector2 &a, Vector2 &out) const |
Public Attributes | |
Real | data [3][3] |
column major format | |
A 3x3 matrix class.
The elements can be accessed as (i,j) for i,j in [0,2].
WARNING: For historical reasons, the data array data[2][2] is in column major format, e.g. data[i][j] = element (j,i).