MDL SDK API nvidia_logo_transpbg.gif Up
Internal Storage Classes for Matrices

Storage class for matrix templates with support for xx, xy, xz, etc., members for appropriate dimensions. More...

Classes

struct  mi::math::Matrix_struct<T, ROW, COL>
 Storage class for a NxM-dimensional matrix class template of fixed dimensions. More...
 
struct  mi::math::Matrix_struct<T, 1, 1>
 Specialization for 1x1-matrix. More...
 
struct  mi::math::Matrix_struct<T, 2, 1>
 Specialization for 2x1-matrix. More...
 
struct  mi::math::Matrix_struct<T, 3, 1>
 Specialization for 3x1-matrix. More...
 
struct  mi::math::Matrix_struct<T, 4, 1>
 Specialization for 4x1-matrix. More...
 
struct  mi::math::Matrix_struct<T, 1, 2>
 Specialization for 1x2-matrix. More...
 
struct  mi::math::Matrix_struct<T, 2, 2>
 Specialization for 2x2-matrix. More...
 
struct  mi::math::Matrix_struct<T, 3, 2>
 Specialization for 3x2-matrix. More...
 
struct  mi::math::Matrix_struct<T, 4, 2>
 Specialization for 4x2-matrix. More...
 
struct  mi::math::Matrix_struct<T, 1, 3>
 Specialization for 1x3-matrix. More...
 
struct  mi::math::Matrix_struct<T, 2, 3>
 Specialization for 2x3-matrix. More...
 
struct  mi::math::Matrix_struct<T, 3, 3>
 Specialization for 3x3-matrix. More...
 
struct  mi::math::Matrix_struct<T, 4, 3>
 Specialization for 4x3-matrix. More...
 
struct  mi::math::Matrix_struct<T, 1, 4>
 Specialization for 1x4-matrix. More...
 
struct  mi::math::Matrix_struct<T, 2, 4>
 Specialization for 2x4-matrix. More...
 
struct  mi::math::Matrix_struct<T, 3, 4>
 Specialization for 3x4-matrix. More...
 
struct  mi::math::Matrix_struct<T, 4, 4>
 Specialization for 4x4-matrix. More...
 
class  mi::math::Matrix<T, ROW, COL>
 NxM-dimensional matrix class template of fixed dimensions. More...
 

Typedefs

typedef Matrix_struct<T, ROW, COL> mi::math::Matrix<T, ROW, COL>::Pod_type
 POD class corresponding to this matrix. More...
 
typedef Matrix_struct<T, ROW, COL> mi::math::Matrix<T, ROW, COL>::storage_type
 Storage class used by this matrix. More...
 
typedef T mi::math::Matrix<T, ROW, COL>::value_type
 Element type. More...
 
typedef Size mi::math::Matrix<T, ROW, COL>::size_type
 Size type, unsigned. More...
 
typedef Difference mi::math::Matrix<T, ROW, COL>::difference_type
 Difference type, signed. More...
 
typedef T * mi::math::Matrix<T, ROW, COL>::pointer
 Mutable pointer to element. More...
 
typedef const T * mi::math::Matrix<T, ROW, COL>::const_pointer
 Const pointer to element. More...
 
typedef T & mi::math::Matrix<T, ROW, COL>::reference
 Mutable reference to element. More...
 
typedef const T & mi::math::Matrix<T, ROW, COL>::const_reference
 Const reference to element. More...
 
typedef Vector<T, COL> mi::math::Matrix<T, ROW, COL>::Row_vector
 Associated row vector of dimension COL. More...
 
typedef Vector<T, ROW> mi::math::Matrix<T, ROW, COL>::Column_vector
 Associated column vector of dimension ROW. More...
 

Enumerations

enum  mi::math::Matrix<T, ROW, COL>::Transposed_copy_tag { mi::math::Matrix<T, ROW, COL>::TRANSPOSED_COPY_TAG }
 Enum type used to tag a special copy constructor that transposes the matrix while copying. More...
 

Functions

template<typename T , Size ROW, Size COL>
T * mi::math::matrix_base_ptr (Matrix_struct<T, ROW, COL> &mat)
 Returns the base pointer to the matrix data. More...
 
template<typename T , Size ROW, Size COL>
const T * mi::math::matrix_base_ptr (const Matrix_struct<T, ROW, COL> &mat)
 Returns the base pointer to the matrix data. More...
 
static Size mi::math::Matrix<T, ROW, COL>::size ()
 Constant size of the vector. More...
 
static Size mi::math::Matrix<T, ROW, COL>::max_size ()
 Constant maximum size of the vector. More...
 
T * mi::math::Matrix<T, ROW, COL>::begin ()
 Returns the pointer to the first matrix element. More...
 
T const * mi::math::Matrix<T, ROW, COL>::begin () const
 Returns the pointer to the first matrix element. More...
 
T * mi::math::Matrix<T, ROW, COL>::end ()
 Returns the past-the-end pointer. More...
 
T const * mi::math::Matrix<T, ROW, COL>::end () const
 Returns the past-the-end pointer. More...
 
Row_vectormi::math::Matrix<T, ROW, COL>::operator[] (Size row)
 Accesses the row-th row vector, 0 <= row < ROW. More...
 
const Row_vectormi::math::Matrix<T, ROW, COL>::operator[] (Size row) const
 Accesses the row-th row vector, 0 <= row < ROW. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix ()
 The default constructor leaves the vector elements uninitialized. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (const Matrix<T, ROW, COL> &other)=default
 Default copy constructor. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (const Matrix_struct<T, ROW, COL> &other)
 Constructor from underlying storage type. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T diag)
 Constructor initializes all matrix elements to zero and the diagonal elements to diag. More...
 
template<typename Iterator>
 mi::math::Matrix<T, ROW, COL>::Matrix (From_iterator_tag, Iterator p)
 Constructor requires the mi::math::FROM_ITERATOR tag as first argument and initializes the matrix elements with the first ROW times COL elements from the sequence starting at the iterator p. More...
 
template<typename T2>
 mi::math::Matrix<T, ROW, COL>::Matrix (T2 const (&array)[SIZE])
 Constructor initializes the matrix elements from an array of dimension ROW times COL. More...
 
template<typename T2>
 mi::math::Matrix<T, ROW, COL>::Matrix (const Matrix<T2, ROW, COL> &other)
 Template constructor that allows explicit conversions from other matrices with assignment compatible element value type. More...
 
template<typename T2>
 mi::math::Matrix<T, ROW, COL>::Matrix (const Matrix_struct<T2, ROW, COL> &other)
 Template constructor that allows explicit conversions from underlying storage type with assignment compatible element value type. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (Transposed_copy_tag, const Matrix<T, COL, ROW> &other)
 Constructor that initializes the matrix with the transpose matrix of other. More...
 
template<typename T2>
 mi::math::Matrix<T, ROW, COL>::Matrix (Transposed_copy_tag, const Matrix<T2, COL, ROW> &other)
 Template constructor that initializes the matrix with the transpose matrix of other that allows the explicit conversions from other matrices with assignment compatible element value type. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (const Row_vector &v0)
 Dedicated constructor, for ROW==1 only, that initializes matrix from one row vector v0. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (const Row_vector &v0, const Row_vector &v1)
 Dedicated constructor, for ROW==2 only, that initializes matrix from two row vectors (v0,v1). More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (const Row_vector &v0, const Row_vector &v1, const Row_vector &v2)
 Dedicated constructor, for ROW==3 only, that initializes matrix from three row vectors (v0,v1,v2). More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (const Row_vector &v0, const Row_vector &v1, const Row_vector &v2, const Row_vector &v3)
 Dedicated constructor, for ROW==4 only, that initializes matrix from four row vectors (v0,v1,v2,v3). More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T m0, T m1)
 2-element constructor, must be a 1x2 or 2x1 matrix. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T m0, T m1, T m2)
 3-element constructor, must be a 1x3 or 3x1 matrix. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T m0, T m1, T m2, T m3)
 4-element constructor, must be a 1x4, 2x2, or 4x1 matrix. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T m0, T m1, T m2, T m3, T m4, T m5)
 6-element constructor, must be a 2x3 or 3x2 matrix. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T m0, T m1, T m2, T m3, T m4, T m5, T m6, T m7)
 8-element constructor, must be a 2x4 or 4x2 matrix. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T m0, T m1, T m2, T m3, T m4, T m5, T m6, T m7, T m8)
 9-element constructor, must be a 3x3 matrix. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T m0, T m1, T m2, T m3, T m4, T m5, T m6, T m7, T m8, T m9, T m10, T m11)
 12-element constructor, must be a 3x4 or 4x3 matrix. More...
 
 mi::math::Matrix<T, ROW, COL>::Matrix (T m0, T m1, T m2, T m3, T m4, T m5, T m6, T m7, T m8, T m9, T m10, T m11, T m12, T m13, T m14, T m15)
 16-element constructor, must be a 4x4 matrix. More...
 
