Assimp  v3.0 (July 2012)
Public Member Functions | Static Public Member Functions | Public Attributes
aiMatrix4x4t< TReal > Class Template Reference

Represents a row-major 4x4 matrix, use this for homogeneous coordinates. More...

List of all members.

Public Member Functions

 aiMatrix4x4t ()
 set to identity
 aiMatrix4x4t (TReal _a1, TReal _a2, TReal _a3, TReal _a4, TReal _b1, TReal _b2, TReal _b3, TReal _b4, TReal _c1, TReal _c2, TReal _c3, TReal _c4, TReal _d1, TReal _d2, TReal _d3, TReal _d4)
 construction from single values
 aiMatrix4x4t (const aiMatrix3x3t< TReal > &m)
 construction from 3x3 matrix, remaining elements are set to identity
void Decompose (aiVector3t< TReal > &scaling, aiQuaterniont< TReal > &rotation, aiVector3t< TReal > &position) const
 Decompose a trafo matrix into its original components.
void DecomposeNoScaling (aiQuaterniont< TReal > &rotation, aiVector3t< TReal > &position) const
 Decompose a trafo matrix with no scaling into its original components.
TReal Determinant () const
aiMatrix4x4tFromEulerAnglesXYZ (TReal x, TReal y, TReal z)
 Creates a trafo matrix from a set of euler angles.
aiMatrix4x4tFromEulerAnglesXYZ (const aiVector3t< TReal > &blubb)
aiMatrix4x4tInverse ()
 Invert the matrix.
bool IsIdentity () const
 Returns true of the matrix is the identity matrix.
template<typename TOther >
 operator aiMatrix4x4t< TOther > () const
bool operator!= (const aiMatrix4x4t m) const
aiMatrix4x4t operator* (const aiMatrix4x4t &m) const
aiMatrix4x4toperator*= (const aiMatrix4x4t &m)
bool operator== (const aiMatrix4x4t m) const
TReal * operator[] (unsigned int p_iIndex)
const TReal * operator[] (unsigned int p_iIndex) const
aiMatrix4x4tTranspose ()
 Transpose the matrix.

Static Public Member Functions

static aiMatrix4x4tFromToMatrix (const aiVector3t< TReal > &from, const aiVector3t< TReal > &to, aiMatrix4x4t &out)
 A function for creating a rotation matrix that rotates a vector called "from" into another vector called "to".
static aiMatrix4x4tRotation (TReal a, const aiVector3t< TReal > &axis, aiMatrix4x4t &out)
 Returns a rotation matrix for a rotation around an arbitrary axis.
static aiMatrix4x4tRotationX (TReal a, aiMatrix4x4t &out)
 Returns a rotation matrix for a rotation around the x axis.
static aiMatrix4x4tRotationY (TReal a, aiMatrix4x4t &out)
 Returns a rotation matrix for a rotation around the y axis.
static aiMatrix4x4tRotationZ (TReal a, aiMatrix4x4t &out)
 Returns a rotation matrix for a rotation around the z axis.
static aiMatrix4x4tScaling (const aiVector3t< TReal > &v, aiMatrix4x4t &out)
 Returns a scaling matrix.
static aiMatrix4x4tTranslation (const aiVector3t< TReal > &v, aiMatrix4x4t &out)
 Returns a translation matrix.

Public Attributes

TReal a1
TReal a2
TReal a3
TReal a4
TReal b1
TReal b2
TReal b3
TReal b4
TReal c1
TReal c2
TReal c3
TReal c4
TReal d1
TReal d2
TReal d3
TReal d4

Detailed Description

template<typename TReal>
class aiMatrix4x4t< TReal >

Represents a row-major 4x4 matrix, use this for homogeneous coordinates.

There's much confusion about matrix layouts (column vs. row order). This is always a row-major matrix. Not even with the aiProcess_ConvertToLeftHanded flag, which absolutely does not affect matrix order - it just affects the handedness of the coordinate system defined thereby.


Constructor & Destructor Documentation

template<typename TReal >
aiMatrix4x4t< TReal >::aiMatrix4x4t ( )

set to identity

template<typename TReal>
aiMatrix4x4t< TReal >::aiMatrix4x4t ( TReal  _a1,
TReal  _a2,
TReal  _a3,
TReal  _a4,
TReal  _b1,
TReal  _b2,
TReal  _b3,
TReal  _b4,
TReal  _c1,
TReal  _c2,
TReal  _c3,
TReal  _c4,
TReal  _d1,
TReal  _d2,
TReal  _d3,
TReal  _d4 
)

construction from single values

template<typename TReal>
aiMatrix4x4t< TReal >::aiMatrix4x4t ( const aiMatrix3x3t< TReal > &  m)
inlineexplicit

construction from 3x3 matrix, remaining elements are set to identity


Member Function Documentation

template<typename TReal>
void aiMatrix4x4t< TReal >::Decompose ( aiVector3t< TReal > &  scaling,
aiQuaterniont< TReal > &  rotation,
aiVector3t< TReal > &  position 
) const
inline

Decompose a trafo matrix into its original components.

Parameters:
scalingReceives the output scaling for the x,y,z axes
rotationReceives the output rotation as a hamilton quaternion
positionReceives the output position for the x,y,z axes
template<typename TReal>
void aiMatrix4x4t< TReal >::DecomposeNoScaling ( aiQuaterniont< TReal > &  rotation,
aiVector3t< TReal > &  position 
) const
inline

Decompose a trafo matrix with no scaling into its original components.

