Open CASCADE Technology  7.5.0
Public Member Functions | Static Public Member Functions
NCollection_Mat4< Element_t > Class Template Reference

Generic matrix of 4 x 4 elements. To be used in conjunction with NCollection_Vec4 entities. Originally introduced for 3D space projection and orientation operations. More...

#include <NCollection_Mat4.hxx>

Public Member Functions

 NCollection_Mat4 ()
 Empty constructor. Construct the zero matrix. More...
 
template<typename OtherElement_t >
 NCollection_Mat4 (const NCollection_Mat4< OtherElement_t > &theOtherMat4)
 Conversion constructor (explicitly converts some 4 x 4 matrix with other element type to a new 4 x 4 matrix with the element type Element_t, whose elements are static_cast'ed corresponding elements of theOtherMat4 matrix) More...
 
Element_t GetValue (const size_t theRow, const size_t theCol) const
 Get element at the specified row and column. More...
 
Element_t & ChangeValue (const size_t theRow, const size_t theCol)
 Access element at the specified row and column. More...
 
void SetValue (const size_t theRow, const size_t theCol, const Element_t theValue)
 Set value for the element specified by row and columns. More...
 
NCollection_Vec4< Element_t > GetRow (const size_t theRow) const
 Get vector of elements for the specified row. More...
 
void SetRow (const size_t theRow, const NCollection_Vec3< Element_t > &theVec)
 Change first 3 row values by the passed vector. More...
 
void SetRow (const size_t theRow, const NCollection_Vec4< Element_t > &theVec)
 Set row values by the passed 4 element vector. More...
 
NCollection_Vec4< Element_t > GetColumn (const size_t theCol) const
 Get vector of elements for the specified column. More...
 
void SetColumn (const size_t theCol, const NCollection_Vec3< Element_t > &theVec)
 Change first 3 column values by the passed vector. More...
 
void SetColumn (const size_t theCol, const NCollection_Vec4< Element_t > &theVec)
 Set column values by the passed 4 element vector. More...
 
NCollection_Vec4< Element_t > GetDiagonal () const
 Get vector of diagonal elements. More...
 
void SetDiagonal (const NCollection_Vec3< Element_t > &theVec)
 Change first 3 elements of the diagonal matrix. More...
 
void SetDiagonal (const NCollection_Vec4< Element_t > &theVec)
 Set diagonal elements of the matrix by the passed vector. More...
 
void InitIdentity ()
 Initialize the identity matrix. More...
 
bool IsIdentity () const
 Checks the matrix for identity. More...
 
bool IsEqual (const NCollection_Mat4 &theOther) const
 Check this matrix for equality with another matrix (without tolerance!). More...
 
bool operator== (const NCollection_Mat4 &theOther)
 Check this matrix for equality with another matrix (without tolerance!). More...
 
bool operator== (const NCollection_Mat4 &theOther) const
 
bool operator!= (const NCollection_Mat4 &theOther)
 Check this matrix for non-equality with another matrix (without tolerance!). More...
 
bool operator!= (const NCollection_Mat4 &theOther) const
 
const Element_t * GetData () const
 Raw access to the data (for OpenGL exchange). More...
 
Element_t * ChangeData ()
 
 operator const Element_t * () const
 
 operator Element_t * ()
 
NCollection_Vec4< Element_t > operator* (const NCollection_Vec4< Element_t > &theVec) const
 Multiply by the vector (M * V). More...
 
NCollection_Mat4 Multiply (const NCollection_Mat4 &theMatA, const NCollection_Mat4 &theMatB)
 Compute matrix multiplication product: A * B. More...
 
void Multiply (const NCollection_Mat4 &theMat)
 Compute matrix multiplication. More...
 
NCollection_Mat4operator*= (const NCollection_Mat4 &theMat)
 Multiply by the another matrix. More...
 
NCollection_Mat4 operator* (const NCollection_Mat4 &theMat) const
 Compute matrix multiplication product. More...
 
NCollection_Mat4 Multiplied (const NCollection_Mat4 &theMat) const
 Compute matrix multiplication product. More...
 
void Multiply (const Element_t theFactor)
 Compute per-component multiplication. More...
 
NCollection_Mat4operator*= (const Element_t theFactor)
 Compute per-element multiplication. More...
 
NCollection_Mat4 operator* (const Element_t theFactor) const
 Compute per-element multiplication. More...
 
NCollection_Mat4 Multiplied (const Element_t theFactor) const
 Compute per-element multiplication. More...
 
void Translate (const NCollection_Vec3< Element_t > &theVec)
 Translate the matrix on the passed vector. More...
 
NCollection_Mat4 Transposed () const
 Transpose the matrix. More...
 
void Transpose ()
 Transpose the matrix. More...
 
bool Inverted (NCollection_Mat4< Element_t > &theOutMx) const
 Compute inverted matrix. More...
 
template<typename Other_t >
void ConvertFrom (const NCollection_Mat4< Other_t > &theFrom)
 Take values from NCollection_Mat4 with a different element type with type conversion. More...
 
template<typename Other_t >
void Convert (const NCollection_Mat4< Other_t > &theFrom)
 Take values from NCollection_Mat4 with a different element type with type conversion. More...
 
void DumpJson (Standard_OStream &theOStream, Standard_Integer) const
 Dumps the content of me into the stream. More...
 

Static Public Member Functions

static size_t Rows ()
 Get number of rows. More...
 
static size_t Cols ()
 Get number of columns. number of columns. More...
 
static NCollection_Mat4< Element_t > & Map (Element_t *theData)
 Maps plain C array to matrix type. More...
 
static const NCollection_Mat4< Element_t > & Map (const Element_t *theData)
 Maps plain C array to matrix type. More...
 

Detailed Description

template<typename Element_t>
class NCollection_Mat4< Element_t >

Generic matrix of 4 x 4 elements. To be used in conjunction with NCollection_Vec4 entities. Originally introduced for 3D space projection and orientation operations.

Constructor & Destructor Documentation

◆ NCollection_Mat4() [1/2]

template<typename Element_t>
NCollection_Mat4< Element_t >::NCollection_Mat4 ( )
inline

Empty constructor. Construct the zero matrix.

◆ NCollection_Mat4() [2/2]

template<typename Element_t>
template<typename OtherElement_t >
NCollection_Mat4< Element_t >::NCollection_Mat4 ( const NCollection_Mat4< OtherElement_t > &  theOtherMat4)
inlineexplicit

Conversion constructor (explicitly converts some 4 x 4 matrix with other element type to a new 4 x 4 matrix with the element type Element_t, whose elements are static_cast'ed corresponding elements of theOtherMat4 matrix)

Template Parameters
OtherElement_tthe element type of the other 4 x 4 matrix theOtherVec4
Parameters
theOtherMat4the 4 x 4 matrix that needs to be converted

Member Function Documentation

◆ ChangeData()

template<typename Element_t>
Element_t* NCollection_Mat4< Element_t >::ChangeData ( )
inline

◆ ChangeValue()

template<typename Element_t>
Element_t& NCollection_Mat4< Element_t >::ChangeValue ( const size_t  theRow,
const size_t  theCol 
)
inline

Access element at the specified row and column.

Parameters
theRow[in] the row.to access.
theCol[in] the column to access.
Returns
reference on the matrix element.

◆ Cols()

template<typename Element_t>
static size_t NCollection_Mat4< Element_t >::Cols ( )
inlinestatic

Get number of columns. number of columns.

◆ Convert()

template<typename Element_t>
template<typename Other_t >
void NCollection_Mat4< Element_t >::Convert ( const NCollection_Mat4< Other_t > &  theFrom)
inline

Take values from NCollection_Mat4 with a different element type with type conversion.

◆ ConvertFrom()

template<typename Element_t>
template<typename Other_t >
void NCollection_Mat4< Element_t >::ConvertFrom ( const NCollection_Mat4< Other_t > &  theFrom)
inline

Take values from NCollection_Mat4 with a different element type with type conversion.

◆ DumpJson()

template<typename Element_t>
void NCollection_Mat4< Element_t >::DumpJson ( Standard_OStream theOStream,
Standard_Integer   
) const
inline

Dumps the content of me into the stream.

◆ GetColumn()

template<typename Element_t>
NCollection_Vec4<Element_t> NCollection_Mat4< Element_t >::GetColumn ( const size_t  theCol) const
inline

Get vector of elements for the specified column.

Parameters
theCol[in] the column to access.
Returns
vector of elements.

◆ GetData()

template<typename Element_t>
const Element_t* NCollection_Mat4< Element_t >::GetData ( ) const
inline

Raw access to the data (for OpenGL exchange).

◆ GetDiagonal()

template<typename Element_t>
NCollection_Vec4<Element_t> NCollection_Mat4< Element_t >::GetDiagonal ( ) const
inline

Get vector of diagonal elements.

Returns
vector of diagonal elements.

◆ GetRow()

template<typename Element_t>
NCollection_Vec4<Element_t> NCollection_Mat4< Element_t >::GetRow ( const size_t  theRow) const
inline

Get vector of elements for the specified row.

Parameters
theRow[in] the row to access.
Returns
vector of elements.

◆ GetValue()

template<typename Element_t>
Element_t NCollection_Mat4< Element_t >::GetValue ( const size_t  theRow,
const size_t  theCol 
) const
inline

Get element at the specified row and column.

Parameters
theRow[in] the row.to address.
theCol[in] the column to address.
Returns
the value of the addressed element.

◆ InitIdentity()

template<typename Element_t>
void NCollection_Mat4< Element_t >::InitIdentity ( )
inline

Initialize the identity matrix.

◆ Inverted()

template<typename Element_t>
bool NCollection_Mat4< Element_t >::Inverted ( NCollection_Mat4< Element_t > &  theOutMx) const
inline

Compute inverted matrix.

Parameters
theOutMx[out] the inverted matrix.
Returns
true if reversion success.

◆ IsEqual()

template<typename Element_t>
bool NCollection_Mat4< Element_t >::IsEqual ( const NCollection_Mat4< Element_t > &  theOther) const
inline

Check this matrix for equality with another matrix (without tolerance!).

◆ IsIdentity()

template<typename Element_t>
bool NCollection_Mat4< Element_t >::IsIdentity ( ) const
inline

Checks the matrix for identity.

◆ Map() [1/2]

template<typename Element_t>
static NCollection_Mat4<Element_t>& NCollection_Mat4< Element_t >::Map ( Element_t *  theData)
inlinestatic

Maps plain C array to matrix type.

◆ Map() [2/2]

template<typename Element_t>
static const NCollection_Mat4<Element_t>& NCollection_Mat4< Element_t >::Map ( const Element_t *  theData)
inlinestatic

Maps plain C array to matrix type.

◆ Multiplied() [1/2]

template<typename Element_t>
NCollection_Mat4 NCollection_Mat4< Element_t >::Multiplied ( const NCollection_Mat4< Element_t > &  theMat) const
inline

Compute matrix multiplication product.

Parameters
theMat[in] the other matrix.
Returns
result of multiplication.

◆ Multiplied() [2/2]

template<typename Element_t>
NCollection_Mat4 NCollection_Mat4< Element_t >::Multiplied ( const Element_t  theFactor) const
inline

Compute per-element multiplication.

Parameters
theFactor[in] the scale factor.
Returns
the result of multiplicaton.

◆ Multiply() [1/3]

template<typename Element_t>
NCollection_Mat4 NCollection_Mat4< Element_t >::Multiply ( const NCollection_Mat4< Element_t > &  theMatA,
const NCollection_Mat4< Element_t > &  theMatB 
)
inline

Compute matrix multiplication product: A * B.

Parameters
theMatA[in] the matrix "A".
theMatB[in] the matrix "B".

◆ Multiply() [2/3]

template<typename Element_t>
void NCollection_Mat4< Element_t >::Multiply ( const NCollection_Mat4< Element_t > &  theMat)
inline

Compute matrix multiplication.

Parameters
theMat[in] the matrix to multiply.

◆ Multiply() [3/3]

template<typename Element_t>
void NCollection_Mat4< Element_t >::Multiply ( const Element_t  theFactor)
inline

Compute per-component multiplication.

Parameters
theFactor[in] the scale factor.

◆ operator const Element_t *()

template<typename Element_t>
NCollection_Mat4< Element_t >::operator const Element_t * ( ) const
inline

◆ operator Element_t *()

template<typename Element_t>
NCollection_Mat4< Element_t >::operator Element_t * ( )
inline

◆ operator!=() [1/2]

template<typename Element_t>
bool NCollection_Mat4< Element_t >::operator!= ( const NCollection_Mat4< Element_t > &  theOther)
inline

Check this matrix for non-equality with another matrix (without tolerance!).

◆ operator!=() [2/2]

template<typename Element_t>
bool NCollection_Mat4< Element_t >::operator!= ( const NCollection_Mat4< Element_t > &  theOther) const
inline

◆ operator*() [1/3]

template<typename Element_t>
NCollection_Vec4<Element_t> NCollection_Mat4< Element_t >::operator* ( const NCollection_Vec4< Element_t > &  theVec) const
inline

Multiply by the vector (M * V).

Parameters
theVec[in] the vector to multiply.

◆ operator*() [2/3]

template<typename Element_t>
NCollection_Mat4 NCollection_Mat4< Element_t >::operator* ( const NCollection_Mat4< Element_t > &  theMat) const
inline

Compute matrix multiplication product.

Parameters
theMat[in] the other matrix.
Returns
result of multiplication.

◆ operator*() [3/3]

template<typename Element_t>
NCollection_Mat4 NCollection_Mat4< Element_t >::operator* ( const Element_t  theFactor) const
inline

Compute per-element multiplication.

Parameters
theFactor[in] the scale factor.
Returns
the result of multiplicaton.

◆ operator*=() [1/2]

template<typename Element_t>
NCollection_Mat4& NCollection_Mat4< Element_t >::operator*= ( const NCollection_Mat4< Element_t > &  theMat)
inline

Multiply by the another matrix.

Parameters
theMat[in] the other matrix.

◆ operator*=() [2/2]

template<typename Element_t>
NCollection_Mat4& NCollection_Mat4< Element_t >::operator*= ( const Element_t  theFactor)
inline

Compute per-element multiplication.

Parameters
theFactor[in] the scale factor.

◆ operator==() [1/2]

template<typename Element_t>
bool NCollection_Mat4< Element_t >::operator== ( const NCollection_Mat4< Element_t > &  theOther)
inline

Check this matrix for equality with another matrix (without tolerance!).

◆ operator==() [2/2]

template<typename Element_t>
bool NCollection_Mat4< Element_t >::operator== ( const NCollection_Mat4< Element_t > &  theOther) const
inline

◆ Rows()

template<typename Element_t>
static size_t NCollection_Mat4< Element_t >::Rows ( )
inlinestatic

Get number of rows.

Returns
number of rows.

◆ SetColumn() [1/2]

template<typename Element_t>
void NCollection_Mat4< Element_t >::SetColumn ( const size_t  theCol,
const NCollection_Vec3< Element_t > &  theVec 
)
inline

Change first 3 column values by the passed vector.

Parameters
theCol[in] the column to change.
theVec[in] the vector of values.

◆ SetColumn() [2/2]

template<typename Element_t>
void NCollection_Mat4< Element_t >::SetColumn ( const size_t  theCol,
const NCollection_Vec4< Element_t > &  theVec 
)
inline

Set column values by the passed 4 element vector.

Parameters
theCol[in] the column to change.
theVec[in] the vector of values.

◆ SetDiagonal() [1/2]

template<typename Element_t>
void NCollection_Mat4< Element_t >::SetDiagonal ( const NCollection_Vec3< Element_t > &  theVec)
inline

Change first 3 elements of the diagonal matrix.

Parameters
theVecthe vector of values.

◆ SetDiagonal() [2/2]

template<typename Element_t>
void NCollection_Mat4< Element_t >::SetDiagonal ( const NCollection_Vec4< Element_t > &  theVec)
inline

Set diagonal elements of the matrix by the passed vector.

Parameters
theVec[in] the vector of values.

◆ SetRow() [1/2]

template<typename Element_t>
void NCollection_Mat4< Element_t >::SetRow ( const size_t  theRow,
const NCollection_Vec3< Element_t > &  theVec 
)
inline

Change first 3 row values by the passed vector.

Parameters
theRow[in] the row to change.
theVec[in] the vector of values.

◆ SetRow() [2/2]

template<typename Element_t>
void NCollection_Mat4< Element_t >::SetRow ( const size_t  theRow,
const NCollection_Vec4< Element_t > &  theVec 
)
inline

Set row values by the passed 4 element vector.

Parameters
theRow[in] the row to change.
theVec[in] the vector of values.

◆ SetValue()

template<typename Element_t>
void NCollection_Mat4< Element_t >::SetValue ( const size_t  theRow,
const size_t  theCol,
const Element_t  theValue 
)
inline

Set value for the element specified by row and columns.

Parameters
theRow[in] the row to change.
theCol[in] the column to change.
theValue[in] the value to set.s

◆ Translate()

template<typename Element_t>
void NCollection_Mat4< Element_t >::Translate ( const NCollection_Vec3< Element_t > &  theVec)
inline

Translate the matrix on the passed vector.

Parameters
theVec[in] the translation vector.

◆ Transpose()

template<typename Element_t>
void NCollection_Mat4< Element_t >::Transpose ( )
inline

Transpose the matrix.

◆ Transposed()

template<typename Element_t>
NCollection_Mat4 NCollection_Mat4< Element_t >::Transposed ( ) const
inline

Transpose the matrix.

Returns
transposed copy of the matrix.

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