Matrixmi::math::Matrix<T, ROW, COL>::operator= (const Matrix &other)
 Assignment. More...
 
T & mi::math::Matrix<T, ROW, COL>::operator() (Size row, Size col)
 Accesses the (row,col)-th matrix element. More...
 
const T & mi::math::Matrix<T, ROW, COL>::operator() (Size row, Size col) const
 Accesses the (row, col)-th matrix element. More...
 
mi::math::Matrix<T, ROW, COL>::get (Size i) const
 Accesses the i-th matrix element, indexed in the order of the row-major memory layout. More...
 
mi::math::Matrix<T, ROW, COL>::get (Size row, Size col) const
 Accesses the (row, col)-th matrix element. More...
 
void mi::math::Matrix<T, ROW, COL>::set (Size i, T value)
 Sets the i-th matrix element to value, indexed in the order of the row-major memory layout. More...
 
void mi::math::Matrix<T, ROW, COL>::set (Size row, Size col, T value)
 Sets the i-th matrix element to value, indexed in the order of the row-major memory layout. More...
 
mi::math::Matrix<T, ROW, COL>::det33 () const
 Returns the determinant of the upper-left 3x3 sub-matrix. More...
 
bool mi::math::Matrix<T, ROW, COL>::invert ()
 Inverts this matrix and returns success or failure. More...
 
void mi::math::Matrix<T, ROW, COL>::transpose ()
 Transposes this matrix by exchanging rows and columns. More...
 
void mi::math::Matrix<T, ROW, COL>::translate (T x, T y, T z)
 Adds a relative translation to the matrix (by components). More...
 
void mi::math::Matrix<T, ROW, COL>::translate (const Vector< Float32, 3 > &vector)
 Adds a relative translation to the matrix (by vector). More...
 
void mi::math::Matrix<T, ROW, COL>::translate (const Vector< Float64, 3 > &vector)
 Adds a relative translation to the matrix (by vector). More...
 
void mi::math::Matrix<T, ROW, COL>::set_translation (T dx, T dy, T dz)
 Stores an absolute translation in the matrix (by component). More...
 
void mi::math::Matrix<T, ROW, COL>::set_translation (const Vector< Float32, 3 > &vector)
 Stores an absolute translation in the matrix (by vector). More...
 
void mi::math::Matrix<T, ROW, COL>::set_translation (const Vector< Float64, 3 > &vector)
 Stores an absolute translation in the matrix (by vector). More...
 
void mi::math::Matrix<T, ROW, COL>::rotate (T xangle, T yangle, T zangle)
 Adds a relative rotation to the matrix (Euler angles, by component). More...
 
void mi::math::Matrix<T, ROW, COL>::rotate (const Vector< Float32, 3 > &angles)
 Adds a relative rotation to the matrix (Euler angles, by vector). More...
 
void mi::math::Matrix<T, ROW, COL>::rotate (const Vector< Float64, 3 > &angles)
 Adds a relative rotation to the matrix (Euler angles, by vector). More...
 
void mi::math::Matrix<T, ROW, COL>::set_rotation (T x_angle, T y_angle, T z_angle)
 Stores an absolute rotation in the upper left 3x3 rotation matrix (Euler angles, by component). More...
 
void mi::math::Matrix<T, ROW, COL>::set_rotation (const Vector< Float32, 3 > &angles)
 Stores an absolute rotation in the upper left 3x3 rotation matrix (Euler angles, by vector). More...
 
void mi::math::Matrix<T, ROW, COL>::set_rotation (const Vector< Float64, 3 > &angles)
 Stores an absolute rotation in the upper left 3x3 rotation matrix (Euler angles, by vector). More...
 
void mi::math::Matrix<T, ROW, COL>::set_rotation (const Vector< Float32, 3 > &axis, Float64 angle)
 Stores an absolute rotation (by axis and angle). More...
 
void mi::math::Matrix<T, ROW, COL>::set_rotation (const Vector< Float64, 3 > &axis, Float64 angle)
 Stores an absolute rotation (by axis and angle). More...
 
void mi::math::Matrix<T, ROW, COL>::lookat (const Vector< Float32, 3 > &position, const Vector< Float32, 3 > &target, const Vector< Float32, 3 > &up)
 Sets a transformation matrix based on a given center, a reference point, and a direction. More...
 
void mi::math::Matrix<T, ROW, COL>::lookat (const Vector< Float64, 3 > &position, const Vector< Float64, 3 > &target, const Vector< Float64, 3 > &up)
 Sets a transformation matrix based on a given center, a reference point, and a direction. More...
 