Parameters:
rotationReceives the output rotation as a hamilton quaternion
positionReceives the output position for the x,y,z axes
template<typename TReal >
TReal aiMatrix4x4t< TReal >::Determinant ( ) const
inline
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::FromEulerAnglesXYZ ( TReal  x,
TReal  y,
TReal  z 
)
inline

Creates a trafo matrix from a set of euler angles.

Parameters:
xRotation angle for the x-axis, in radians
yRotation angle for the y-axis, in radians
zRotation angle for the z-axis, in radians
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::FromEulerAnglesXYZ ( const aiVector3t< TReal > &  blubb)
inline
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::FromToMatrix ( const aiVector3t< TReal > &  from,
const aiVector3t< TReal > &  to,
aiMatrix4x4t< TReal > &  out 
)
inlinestatic

A function for creating a rotation matrix that rotates a vector called "from" into another vector called "to".

Input : from[3], to[3] which both must be normalized non-zero vectors Output: mtx[3][3] – a 3x3 matrix in colum-major form Authors: Tomas Möller, John Hughes "Efficiently Building a Matrix to Rotate One Vector to Another" Journal of Graphics Tools, 4(4):1-4, 1999

template<typename TReal >
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::Inverse ( )
inline

Invert the matrix.

If the matrix is not invertible all elements are set to qnan. Beware, use (f != f) to check whether a TReal f is qnan.

template<typename TReal >
bool aiMatrix4x4t< TReal >::IsIdentity ( ) const
inline

Returns true of the matrix is the identity matrix.

The check is performed against a not so small epsilon.

template<typename TReal >
template<typename TOther >
aiMatrix4x4t< TReal >::operator aiMatrix4x4t< TOther > ( ) const
template<typename TReal >
bool aiMatrix4x4t< TReal >::operator!= ( const aiMatrix4x4t< TReal >  m) const
inline
template<typename TReal >
aiMatrix4x4t< TReal > aiMatrix4x4t< TReal >::operator* ( const aiMatrix4x4t< TReal > &  m) const
inline
template<typename TReal >
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::operator*= ( const aiMatrix4x4t< TReal > &  m)
inline
template<typename TReal >
bool aiMatrix4x4t< TReal >::operator== ( const aiMatrix4x4t< TReal >  m) const
inline
template<typename TReal >
TReal * aiMatrix4x4t< TReal >::operator[] ( unsigned int  p_iIndex)
inline
template<typename TReal >
const TReal * aiMatrix4x4t< TReal >::operator[] ( unsigned int  p_iIndex) const
inline
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::Rotation ( TReal  a,
const aiVector3t< TReal > &  axis,
aiMatrix4x4t< TReal > &  out 
)
inlinestatic

Returns a rotation matrix for a rotation around an arbitrary axis.

Parameters:
aRotation angle, in radians
axisRotation axis, should be a normalized vector.
outReceives the output matrix
Returns:
Reference to the output matrix
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::RotationX ( TReal  a,
aiMatrix4x4t< TReal > &  out 
)
inlinestatic

Returns a rotation matrix for a rotation around the x axis.

Parameters:
aRotation angle, in radians
outReceives the output matrix
Returns:
Reference to the output matrix
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::RotationY ( TReal  a,
aiMatrix4x4t< TReal > &  out 
)
inlinestatic

Returns a rotation matrix for a rotation around the y axis.

Parameters:
aRotation angle, in radians
outReceives the output matrix
Returns:
Reference to the output matrix
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::RotationZ ( TReal  a,
aiMatrix4x4t< TReal > &  out 
)
inlinestatic

Returns a rotation matrix for a rotation around the z axis.

Parameters:
aRotation angle, in radians
outReceives the output matrix
Returns:
Reference to the output matrix
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::Scaling ( const aiVector3t< TReal > &  v,
aiMatrix4x4t< TReal > &  out 
)
inlinestatic

Returns a scaling matrix.

Parameters:
vScaling vector
outReceives the output matrix
Returns:
Reference to the output matrix
template<typename TReal>
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::Translation ( const aiVector3t< TReal > &  v,
aiMatrix4x4t< TReal > &  out 
)
inlinestatic

Returns a translation matrix.

Parameters:
vTranslation vector
outReceives the output matrix
Returns:
Reference to the output matrix
template<typename TReal >
aiMatrix4x4t< TReal > & aiMatrix4x4t< TReal >::Transpose ( )
inline

Transpose the matrix.


Member Data Documentation

template<typename TReal>
TReal aiMatrix4x4t< TReal >::a1
template<typename TReal>
TReal aiMatrix4x4t< TReal >::a2
template<typename TReal>
TReal aiMatrix4x4t< TReal >::a3
template<typename TReal>
TReal aiMatrix4x4t< TReal >::a4
template<typename TReal>
TReal aiMatrix4x4t< TReal >::b1
template<typename TReal>
TReal aiMatrix4x4t< TReal >::b2
template<typename TReal>
TReal aiMatrix4x4t< TReal >::b3
template<typename TReal>
TReal aiMatrix4x4t< TReal >::b4
template<typename TReal>
TReal aiMatrix4x4t< TReal >::c1
template<typename TReal>
TReal aiMatrix4x4t< TReal >::c2
template<typename TReal>
TReal aiMatrix4x4t< TReal >::c3
template<typename TReal>
TReal aiMatrix4x4t< TReal >::c4
template<typename TReal>
TReal aiMatrix4x4t< TReal >::d1
template<typename TReal>
TReal aiMatrix4x4t< TReal >::d2
template<typename TReal>
TReal aiMatrix4x4t< TReal >::d3
template<typename TReal>
TReal aiMatrix4x4t< TReal >::d4

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