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

Basic 4x4 matrix data type. More...

#include <mitsuba/core/matrix.h>

+ Inheritance diagram for mitsuba::Matrix4x4:

Public Member Functions

 Matrix4x4 ()
 
 Matrix4x4 (Float value)
 Initialize the matrix with constant entries. More...
 
 Matrix4x4 (const Float _m[4][4])
 Initialize the matrix from a given 4x4 array. More...
 
 Matrix4x4 (const Float _m[16])
 Initialize the matrix from a given (float) 4x4 array in row-major order. More...
 
 Matrix4x4 (const Vector4 &v1, const Vector4 &v2, const Vector4 &v3, const Vector4 &v4)
 Initialize the matrix from four 4D column vectors. More...
 
 Matrix4x4 (Stream *stream)
 Unserialize a matrix from a stream. More...
 
 Matrix4x4 (const Matrix< 4, 4, Float > &mtx)
 Copy constructor. More...
 
 Matrix4x4 (Float a00, Float a01, Float a02, Float a03, Float a10, Float a11, Float a12, Float a13, Float a20, Float a21, Float a22, Float a23, Float a30, Float a31, Float a32, Float a33)
 Initialize with the given values. More...
 
Float det3x3 () const
 Return the determinant of the upper left 3x3 sub-matrix. More...
 
Vector4 operator* (const Vector4 &v) const
 Matrix-vector multiplication. More...
 
Matrix4x4 operator* (Float value) const
 Scalar multiplication (creates a temporary) More...
 
Matrix4x4operator= (const Matrix< 4, 4, Float > &mat)
 Assignment operator. More...
 
Vector4 row (int i) const
 Return a row by index. More...
 
Vector4 col (int i) const
 Return a column by index. More...
 
- Public Member Functions inherited from mitsuba::Matrix< 4, 4, 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< 4, 4, Float >
Float m [M][N]
 
- Static Protected Member Functions inherited from mitsuba::Matrix< 4, 4, 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 4x4 matrix data type.

Constructor & Destructor Documentation

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

Initialize the matrix with constant entries.

mitsuba::Matrix4x4::Matrix4x4 ( const Float  _m[4][4])
inlineexplicit

Initialize the matrix from a given 4x4 array.

mitsuba::Matrix4x4::Matrix4x4 ( const Float  _m[16])
inlineexplicit

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

mitsuba::Matrix4x4::Matrix4x4 ( const Vector4 v1,
const Vector4 v2,
const Vector4 v3,
const Vector4 v4 
)
inlineexplicit

Initialize the matrix from four 4D column vectors.

mitsuba::Matrix4x4::Matrix4x4 ( Stream stream)
inlineexplicit

Unserialize a matrix from a stream.

mitsuba::Matrix4x4::Matrix4x4 ( const Matrix< 4, 4, Float > &  mtx)
inline

Copy constructor.

mitsuba::Matrix4x4::Matrix4x4 ( Float  a00,
Float  a01,
Float  a02,
Float  a03,
Float  a10,
Float  a11,
Float  a12,
Float  a13,
Float  a20,
Float  a21,
Float  a22,
Float  a23,
Float  a30,
Float  a31,
Float  a32,
Float  a33 
)
inline

Initialize with the given values.

Member Function Documentation

Vector4 mitsuba::Matrix4x4::col ( int  i) const
inline

Return a column by index.

Float mitsuba::Matrix4x4::det3x3 ( ) const
inline

Return the determinant of the upper left 3x3 sub-matrix.

Vector4 mitsuba::Matrix4x4::operator* ( const Vector4 v) const
inline

Matrix-vector multiplication.

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

Scalar multiplication (creates a temporary)

Matrix4x4& mitsuba::Matrix4x4::operator= ( const Matrix< 4, 4, Float > &  mat)
inline

Assignment operator.

Vector4 mitsuba::Matrix4x4::row ( int  i) const
inline

Return a row by index.


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