Mitsuba Renderer  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mitsuba::Matrix3x3 Struct Reference

Basic 3x3 matrix data type. More...

#include <mitsuba/core/matrix.h>

+ Inheritance diagram for mitsuba::Matrix3x3:

Public Member Functions

 Matrix3x3 ()
 
 Matrix3x3 (Float value)
 Initialize the matrix with constant entries. More...
 
 Matrix3x3 (const Float _m[3][3])
 Initialize the matrix from a given 3x3 array. More...
 
 Matrix3x3 (const Float _m[9])
 Initialize the matrix from a given (float) 3x3 array in row-major order. More...
 
 Matrix3x3 (const Vector &v1, const Vector &v2, const Vector &v3)
 Initialize the matrix from three 3D column vectors. More...
 
 Matrix3x3 (Stream *stream)
 Unserialize a matrix from a stream. More...
 
 Matrix3x3 (const Matrix< 3, 3, Float > &mtx)
 Copy constructor. More...
 
 Matrix3x3 (Float a00, Float a01, Float a02, Float a10, Float a11, Float a12, Float a20, Float a21, Float a22)
 Initialize with the given values. More...
 
Float det () const
 Return the determinant (Faster than Matrix::det()) More...
 
Vector operator* (const Vector &v) const
 Matrix-vector multiplication. More...
 
Vector preMult (const Vector &v) const
 multiply the matrix by transpose of v, returns the transpose of the line vector. More...
 
Matrix3x3 operator* (Float value) const
 Scalar multiplication (creates a temporary) More...
 
Matrix3x3operator= (const Matrix< 3, 3, Float > &mat)
 Assignment operator. More...
 
Vector3 row (int i) const
 Return a row by index. More...
 
Vector3 col (int i) const
 Return a column by index. More...
 
- Public Member Functions inherited from mitsuba::Matrix< 3, 3, Float >
 Matrix ()
 Construct a new MxN matrix without initializing it. More...
 
 Matrix (Floatvalue)
 Initialize the matrix with constant entries. More...
 
 Matrix (const Float_m[M][N])
 Initialize the matrix from a given MxN array. More...
 
 Matrix (const Float_m[M *N])
 Initialize the matrix from a given (flat) MxN array in row-major order. More...
 
 Matrix (Stream *stream)
 Unserialize a matrix from a stream. More...
 
 Matrix (const Matrix &mtx)
 Copy constructor. More...
 
void setIdentity ()
 Initialize with the identity matrix. More...
 
void setZero ()
 Initialize with zeroes. More...
 
Floatoperator() (int i, int j)
 Indexing operator. More...
 
const Floatoperator() (int i, int j) const
 Indexing operator (const verions) More...
 
bool operator== (const Matrix &mat) const
 Equality operator. More...
 
bool operator!= (const Matrix &mat) const
 Inequality operator. More...
 
Matrixoperator= (const Matrix &mat)
 Assignment operator. More...
 
Matrix operator+ (const Matrix &mat) const
 Matrix addition (returns a temporary) More...
 
Matrix operator+ (Floatvalue) const
 Matrix-scalar addition (returns a temporary) More...
 
const Matrixoperator+= (const Matrix &mat)
 Matrix addition. More...
 
const Matrixoperator+= (Floatvalue)
 Matrix-scalar addition. More...
 
Matrix operator- (const Matrix &mat) const
 Matrix subtraction (returns a temporary) More...
 
Matrix operator- (Floatvalue) const
 Matrix-scalar subtraction (returns a temporary) More...
 
const Matrixoperator- (Floatvalue)
 Matrix-scalar subtraction. More...
 
Matrix operator- () const
 Component-wise negation. More...
 
const Matrixoperator-= (const Matrix &mat)
 Matrix subtraction. More...
 
const Matrixoperator-= (Floatvalue)
 Matrix-scalar addition. More...
 
Matrix operator* (Floatvalue) const
 Scalar multiplication (creates a temporary) More...
 
const Matrixoperator*= (Floatvalue)
 Scalar multiplication. More...
 
const Matrixoperator*= (const Matrix &mat)
 Matrix multiplication (for square matrices) More...
 
Matrix operator/ (Floatvalue) const
 Scalar division (creates a temporary) More...
 
const Matrixoperator/= (Floatvalue)
 Scalar division. More...
 