template<typename T , Size ROW, Size COL>
bool mi::math::operator== (const Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Returns true if lhs is elementwise equal to rhs. More...
 
template<typename T , Size ROW, Size COL>
bool mi::math::operator!= (const Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Returns true if lhs is elementwise not equal to rhs. More...
 
template<typename T , Size ROW, Size COL>
bool mi::math::operator< (const Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Returns true if lhs is lexicographically less than rhs. More...
 
template<typename T , Size ROW, Size COL>
bool mi::math::operator<= (const Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Returns true if lhs is lexicographically less than or equal to rhs. More...
 
template<typename T , Size ROW, Size COL>
bool mi::math::operator> (const Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Returns true if lhs is lexicographically greater than rhs. More...
 
template<typename T , Size ROW, Size COL>
bool mi::math::operator>= (const Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Returns true if lhs is lexicographically greater than or equal to rhs. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> & mi::math::operator+= (Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Adds rhs elementwise to lhs and returns the modified lhs. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> & mi::math::operator-= (Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Subtracts rhs elementwise from lhs and returns the modified lhs. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator+ (const Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Adds lhs and rhs elementwise and returns the new result. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator- (const Matrix<T, ROW, COL> &lhs, const Matrix<T, ROW, COL> &rhs)
 Subtracts rhs elementwise from lhs and returns the new result. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator- (const Matrix<T, ROW, COL> &mat)
 Negates the matrix mat elementwise and returns the new result. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> & mi::math::operator*= (Matrix<T, ROW, COL> &lhs, const Matrix<T, COL, COL> &rhs)
 Performs matrix multiplication, lhs times rhs, assigns it to lhs, and returns the modified lhs. More...
 
template<typename T , Size ROW1, Size COL1, Size ROW2, Size COL2>
Matrix<T, ROW1, COL2> mi::math::operator* (const Matrix<T, ROW1, COL1> &lhs, const Matrix<T, ROW2, COL2> &rhs)
 Performs matrix multiplication, lhs times rhs, and returns the new result. More...
 
template<typename T , Size ROW, Size COL, Size DIM>
Vector<T, ROW> mi::math::operator* (const Matrix<T, ROW, COL> &mat, const Vector<T, DIM> &vec)
 Multiplies the (column) vector vec from the right with the matrix mat and returns the resulting vector. More...
 
template<Size DIM, typename T , Size ROW, Size COL>
Vector<T, COL> mi::math::operator* (const Vector<T, DIM> &vec, const Matrix<T, ROW, COL> &mat)
 Multiplies the (row) vector vec from the left with the matrix mat and returns the resulting vector. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> & mi::math::operator*= (Matrix<T, ROW, COL> &mat, T factor)
 Multiplies the matrix mat elementwise with the scalar factor and returns the modified matrix mat. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator* (const Matrix<T, ROW, COL> &mat, T factor)
 Multiplies the matrix mat elementwise with the scalar factor and returns the new result. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator* (T factor, const Matrix<T, ROW, COL> &mat)
 Multiplies the matrix mat elementwise with the scalar factor and returns the new result. More...
 
template<Size NEW_ROW, Size NEW_COL, typename T , Size ROW, Size COL>
Matrix< T, NEW_ROW, NEW_COLmi::math::sub_matrix (const Matrix<T, ROW, COL> &mat)
 Returns the upper-left sub-matrix of size NEW_ROW times NEW_COL. More...
 
template<typename T , Size ROW, Size COL>
Matrix<T, COL, ROW> mi::math::transpose (const Matrix<T, ROW, COL> &mat)
 Returns the transpose of the matrix mat by exchanging rows and columns. More...
 
template<typename T , typename U>
mi::math::transform_point (const Matrix<T, 4, 4> &mat, const U &point)
 Returns a transformed 1D point by applying the full transformation in the 4x4 matrix mat on the 1D point point, which includes the translation. More...
 
template<typename T , typename U>
Vector<U, 2> mi::math::transform_point (const Matrix<T, 4, 4> &mat, const Vector<U, 2> &point)
 Returns a transformed 2D point by applying the full transformation in the 4x4 matrix mat on the 2D point point, which includes the translation. More...
 
template<typename T , typename U>
Vector<U, 3> mi::math::transform_point (const Matrix<T, 4, 3> &mat, const Vector<U, 3> &point)
 Returns a transformed 3D point by applying the full transformation in the 4x3 matrix mat on the 3D point point, which includes the translation. More...
 
template<typename T , typename U>
Vector<U, 3> mi::math::transform_point (const Matrix<T, 4, 4> &mat, const Vector<U, 3> &point)
 Returns a transformed 3D point by applying the full transformation in the 4x4 matrix mat on the 3D point point, which includes the translation. More...
 
template<typename T , typename U>
Vector<U, 4> mi::math::transform_point (const Matrix<T, 4, 4> &mat, const Vector<U, 4> &point)
 Returns a transformed 4D point by applying the full transformation in the 4x4 matrix mat on the 4D point point, which includes the translation. More...
 
template<typename T , typename U>
mi::math::transform_vector (const Matrix<T, 4, 4> &mat, const U &vector)
 Returns a transformed 1D vector by applying the 1x1 linear sub-transformation in the 4x4 matrix mat on the 1D vector vector, which excludes the translation. More...
 
template<typename T , typename U>
Vector<U, 2> mi::math::transform_vector (const Matrix<T, 4, 4> &mat, const Vector<U, 2> &vector)
 Returns a transformed 2D vector by applying the 2x2 linear sub-transformation in the 4x4 matrix mat on the 2D vector vector, which excludes the translation. More...
 
template<typename T , typename U>
Vector<U, 3> mi::math::transform_vector (const Matrix<T, 3, 3> &mat, const Vector<U, 3> &vector)
 Returns a transformed 3D vector by applying the 3x3 matrix mat transformation on the 3D vector vector. More...
 
template<typename T , typename U>
Vector<U, 3> mi::math::transform_vector (const Matrix<T, 4, 3> &mat, const Vector<U, 3> &vector)
 Returns a transformed 3D vector by applying the 3x3 linear sub-transformation in the 4x3 matrix mat on the 3D vector vector, which excludes the translation. More...
 
template<typename T , typename U>
Vector<U, 3> mi::math::transform_vector (const Matrix<T, 4, 4> &mat, const Vector<U, 3> &vector)
 Returns a transformed 3D vector by applying the 3x3 linear sub-transformation in the 4x4 matrix mat on the 3D vector vector, which excludes the translation. More...
 
template<typename T , typename U>
Vector<U, 3> mi::math::transform_normal_inv (const Matrix<T, 3, 3> &inv_mat, const Vector<U, 3> &normal)
 Returns an inverse transformed 3D normal vector by applying the 3x3 transposed linear transformation in the matrix inv_mat on the 3D normal vector normal. More...
 
template<typename T , typename U>
Vector<U, 3> mi::math::transform_normal_inv (const Matrix<T, 4, 4> &inv_mat, const Vector<U, 3> &normal)
 Returns an inverse transformed 3D normal vector by applying the 3x3 transposed linear sub-transformation in the 4x4 matrix inv_mat on the 3D normal vector normal. More...
 
template<typename T , typename U>
Vector<U, 3> mi::math::transform_normal (const Matrix<T, 4, 4> &mat, const Vector<U, 3> &normal)
 Returns a transformed 3D normal vector by applying the 3x3 transposed linear sub-transformation in the inverse of the 4x4 matrix mat on the 3D normal vector normal. More...
 

Variables

mi::math::Matrix_struct<T, ROW, COL>::elements [ROW *COL]
 general case matrix elements. More...
 
mi::math::Matrix_struct<T, 1, 1>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 2, 1>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 2, 1>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 3, 1>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 3, 1>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 3, 1>::zx
 zx-element. More...
 
mi::math::Matrix_struct<T, 4, 1>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 4, 1>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 4, 1>::zx
 zx-element. More...
 
mi::math::Matrix_struct<T, 4, 1>::wx
 wx-element. More...
 
mi::math::Matrix_struct<T, 1, 2>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 1, 2>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 2, 2>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 2, 2>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 2, 2>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 2, 2>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 3, 2>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 3, 2>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 3, 2>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 3, 2>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 3, 2>::zx
 zx-element. More...
 
mi::math::Matrix_struct<T, 3, 2>::zy
 zy-element. More...
 
mi::math::Matrix_struct<T, 4, 2>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 4, 2>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 4, 2>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 4, 2>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 4, 2>::zx
 zx-element. More...
 
mi::math::Matrix_struct<T, 4, 2>::zy
 zy-element. More...
 
mi::math::Matrix_struct<T, 4, 2>::wx
 wx-element. More...
 
mi::math::Matrix_struct<T, 4, 2>::wy
 wy-element. More...
 
mi::math::Matrix_struct<T, 1, 3>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 1, 3>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 1, 3>::xz
 xz-element. More...
 
mi::math::Matrix_struct<T, 2, 3>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 2, 3>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 2, 3>::xz
 xz-element. More...
 
mi::math::Matrix_struct<T, 2, 3>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 2, 3>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 2, 3>::yz
 yz-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::xz
 xz-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::yz
 yz-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::zx
 zx-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::zy
 zy-element. More...
 
mi::math::Matrix_struct<T, 3, 3>::zz
 zz-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::xz
 xz-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::yz
 yz-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::zx
 zx-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::zy
 zy-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::zz
 zz-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::wx
 wx-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::wy
 wy-element. More...
 
mi::math::Matrix_struct<T, 4, 3>::wz
 wz-element. More...
 
mi::math::Matrix_struct<T, 1, 4>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 1, 4>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 1, 4>::xz
 xz-element. More...
 
mi::math::Matrix_struct<T, 1, 4>::xw
 xw-element. More...
 
mi::math::Matrix_struct<T, 2, 4>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 2, 4>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 2, 4>::xz
 xz-element. More...
 
mi::math::Matrix_struct<T, 2, 4>::xw
 xw-element. More...
 
mi::math::Matrix_struct<T, 2, 4>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 2, 4>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 2, 4>::yz
 yz-element. More...
 
mi::math::Matrix_struct<T, 2, 4>::yw
 yw-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::xz
 xz-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::xw
 xw-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::yz
 yz-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::yw
 yw-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::zx
 zx-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::zy
 zy-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::zz
 zz-element. More...
 
mi::math::Matrix_struct<T, 3, 4>::zw
 zw-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::xx
 xx-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::xy
 xy-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::xz
 xz-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::xw
 xw-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::yx
 yx-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::yy
 yy-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::yz
 yz-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::yw
 yw-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::zx
 zx-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::zy
 zy-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::zz
 zz-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::zw
 zw-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::wx
 wx-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::wy
 wy-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::wz
 wz-element. More...
 
mi::math::Matrix_struct<T, 4, 4>::ww
 ww-element. More...
 
static const Size mi::math::Matrix<T, ROW, COL>::ROWS = ROW
 Constant number of rows of the matrix. More...
 
static const Size mi::math::Matrix<T, ROW, COL>::COLUMNS = COL
 Constant number of columns of the matrix. More...
 
static const Size mi::math::Matrix<T, ROW, COL>::SIZE = ROW*COL
 Constant size of the matrix. More...
 

Detailed Description

Storage class for matrix templates with support for xx, xy, xz, etc., members for appropriate dimensions.

Use the mi::math::Matrix template in your programs and this storage class only if you need a POD type, for example for parameter passing.

Include File:
#include <mi/math/matrix.h>

Typedef Documentation

 Column_vector

template<typename T , Size ROW, Size COL>
typedef Vector<T,ROW> mi::math::Matrix<T, ROW, COL>::Column_vector

Associated column vector of dimension ROW.

 const_pointer

template<typename T , Size ROW, Size COL>
typedef const T* mi::math::Matrix<T, ROW, COL>::const_pointer

Const pointer to element.

 const_reference

template<typename T , Size ROW, Size COL>
typedef const T& mi::math::Matrix<T, ROW, COL>::const_reference

Const reference to element.

 difference_type

template<typename T , Size ROW, Size COL>
typedef Difference mi::math::Matrix<T, ROW, COL>::difference_type

Difference type, signed.

 Pod_type

template<typename T , Size ROW, Size COL>
typedef Matrix_struct<T,ROW,COL> mi::math::Matrix<T, ROW, COL>::Pod_type

POD class corresponding to this matrix.

 pointer

template<typename T , Size ROW, Size COL>
typedef T* mi::math::Matrix<T, ROW, COL>::pointer

Mutable pointer to element.

 reference

template<typename T , Size ROW, Size COL>
typedef T& mi::math::Matrix<T, ROW, COL>::reference

Mutable reference to element.

 Row_vector

template<typename T , Size ROW, Size COL>
typedef Vector<T,COL> mi::math::Matrix<T, ROW, COL>::Row_vector

Associated row vector of dimension COL.

 size_type

template<typename T , Size ROW, Size COL>
typedef Size mi::math::Matrix<T, ROW, COL>::size_type

Size type, unsigned.

 storage_type

template<typename T , Size ROW, Size COL>
typedef Matrix_struct<T,ROW,COL> mi::math::Matrix<T, ROW, COL>::storage_type

Storage class used by this matrix.

 value_type

template<typename T , Size ROW, Size COL>
typedef T mi::math::Matrix<T, ROW, COL>::value_type

Element type.

Enumeration Type Documentation

 Transposed_copy_tag

template<typename T , Size ROW, Size COL>
enum mi::math::Matrix::Transposed_copy_tag

Enum type used to tag a special copy constructor that transposes the matrix while copying.

Enumerator
TRANSPOSED_COPY_TAG 

Enum value used to call a special copy constructor that transposes the matrix while copying.

Function Documentation

 begin() [1/2]

template<typename T , Size ROW, Size COL>
T * mi::math::Matrix<T, ROW, COL>::begin ( )
inline

Returns the pointer to the first matrix element.

 begin() [2/2]

template<typename T , Size ROW, Size COL>
T const * mi::math::Matrix<T, ROW, COL>::begin ( ) const
inline

Returns the pointer to the first matrix element.

 det33()

template<typename T , Size ROW, Size COL>
T mi::math::Matrix<T, ROW, COL>::det33 ( ) const
inline

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

Precondition
(ROW==3 or ROW==4) and (COL==3 or COL==4)

 end() [1/2]

template<typename T , Size ROW, Size COL>
T * mi::math::Matrix<T, ROW, COL>::end ( )
inline

Returns the past-the-end pointer.

The range [begin(),end()) forms the range over all ROW times COL many matrix elements.

 end() [2/2]

template<typename T , Size ROW, Size COL>
T const * mi::math::Matrix<T, ROW, COL>::end ( ) const
inline

Returns the past-the-end pointer.

The range [begin(),end()) forms the range over all ROW times COL many matrix elements.

 get() [1/2]

template<typename T , Size ROW, Size COL>
T mi::math::Matrix<T, ROW, COL>::get ( Size  i) const
inline

Accesses the i-th matrix element, indexed in the order of the row-major memory layout.

Precondition
0 <= i < ROW*COL

 get() [2/2]

template<typename T , Size ROW, Size COL>
T mi::math::Matrix<T, ROW, COL>::get ( Size  row,
Size  col 
) const
inline

Accesses the (row, col)-th matrix element.

Precondition
0 <= row < ROW and 0 <= col < COL

 invert()

template<typename T , Size ROW, Size COL>
bool mi::math::Matrix<T, ROW, COL>::invert ( )
inline

Inverts this matrix and returns success or failure.

The matrix cannot be inverted if it is singular or if it is non-square.

 lookat() [1/2]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::lookat ( const Vector< Float32, 3 > &  position,
const Vector< Float32, 3 > &  target,
const Vector< Float32, 3 > &  up 
)
inline

Sets a transformation matrix based on a given center, a reference point, and a direction.

The transformation is computed such that position is mapped to the origin, target is mapped to the negative Z-axis, and the up direction is mapped to the positive Y-axis.

 lookat() [2/2]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::lookat ( const Vector< Float64, 3 > &  position,
const Vector< Float64, 3 > &  target,
const Vector< Float64, 3 > &  up 
)
inline

Sets a transformation matrix based on a given center, a reference point, and a direction.

The transformation is computed such that the origin is mapped to position, the negative Z-axis is mapped to the target direction, and the positive Y-axis is mapped to the up direction.

 Matrix() [1/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( )
inline

The default constructor leaves the vector elements uninitialized.

 Matrix() [2/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( const Matrix<T, ROW, COL> &  other)
default

Default copy constructor.

 Matrix() [3/22]

template<typename T , Size ROW, Size COL>
template<typename T2>
mi::math::Matrix<T, ROW, COL>::Matrix ( const Matrix<T2, ROW, COL> &  other)
inlineexplicit

Template constructor that allows explicit conversions from other matrices with assignment compatible element value type.

 Matrix() [4/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( const Matrix_struct<T, ROW, COL> &  other)
inline

Constructor from underlying storage type.

 Matrix() [5/22]

template<typename T , Size ROW, Size COL>
template<typename T2>
mi::math::Matrix<T, ROW, COL>::Matrix ( const Matrix_struct<T2, ROW, COL> &  other)
inlineexplicit

Template constructor that allows explicit conversions from underlying storage type with assignment compatible element value type.

 Matrix() [6/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( const Row_vector v0)
inlineexplicit

Dedicated constructor, for ROW==1 only, that initializes matrix from one row vector v0.

Precondition
ROW == 1

 Matrix() [7/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( const Row_vector v0,
const Row_vector v1 
)
inline

Dedicated constructor, for ROW==2 only, that initializes matrix from two row vectors (v0,v1).

Precondition
ROW == 2

 Matrix() [8/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( const Row_vector v0,
const Row_vector v1,
const Row_vector v2 
)
inline

Dedicated constructor, for ROW==3 only, that initializes matrix from three row vectors (v0,v1,v2).

Precondition
ROW == 3

 Matrix() [9/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( const Row_vector v0,
const Row_vector v1,
const Row_vector v2,
const Row_vector v3 
)
inline

Dedicated constructor, for ROW==4 only, that initializes matrix from four row vectors (v0,v1,v2,v3).

Precondition
ROW == 4

 Matrix() [10/22]

template<typename T , Size ROW, Size COL>
template<typename Iterator>
mi::math::Matrix<T, ROW, COL>::Matrix ( From_iterator_tag  ,
Iterator  p 
)
inline

Constructor requires the mi::math::FROM_ITERATOR tag as first argument and initializes the matrix elements with the first ROW times COL elements from the sequence starting at the iterator p.

Iterator must be a model of an input iterator. The value type of Iterator must be assignment compatible with the matrix elements type T.

An example:

std::vector<int> data( 42, 42); // 42 elements of value 42
NxM-dimensional matrix class template of fixed dimensions.
Definition: matrix.h:367
@ FROM_ITERATOR
Unique enumerator of From_iterator_tag.
Definition: vector.h:37

 Matrix() [11/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( diag)
inlineexplicit

Constructor initializes all matrix elements to zero and the diagonal elements to diag.

Examples are diag==0 to create the null matrix and diag==1 to create the unit matrix.

Parameters
diagvalue for diagonal elements.

 Matrix() [12/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( m0,
m1 
)
inline

2-element constructor, must be a 1x2 or 2x1 matrix.

The elements are given in row-major order.

 Matrix() [13/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( m0,
m1,
m2 
)
inline

3-element constructor, must be a 1x3 or 3x1 matrix.

The elements are given in row-major order.

 Matrix() [14/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( m0,
m1,
m2,
m3 
)
inline

4-element constructor, must be a 1x4, 2x2, or 4x1 matrix.

The elements are given in row-major order.

 Matrix() [15/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( m0,
m1,
m2,
m3,
m4,
m5 
)
inline

6-element constructor, must be a 2x3 or 3x2 matrix.

The elements are given in row-major order.

 Matrix() [16/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( m0,
m1,
m2,
m3,
m4,
m5,
m6,
m7 
)
inline

8-element constructor, must be a 2x4 or 4x2 matrix.

The elements are given in row-major order.

 Matrix() [17/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( m0,
m1,
m2,
m3,
m4,
m5,
m6,
m7,
m8 
)
inline

9-element constructor, must be a 3x3 matrix.

The elements are given in row-major order.

 Matrix() [18/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( m0,
m1,
m2,
m3,
m4,
m5,
m6,
m7,
m8,
m9,
m10,
m11 
)
inline

12-element constructor, must be a 3x4 or 4x3 matrix.

The elements are given in row-major order.

 Matrix() [19/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( m0,
m1,
m2,
m3,
m4,
m5,
m6,
m7,
m8,
m9,
m10,
m11,
m12,
m13,
m14,
m15 
)
inline

16-element constructor, must be a 4x4 matrix.

The elements are given in row-major order.

 Matrix() [20/22]

template<typename T , Size ROW, Size COL>
template<typename T2>
mi::math::Matrix<T, ROW, COL>::Matrix ( T2 const (&)  array[SIZE])
inlineexplicit

Constructor initializes the matrix elements from an array of dimension ROW times COL.

The value type T2 of the array must be assignment compatible with the matrix elements type T.

An example that initializes a 2x2 unit matrix from an array:

int data[4] = { 1, 0, 0, 1};

 Matrix() [21/22]

template<typename T , Size ROW, Size COL>
mi::math::Matrix<T, ROW, COL>::Matrix ( Transposed_copy_tag  ,
const Matrix<T, COL, ROW> &  other 
)
inline

Constructor that initializes the matrix with the transpose matrix of other.

 Matrix() [22/22]

template<typename T , Size ROW, Size COL>
template<typename T2>
mi::math::Matrix<T, ROW, COL>::Matrix ( Transposed_copy_tag  ,
const Matrix<T2, COL, ROW> &  other 
)
inline

Template constructor that initializes the matrix with the transpose matrix of other that allows the explicit conversions from other matrices with assignment compatible element value type.

 matrix_base_ptr() [1/2]

template<typename T , Size ROW, Size COL>
const T * mi::math::matrix_base_ptr ( const Matrix_struct<T, ROW, COL> &  mat)
inline

Returns the base pointer to the matrix data.

 matrix_base_ptr() [2/2]

template<typename T , Size ROW, Size COL>
T * mi::math::matrix_base_ptr ( Matrix_struct<T, ROW, COL> &  mat)
inline

Returns the base pointer to the matrix data.

 max_size()

template<typename T , Size ROW, Size COL>
static Size mi::math::Matrix<T, ROW, COL>::max_size ( )
inlinestatic

Constant maximum size of the vector.

 operator!=()

template<typename T , Size ROW, Size COL>
bool mi::math::operator!= ( const Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)
inline

Returns true if lhs is elementwise not equal to rhs.

 operator()() [1/2]

template<typename T , Size ROW, Size COL>
T & mi::math::Matrix<T, ROW, COL>::operator() ( Size  row,
Size  col 
)
inline

Accesses the (row,col)-th matrix element.

Precondition
0 <= row < ROW and 0 <= col < COL

 operator()() [2/2]

template<typename T , Size ROW, Size COL>
const T & mi::math::Matrix<T, ROW, COL>::operator() ( Size  row,
Size  col 
) const
inline

Accesses the (row, col)-th matrix element.

Precondition
0 <= row < ROW and 0 <= col < COL

 operator*() [1/5]

template<typename T , Size ROW, Size COL, Size DIM>
Vector<T, ROW> mi::math::operator* ( const Matrix<T, ROW, COL> &  mat,
const Vector<T, DIM> &  vec 
)
inline

Multiplies the (column) vector vec from the right with the matrix mat and returns the resulting vector.

The result vector has the same dimension as the number of rows in the matrix mat.

Precondition
The vector vec must have the same dimension as the number of columns in the matrix mat.

 operator*() [2/5]

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator* ( const Matrix<T, ROW, COL> &  mat,
factor 
)
inline

Multiplies the matrix mat elementwise with the scalar factor and returns the new result.

 operator*() [3/5]

template<typename T , Size ROW1, Size COL1, Size ROW2, Size COL2>
Matrix<T, ROW1, COL2> mi::math::operator* ( const Matrix<T, ROW1, COL1> &  lhs,
const Matrix<T, ROW2, COL2> &  rhs 
)
inline

Performs matrix multiplication, lhs times rhs, and returns the new result.

The matrices can be of different sizes, but the number of columns of lhs must be equal to the number of rows of rhs. The result matrix has then the size (number of rows of lhs) times (number of columns of rhs).

 operator*() [4/5]

template<Size DIM, typename T , Size ROW, Size COL>
Vector<T, COL> mi::math::operator* ( const Vector<T, DIM> &  vec,
const Matrix<T, ROW, COL> &  mat 
)
inline

Multiplies the (row) vector vec from the left with the matrix mat and returns the resulting vector.

The result vector has the same dimension as the number of columns in the matrix mat.

Precondition
The vector vec must have the same dimension as the number of rows in the matrix mat.

 operator*() [5/5]

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator* ( factor,
const Matrix<T, ROW, COL> &  mat 
)
inline

Multiplies the matrix mat elementwise with the scalar factor and returns the new result.

 operator*=() [1/2]

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> & mi::math::operator*= ( Matrix<T, ROW, COL> &  lhs,
const Matrix<T, COL, COL> &  rhs 
)
inline

Performs matrix multiplication, lhs times rhs, assigns it to lhs, and returns the modified lhs.

The matrix lhs must be of size ROW times COL, and the matrix rhs must be of size COL times COL. For mixed size matrix multiplications, see the mi::math::operator*() on matrices.

 operator*=() [2/2]

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> & mi::math::operator*= ( Matrix<T, ROW, COL> &  mat,
factor 
)
inline

Multiplies the matrix mat elementwise with the scalar factor and returns the modified matrix mat.

 operator+()

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator+ ( const Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)
inline

Adds lhs and rhs elementwise and returns the new result.

 operator+=()

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> & mi::math::operator+= ( Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)

Adds rhs elementwise to lhs and returns the modified lhs.

 operator-() [1/2]

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator- ( const Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)
inline

Subtracts rhs elementwise from lhs and returns the new result.

 operator-() [2/2]

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> mi::math::operator- ( const Matrix<T, ROW, COL> &  mat)
inline

Negates the matrix mat elementwise and returns the new result.

 operator-=()

template<typename T , Size ROW, Size COL>
Matrix<T, ROW, COL> & mi::math::operator-= ( Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)

Subtracts rhs elementwise from lhs and returns the modified lhs.

 operator<()

template<typename T , Size ROW, Size COL>
bool mi::math::operator< ( const Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)
inline

Returns true if lhs is lexicographically less than rhs.

See also
Definition: Lexicographic order and comparison

 operator<=()

template<typename T , Size ROW, Size COL>
bool mi::math::operator<= ( const Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)
inline

Returns true if lhs is lexicographically less than or equal to rhs.

See also
Definition: Lexicographic order and comparison

 operator=()

template<typename T , Size ROW, Size COL>
Matrix & mi::math::Matrix<T, ROW, COL>::operator= ( const Matrix<T, ROW, COL> &  other)
inline

Assignment.

 operator==()

template<typename T , Size ROW, Size COL>
bool mi::math::operator== ( const Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)
inline

Returns true if lhs is elementwise equal to rhs.

 operator>()

template<typename T , Size ROW, Size COL>
bool mi::math::operator> ( const Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)
inline

Returns true if lhs is lexicographically greater than rhs.

See also
Definition: Lexicographic order and comparison

 operator>=()

template<typename T , Size ROW, Size COL>
bool mi::math::operator>= ( const Matrix<T, ROW, COL> &  lhs,
const Matrix<T, ROW, COL> &  rhs 
)
inline

Returns true if lhs is lexicographically greater than or equal to rhs.

See also
Definition: Lexicographic order and comparison

 operator[]() [1/2]

template<typename T , Size ROW, Size COL>
Row_vector & mi::math::Matrix<T, ROW, COL>::operator[] ( Size  row)
inline

Accesses the row-th row vector, 0 <= row < ROW.

 operator[]() [2/2]

template<typename T , Size ROW, Size COL>
const Row_vector & mi::math::Matrix<T, ROW, COL>::operator[] ( Size  row) const
inline

Accesses the row-th row vector, 0 <= row < ROW.

 rotate() [1/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::rotate ( const Vector< Float32, 3 > &  angles)
inline

Adds a relative rotation to the matrix (Euler angles, by vector).

The rotation is given by XYZ Euler angles (in radians). The elements in the last column of the matrix remain unchanged.

 rotate() [2/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::rotate ( const Vector< Float64, 3 > &  angles)
inline

Adds a relative rotation to the matrix (Euler angles, by vector).

The rotation is given by XYZ Euler angles (in radians). The elements in the last column of the matrix remain unchanged.

 rotate() [3/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::rotate ( xangle,
yangle,
zangle 
)
inline

Adds a relative rotation to the matrix (Euler angles, by component).

The rotation is given by XYZ Euler angles (in radians). The elements in the last column of the matrix remain unchanged.

 set() [1/2]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set ( Size  i,
value 
)
inline

Sets the i-th matrix element to value, indexed in the order of the row-major memory layout.

Precondition
0 <= i < ROW*COL

 set() [2/2]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set ( Size  row,
Size  col,
value 
)
inline

Sets the i-th matrix element to value, indexed in the order of the row-major memory layout.

Precondition
0 <= row < ROW and 0 <= col < COL

 set_rotation() [1/5]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set_rotation ( const Vector< Float32, 3 > &  angles)
inline

Stores an absolute rotation in the upper left 3x3 rotation matrix (Euler angles, by vector).

The rotation is given by XYZ Euler angles (in radians). The other matrix elements remain unchanged.

 set_rotation() [2/5]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set_rotation ( const Vector< Float32, 3 > &  axis,
Float64  angle 
)
inline

Stores an absolute rotation (by axis and angle).

The computed rotation matrix describes a rotation by the given angle (in radians) around the given axis. The other matrix elements are set to 0 and 1, respectively.

Precondition
axis is normalized

 set_rotation() [3/5]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set_rotation ( const Vector< Float64, 3 > &  angles)
inline

Stores an absolute rotation in the upper left 3x3 rotation matrix (Euler angles, by vector).

The rotation is given by XYZ Euler angles (in radians). The other matrix elements remain unchanged.

 set_rotation() [4/5]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set_rotation ( const Vector< Float64, 3 > &  axis,
Float64  angle 
)
inline

Stores an absolute rotation (by axis and angle).

The computed rotation matrix describes a rotation by the given angle (in radians) around the given axis. The other matrix elements are set to 0 and 1, respectively.

Precondition
axis is normalized

 set_rotation() [5/5]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set_rotation ( x_angle,
y_angle,
z_angle 
)
inline

Stores an absolute rotation in the upper left 3x3 rotation matrix (Euler angles, by component).

The rotation is given by XYZ Euler angles (in radians). The other matrix elements remain unchanged.

 set_translation() [1/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set_translation ( const Vector< Float32, 3 > &  vector)
inline

Stores an absolute translation in the matrix (by vector).

The other matrix elements remain unchanged.

 set_translation() [2/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set_translation ( const Vector< Float64, 3 > &  vector)
inline

Stores an absolute translation in the matrix (by vector).

The other matrix elements remain unchanged.

 set_translation() [3/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::set_translation ( dx,
dy,
dz 
)
inline

Stores an absolute translation in the matrix (by component).

The other matrix elements remain unchanged.

 size()

template<typename T , Size ROW, Size COL>
static Size mi::math::Matrix<T, ROW, COL>::size ( )
inlinestatic

Constant size of the vector.

 sub_matrix()

template<Size NEW_ROW, Size NEW_COL, typename T , Size ROW, Size COL>
Matrix< T, NEW_ROW, NEW_COL > mi::math::sub_matrix ( const Matrix<T, ROW, COL> &  mat)
inline

Returns the upper-left sub-matrix of size NEW_ROW times NEW_COL.

Precondition
NEW_ROW <= ROW and NEW_COL <= COL.

 transform_normal()

template<typename T , typename U>
Vector<U, 3> mi::math::transform_normal ( const Matrix<T, 4, 4> &  mat,
const Vector<U, 3> &  normal 
)
inline

Returns a transformed 3D normal vector by applying the 3x3 transposed linear sub-transformation in the inverse of the 4x4 matrix mat on the 3D normal vector normal.

Note that in general, a normal vector is transformed by the transposed inverse matrix (compared to a point transformation) and the inverse is often costly to compute. So, if you wish to compute the inverse once and keep it to transform several normal vectors, you can use the mi::math::transform_normal_inv() function, which accepts the inverse matrix as argument.

If the linear sub-matrix cannot be inverted, this function returns the unchanged normal.

The normal vector normal is considered to be a row vector, which is multiplied from the left with the transposed upper-left 3x3 sub-matrix of the inverse of mat.

Parameters
mat4x4 transformation matrix
normalnormal vector to transform

 transform_normal_inv() [1/2]

template<typename T , typename U>
Vector<U, 3> mi::math::transform_normal_inv ( const Matrix<T, 3, 3> &  inv_mat,
const Vector<U, 3> &  normal 
)
inline

Returns an inverse transformed 3D normal vector by applying the 3x3 transposed linear transformation in the matrix inv_mat on the 3D normal vector normal.

Note that in general, a normal vector is transformed by the transposed inverse matrix (compared to a point transformation). The inverse is often costly to compute, why one typically keeps the inverse stored and this function operates then on the inverse matrix to properly transform normal vectors. If you need to transform only one normal, you can also consider the mi::math::transform_normal() function, which includes the inverse computation.

The normal vector normal is considered to be a row vector, which is multiplied from the left with the transposed upper-left 3x3 sub-matrix of inv_mat.

Parameters
inv_matinverse 4x4 transformation matrix
normalnormal vector to transform

 transform_normal_inv() [2/2]

template<typename T , typename U>
Vector<U, 3> mi::math::transform_normal_inv ( const Matrix<T, 4, 4> &  inv_mat,
const Vector<U, 3> &  normal 
)
inline

Returns an inverse transformed 3D normal vector by applying the 3x3 transposed linear sub-transformation in the 4x4 matrix inv_mat on the 3D normal vector normal.

Note that in general, a normal vector is transformed by the transposed inverse matrix (compared to a point transformation). The inverse is often costly to compute, why one typically keeps the inverse stored and this function operates then on the inverse matrix to properly transform normal vectors. If you need to transform only one normal, you can also consider the mi::math::transform_normal() function, which includes the inverse computation.

The normal vector normal is considered to be a row vector, which is multiplied from the left with the transposed upper-left 3x3 sub-matrix of inv_mat.

Parameters
inv_matinverse 4x4 transformation matrix
normalnormal vector to transform

 transform_point() [1/5]

template<typename T , typename U>
Vector<U, 3> mi::math::transform_point ( const Matrix<T, 4, 3> &  mat,
const Vector<U, 3> &  point 
)
inline

Returns a transformed 3D point by applying the full transformation in the 4x3 matrix mat on the 3D point point, which includes the translation.

The point point is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x3 transformation matrix
pointpoint to transform

 transform_point() [2/5]

template<typename T , typename U>
U mi::math::transform_point ( const Matrix<T, 4, 4> &  mat,
const U &  point 
)
inline

Returns a transformed 1D point by applying the full transformation in the 4x4 matrix mat on the 1D point point, which includes the translation.

The point point is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x4 transformation matrix
pointpoint to transform

 transform_point() [3/5]

template<typename T , typename U>
Vector<U, 2> mi::math::transform_point ( const Matrix<T, 4, 4> &  mat,
const Vector<U, 2> &  point 
)
inline

Returns a transformed 2D point by applying the full transformation in the 4x4 matrix mat on the 2D point point, which includes the translation.

The point point is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x4 transformation matrix
pointpoint to transform

 transform_point() [4/5]

template<typename T , typename U>
Vector<U, 3> mi::math::transform_point ( const Matrix<T, 4, 4> &  mat,
const Vector<U, 3> &  point 
)
inline

Returns a transformed 3D point by applying the full transformation in the 4x4 matrix mat on the 3D point point, which includes the translation.

The point point is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x4 transformation matrix
pointpoint to transform

 transform_point() [5/5]

template<typename T , typename U>
Vector<U, 4> mi::math::transform_point ( const Matrix<T, 4, 4> &  mat,
const Vector<U, 4> &  point 
)
inline

Returns a transformed 4D point by applying the full transformation in the 4x4 matrix mat on the 4D point point, which includes the translation.

The point point is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x4 transformation matrix
pointpoint to transform

 transform_vector() [1/5]

template<typename T , typename U>
Vector<U, 3> mi::math::transform_vector ( const Matrix<T, 3, 3> &  mat,
const Vector<U, 3> &  vector 
)
inline

Returns a transformed 3D vector by applying the 3x3 matrix mat transformation on the 3D vector vector.

The vector vector is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat3x3 transformation matrix
vectorvector to transform

 transform_vector() [2/5]

template<typename T , typename U>
Vector<U, 3> mi::math::transform_vector ( const Matrix<T, 4, 3> &  mat,
const Vector<U, 3> &  vector 
)
inline

Returns a transformed 3D vector by applying the 3x3 linear sub-transformation in the 4x3 matrix mat on the 3D vector vector, which excludes the translation.

The vector vector is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x3 transformation matrix
vectorvector to transform

 transform_vector() [3/5]

template<typename T , typename U>
U mi::math::transform_vector ( const Matrix<T, 4, 4> &  mat,
const U &  vector 
)
inline

Returns a transformed 1D vector by applying the 1x1 linear sub-transformation in the 4x4 matrix mat on the 1D vector vector, which excludes the translation.

The vector vector is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x4 transformation matrix
vectorvector to transform

 transform_vector() [4/5]

template<typename T , typename U>
Vector<U, 2> mi::math::transform_vector ( const Matrix<T, 4, 4> &  mat,
const Vector<U, 2> &  vector 
)
inline

Returns a transformed 2D vector by applying the 2x2 linear sub-transformation in the 4x4 matrix mat on the 2D vector vector, which excludes the translation.

The vector vector is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x4 transformation matrix
vectorvector to transform

 transform_vector() [5/5]

template<typename T , typename U>
Vector<U, 3> mi::math::transform_vector ( const Matrix<T, 4, 4> &  mat,
const Vector<U, 3> &  vector 
)
inline

Returns a transformed 3D vector by applying the 3x3 linear sub-transformation in the 4x4 matrix mat on the 3D vector vector, which excludes the translation.

The vector vector is considered to be a row vector, which is multiplied from the left with the matrix mat.

Parameters
mat4x4 transformation matrix
vectorvector to transform

 translate() [1/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::translate ( const Vector< Float32, 3 > &  vector)
inline

Adds a relative translation to the matrix (by vector).

The other matrix elements remain unchanged.

 translate() [2/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::translate ( const Vector< Float64, 3 > &  vector)
inline

Adds a relative translation to the matrix (by vector).

The other matrix elements remain unchanged.

 translate() [3/3]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::translate ( x,
y,
z 
)
inline

Adds a relative translation to the matrix (by components).

The other matrix elements remain unchanged.

 transpose() [1/2]

template<typename T , Size ROW, Size COL>
void mi::math::Matrix<T, ROW, COL>::transpose ( )
inline

Transposes this matrix by exchanging rows and columns.

Precondition
ROW==COL

For transposing non-square matrices see the mi::math::transpose() function.

 transpose() [2/2]

template<typename T , Size ROW, Size COL>
Matrix<T, COL, ROW> mi::math::transpose ( const Matrix<T, ROW, COL> &  mat)
inline

Returns the transpose of the matrix mat by exchanging rows and columns.

Variable Documentation

 COLUMNS

template<typename T , Size ROW, Size COL>
const Size mi::math::Matrix<T, ROW, COL>::COLUMNS = COL
static

Constant number of columns of the matrix.

 elements

template<typename T , Size ROW, Size COL>
T mi::math::Matrix_struct<T, ROW, COL>::elements[ROW *COL]

general case matrix elements.

 ROWS

template<typename T , Size ROW, Size COL>
const Size mi::math::Matrix<T, ROW, COL>::ROWS = ROW
static

Constant number of rows of the matrix.

 SIZE

template<typename T , Size ROW, Size COL>
const Size mi::math::Matrix<T, ROW, COL>::SIZE = ROW*COL
static

Constant size of the matrix.

 ww

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::ww

ww-element.

 wx [1/4]

template<typename T>
T mi::math::Matrix_struct<T, 4, 1>::wx

wx-element.

 wx [2/4]

template<typename T>
T mi::math::Matrix_struct<T, 4, 2>::wx

wx-element.

 wx [3/4]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::wx

wx-element.

 wx [4/4]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::wx

wx-element.

 wy [1/3]

template<typename T>
T mi::math::Matrix_struct<T, 4, 2>::wy

wy-element.

 wy [2/3]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::wy

wy-element.

 wy [3/3]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::wy

wy-element.

 wz [1/2]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::wz

wz-element.

 wz [2/2]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::wz

wz-element.

 xw [1/4]

template<typename T>
T mi::math::Matrix_struct<T, 1, 4>::xw

xw-element.

 xw [2/4]

template<typename T>
T mi::math::Matrix_struct<T, 2, 4>::xw

xw-element.

 xw [3/4]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::xw

xw-element.

 xw [4/4]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::xw

xw-element.

 xx [1/16]

template<typename T>
T mi::math::Matrix_struct<T, 1, 1>::xx

xx-element.

 xx [2/16]

template<typename T>
T mi::math::Matrix_struct<T, 2, 1>::xx

xx-element.

 xx [3/16]

template<typename T>
T mi::math::Matrix_struct<T, 3, 1>::xx

xx-element.

 xx [4/16]

template<typename T>
T mi::math::Matrix_struct<T, 4, 1>::xx

xx-element.

 xx [5/16]

template<typename T>
T mi::math::Matrix_struct<T, 1, 2>::xx

xx-element.

 xx [6/16]

template<typename T>
T mi::math::Matrix_struct<T, 2, 2>::xx

xx-element.

 xx [7/16]

template<typename T>
T mi::math::Matrix_struct<T, 3, 2>::xx

xx-element.

 xx [8/16]

template<typename T>
T mi::math::Matrix_struct<T, 4, 2>::xx

xx-element.

 xx [9/16]

template<typename T>
T mi::math::Matrix_struct<T, 1, 3>::xx

xx-element.

 xx [10/16]

template<typename T>
T mi::math::Matrix_struct<T, 2, 3>::xx

xx-element.

 xx [11/16]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::xx

xx-element.

 xx [12/16]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::xx

xx-element.

 xx [13/16]

template<typename T>
T mi::math::Matrix_struct<T, 1, 4>::xx

xx-element.

 xx [14/16]

template<typename T>
T mi::math::Matrix_struct<T, 2, 4>::xx

xx-element.

 xx [15/16]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::xx

xx-element.

 xx [16/16]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::xx

xx-element.

 xy [1/12]

template<typename T>
T mi::math::Matrix_struct<T, 1, 2>::xy

xy-element.

 xy [2/12]

template<typename T>
T mi::math::Matrix_struct<T, 2, 2>::xy

xy-element.

 xy [3/12]

template<typename T>
T mi::math::Matrix_struct<T, 3, 2>::xy

xy-element.

 xy [4/12]

template<typename T>
T mi::math::Matrix_struct<T, 4, 2>::xy

xy-element.

 xy [5/12]

template<typename T>
T mi::math::Matrix_struct<T, 1, 3>::xy

xy-element.

 xy [6/12]

template<typename T>
T mi::math::Matrix_struct<T, 2, 3>::xy

xy-element.

 xy [7/12]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::xy

xy-element.

 xy [8/12]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::xy

xy-element.

 xy [9/12]

template<typename T>
T mi::math::Matrix_struct<T, 1, 4>::xy

xy-element.

 xy [10/12]

template<typename T>
T mi::math::Matrix_struct<T, 2, 4>::xy

xy-element.

 xy [11/12]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::xy

xy-element.

 xy [12/12]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::xy

xy-element.

 xz [1/8]

template<typename T>
T mi::math::Matrix_struct<T, 1, 3>::xz

xz-element.

 xz [2/8]

template<typename T>
T mi::math::Matrix_struct<T, 2, 3>::xz

xz-element.

 xz [3/8]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::xz

xz-element.

 xz [4/8]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::xz

xz-element.

 xz [5/8]

template<typename T>
T mi::math::Matrix_struct<T, 1, 4>::xz

xz-element.

 xz [6/8]

template<typename T>
T mi::math::Matrix_struct<T, 2, 4>::xz

xz-element.

 xz [7/8]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::xz

xz-element.

 xz [8/8]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::xz

xz-element.

 yw [1/3]

template<typename T>
T mi::math::Matrix_struct<T, 2, 4>::yw

yw-element.

 yw [2/3]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::yw

yw-element.

 yw [3/3]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::yw

yw-element.

 yx [1/12]

template<typename T>
T mi::math::Matrix_struct<T, 2, 1>::yx

yx-element.

 yx [2/12]

template<typename T>
T mi::math::Matrix_struct<T, 3, 1>::yx

yx-element.

 yx [3/12]

template<typename T>
T mi::math::Matrix_struct<T, 4, 1>::yx

yx-element.

 yx [4/12]

template<typename T>
T mi::math::Matrix_struct<T, 2, 2>::yx

yx-element.

 yx [5/12]

template<typename T>
T mi::math::Matrix_struct<T, 3, 2>::yx

yx-element.

 yx [6/12]

template<typename T>
T mi::math::Matrix_struct<T, 4, 2>::yx

yx-element.

 yx [7/12]

template<typename T>
T mi::math::Matrix_struct<T, 2, 3>::yx

yx-element.

 yx [8/12]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::yx

yx-element.

 yx [9/12]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::yx

yx-element.

 yx [10/12]

template<typename T>
T mi::math::Matrix_struct<T, 2, 4>::yx

yx-element.

 yx [11/12]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::yx

yx-element.

 yx [12/12]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::yx

yx-element.

 yy [1/9]

template<typename T>
T mi::math::Matrix_struct<T, 2, 2>::yy

yy-element.

 yy [2/9]

template<typename T>
T mi::math::Matrix_struct<T, 3, 2>::yy

yy-element.

 yy [3/9]

template<typename T>
T mi::math::Matrix_struct<T, 4, 2>::yy

yy-element.

 yy [4/9]

template<typename T>
T mi::math::Matrix_struct<T, 2, 3>::yy

yy-element.

 yy [5/9]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::yy

yy-element.

 yy [6/9]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::yy

yy-element.

 yy [7/9]

template<typename T>
T mi::math::Matrix_struct<T, 2, 4>::yy

yy-element.

 yy [8/9]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::yy

yy-element.

 yy [9/9]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::yy

yy-element.

 yz [1/6]

template<typename T>
T mi::math::Matrix_struct<T, 2, 3>::yz

yz-element.

 yz [2/6]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::yz

yz-element.

 yz [3/6]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::yz

yz-element.

 yz [4/6]

template<typename T>
T mi::math::Matrix_struct<T, 2, 4>::yz

yz-element.

 yz [5/6]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::yz

yz-element.

 yz [6/6]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::yz

yz-element.

 zw [1/2]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::zw

zw-element.

 zw [2/2]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::zw

zw-element.

 zx [1/8]

template<typename T>
T mi::math::Matrix_struct<T, 3, 1>::zx

zx-element.

 zx [2/8]

template<typename T>
T mi::math::Matrix_struct<T, 4, 1>::zx

zx-element.

 zx [3/8]

template<typename T>
T mi::math::Matrix_struct<T, 3, 2>::zx

zx-element.

 zx [4/8]

template<typename T>
T mi::math::Matrix_struct<T, 4, 2>::zx

zx-element.

 zx [5/8]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::zx

zx-element.

 zx [6/8]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::zx

zx-element.

 zx [7/8]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::zx

zx-element.

 zx [8/8]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::zx

zx-element.

 zy [1/6]

template<typename T>
T mi::math::Matrix_struct<T, 3, 2>::zy

zy-element.

 zy [2/6]

template<typename T>
T mi::math::Matrix_struct<T, 4, 2>::zy

zy-element.

 zy [3/6]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::zy

zy-element.

 zy [4/6]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::zy

zy-element.

 zy [5/6]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::zy

zy-element.

 zy [6/6]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::zy

zy-element.

 zz [1/4]

template<typename T>
T mi::math::Matrix_struct<T, 3, 3>::zz

zz-element.

 zz [2/4]

template<typename T>
T mi::math::Matrix_struct<T, 4, 3>::zz

zz-element.

 zz [3/4]

template<typename T>
T mi::math::Matrix_struct<T, 3, 4>::zz

zz-element.

 zz [4/4]

template<typename T>
T mi::math::Matrix_struct<T, 4, 4>::zz

zz-element.