Float trace () const
 Compute the trace of a square matrix. More...
 
Float frob () const
 Compute the Frobenius norm. More...
 
bool lu (Matrix &LU, int piv[M], int &pivsign) const
 Compute the LU decomposition of a matrix. More...
 
bool chol (Matrix &L) const
 
void cholSolve (const Matrix< M, K, Float > &B, Matrix< M, K, Float > &X) const
 
void luSolve (const Matrix< M, K, Float > &B, Matrix< M, K, Float > &X, int piv[M]) const
 
Float luDet (int pivsign) const
 Compute the determinant of a decomposed matrix created by lu() More...
 
Float cholDet () const
 Compute the determinant of a decomposed matrix created by chol() More...
 
bool isZero () const
 Check if the matrix is identically zero. More...
 
bool isIdentity () const
 Test if this is the identity matrix. More...
 
Float det () const
 Compute the determinant of a square matrix (internally creates a LU decomposition) More...
 
bool invert (Matrix &target) const
 Compute the inverse of a square matrix using the Gauss-Jordan algorithm. More...
 
void symEig (Matrix &Q, Floatd[M]) const
 Perform a symmetric eigendecomposition of a square matrix into Q and D. More...
 
void transpose (Matrix< N, M, Float > &target) const
 Compute the transpose of this matrix. More...
 
void serialize (Stream *stream) const
 Serialize the matrix to a stream. More...
 
std::string toString () const
 Return a string representation. More...
 

Additional Inherited Members

- Public Attributes inherited from mitsuba::Matrix< 3, 3, Float >
Float m [M][N]
 
- Static Protected Member Functions inherited from mitsuba::Matrix< 3, 3, Float >
static void tred2 (FloatV[M][N], Floatd[N], Floate[N])
 Symmetric Householder reduction to tridiagonal form. More...
 
static void tql2 (FloatV[M][N], Floatd[N], Floate[N])
 Symmetric tridiagonal QL algorithm. More...
 

Detailed Description

Basic 3x3 matrix data type.

Constructor & Destructor Documentation

mitsuba::Matrix3x3::Matrix3x3 ( )
inline
mitsuba::Matrix3x3::Matrix3x3 ( Float  value)
inlineexplicit

Initialize the matrix with constant entries.

mitsuba::Matrix3x3::Matrix3x3 ( const Float  _m[3][3])
inlineexplicit

Initialize the matrix from a given 3x3 array.

mitsuba::Matrix3x3::Matrix3x3 ( const Float  _m[9])
inlineexplicit

Initialize the matrix from a given (float) 3x3 array in row-major order.

mitsuba::Matrix3x3::Matrix3x3 ( const Vector v1,
const Vector v2,
const Vector v3 
)
inlineexplicit

Initialize the matrix from three 3D column vectors.

mitsuba::Matrix3x3::Matrix3x3 ( Stream stream)
inlineexplicit

Unserialize a matrix from a stream.

mitsuba::Matrix3x3::Matrix3x3 ( const Matrix< 3, 3, Float > &  mtx)
inline

Copy constructor.

mitsuba::Matrix3x3::Matrix3x3 ( Float  a00,
Float  a01,
Float  a02,
Float  a10,
Float  a11,
Float  a12,
Float  a20,
Float  a21,
Float  a22 
)
inline

Initialize with the given values.

Member Function Documentation

Vector3 mitsuba::Matrix3x3::col ( int  i) const
inline

Return a column by index.

Float mitsuba::Matrix3x3::det ( ) const
inline

Return the determinant (Faster than Matrix::det())

Vector mitsuba::Matrix3x3::operator* ( const Vector v) const
inline

Matrix-vector multiplication.

Matrix3x3 mitsuba::Matrix3x3::operator* ( Float  value) const
inline

Scalar multiplication (creates a temporary)

Matrix3x3& mitsuba::Matrix3x3::operator= ( const Matrix< 3, 3, Float > &  mat)
inline

Assignment operator.

Vector mitsuba::Matrix3x3::preMult ( const Vector v) const
inline

multiply the matrix by transpose of v, returns the transpose of the line vector.

Vector3 mitsuba::Matrix3x3::row ( int  i) const
inline

Return a row by index.


The documentation for this struct was generated from the following file: