AGX Dynamics 2.41.2.0
Loading...
Searching...
No Matches
agx::AffineMatrix4x4T< T > Class Template Reference

Matrix class for rigid transformations (translation, rotation). More...

#include <AffineMatrix4x4.h>

+ Inheritance diagram for agx::AffineMatrix4x4T< T >:

Public Member Functions

 AffineMatrix4x4T ()=default
 Creates a new matrix, initialized to be an identity matrix.
 
 AffineMatrix4x4T (const AffineMatrix4x4T &mat)=default
 
template<typename T2 , std::enable_if_t< std::is_same< T, T2 >::value==0, bool > = false>
 AffineMatrix4x4T (const AffineMatrix4x4T< T2 > &mat)
 Copy constructor.
 
 AffineMatrix4x4T (const EulerAngles &rotation, const Vec3T< T > &translation=Vec3T< T >())
 Create a matrix from Euler angles.
 
 AffineMatrix4x4T (const OrthoMatrix3x3 &rotation, const Vec3T< T > &translation=Vec3T< T >())
 Create a matrix from a 3x3 rotation matrix.
 
 AffineMatrix4x4T (const QuatT< T > &rotation, const Vec3T< T > &translation=Vec3T< T >())
 Create a matrix from a quaternion.
 
 AffineMatrix4x4T (T a00, T a01, T a02, T a03, T a10, T a11, T a12, T a13, T a20, T a21, T a22, T a23, T a30, T a31, T a32, T a33)
 Create a matrix from 16 T scalars.
 
 AffineMatrix4x4T (T const *const ptr)
 Create a matrix from a vector of 16 reals.
 
 ~AffineMatrix4x4T ()=default
 Destructor.
 
Real at (size_t i, size_t j) const
 
Vec3T< T > getInvTranslate () const
 
AffineMatrix4x4T< T > inverse () const
 Quick inverse, transpose rotation part, and change sign of translation part.
 
void mult (const AffineMatrix4x4T< T > &, const AffineMatrix4x4T< T > &)
 
void multSSE (const AffineMatrix4x4T< Real32 > &lhs, const AffineMatrix4x4T< Real32 > &rhs)
 
void multSSE (const AffineMatrix4x4T< Real64 > &lhs, const AffineMatrix4x4T< Real64 > &rhs)
 
void multSSE (const AffineMatrix4x4T< T > &lhs, const AffineMatrix4x4T< T > &rhs)
 
bool operator!= (const AffineMatrix4x4T< T > &m) const
 
AffineMatrix4x4T< T > operator* (const AffineMatrix4x4T< T > &m) const
 
Matrix4x4T< T > operator* (const Matrix4x4T< T > &m) const
 
Vec3T< T > operator* (const Vec3T< T > &v) const
 
Vec4T< T > operator* (const Vec4T< T > &v) const
 
void operator*= (const AffineMatrix4x4T< T > &other)
 
AffineMatrix4x4T< T > & operator= (const AffineMatrix4x4T< T > &rhs)=default
 
bool operator== (const AffineMatrix4x4T< T > &m) const
 
void postMult (const AffineMatrix4x4T< T > &)
 
AffineMatrix4x4T< T > & postMultTranslate (const Vec3T< T > &v)
 
void preMult (const AffineMatrix4x4T< T > &)
 
AffineMatrix4x4T< T > & preMultTranslate (const Vec3T< T > &v)
 
AffineMatrix4x4T< T > & set (const EulerAngles &euler)
 Set the rotational part of the matrix using the specified euler angles and the translational part to 0,0,0.
 
AffineMatrix4x4T< T > & set (const OrthoMatrix3x3 &m3)
 Set the rotational part of the matrix using the specified rotation matrix and the translational part to 0,0,0.
 
AffineMatrix4x4T< T > & set (const QuatT< T > &q)
 Set the rotational part of the matrix using the specified quaternion and the translational part to 0,0,0.
 
void set (Real val, size_t i, size_t j)
 Set the value of element i,j.
 
AffineMatrix4x4T< T > & set (T a00, T a01, T a02, T a03, T a10, T a11, T a12, T a13, T a20, T a21, T a22, T a23, T a30, T a31, T a32, T a33)
 Set the entire matrix using values from the 16 elements using the following order:
 
AffineMatrix4x4T< T > & set (T const *const ptr)
 Set the entire matrix using values from the array with 16 elements using the following order:
 
AffineMatrix4x4T< T > & setIdentity ()
 Set the value of the matrix to the identity matrix.
 
AffineMatrix4x4T< T > & setRotate (const EulerAngles &euler)
 Set the rotational part of the matrix using the specified euler angles leaving the translational part untouched.
 
AffineMatrix4x4T< T > & setRotate (const OrthoMatrix3x3 &m3)
 Set the rotational part of the matrix using the specified rotation matrix leaving the translational part untouched.
 
AffineMatrix4x4T< T > & setRotate (const QuatT< T > &q)
 Set the rotational part of the matrix using the specified quaternion leaving the translational part untouched.
 
AffineMatrix4x4T< T > & setRotate (const Vec3T< T > &from, const Vec3T< T > &to)
 Set the rotational part of the matrix using the specified two vectors.
 
AffineMatrix4x4T< T > & setRotate (T angle, const Vec3T< T > &axis)
 Set the rotational part of a matrix which rotate angle radians around vector axis.
 
AffineMatrix4x4T< T > & setRotate (T angle, T x, T y, T z)
 Set the rotational part of a matrix which rotate angle radians around vector x y z.
 
AffineMatrix4x4T< T > & setRotate (T angle1, const Vec3T< T > &axis1, T angle2, const Vec3T< T > &axis2, T angle3, const Vec3T< T > &axis3)
 Set the rotational part of a matrix which rotate angle1 radians around vector axis1 and angle2 radians around vector axis2 angle3 radians around vector axis3.
 
AffineMatrix4x4T< T > & setTranslate (const Vec3T< T > &t)
 Set the translational part of the matrix using the vector t.
 
AffineMatrix4x4T< T > & setTranslate (T tx, T ty, T tz)
 Set the translational part of the matrix using the vector x, y, z.
 
agx::Vec3T< T > transformPoint (const agx::Vec3T< T > &point) const
 Transforms a (mathematical) point, using both rotation and translation.
 
agx::Vec3T< T > transformVector (const agx::Vec3T< T > &vector) const
 Transforms a (mathematical) vector, using only rotation.
 
- Public Member Functions inherited from agx::Matrix4x4T< T >
 Matrix4x4T ()=default
 Creates a new matrix, initialized to be an identity matrix.
 
 Matrix4x4T (const EulerAngles &rotation, const Vec3T< T > &translation=Vec3T< T >())
 Create a matrix from Euler angles.
 
 Matrix4x4T (const Matrix4x4T< T > &)=default
 
template<typename T2 , std::enable_if_t< std::is_same< T, T2 >::value==0, bool > = false>
 Matrix4x4T (const Matrix4x4T< T2 > &mat)
 Copy constructor.
 
 Matrix4x4T (const OrthoMatrix3x3 &rotation, const Vec3T< T > &translation=Vec3T< T >())
 Create a matrix from a 3x3 rotation matrix.
 
 Matrix4x4T (const QuatT< T > &rotation, const Vec3T< T > &translation=Vec3T< T >())
 Create a matrix from a quaternion.
 
 Matrix4x4T (T a00, T a01, T a02, T a03, T a10, T a11, T a12, T a13, T a20, T a21, T a22, T a23, T a30, T a31, T a32, T a33)
 Create a matrix from 16 T scalars.
 
 Matrix4x4T (T const *const ptr)
 Create a matrix from a vector of 16 reals.
 
 ~Matrix4x4T ()=default
 Destructor.
 
Matrix4x4T< T > & addTranslate (const Vec3T< T > &t)
 
Matrix4x4T< T > & addTranslate (T tx, T ty, T tz)
 
void get (EulerAngles &e) const
 
void get (OrthoMatrix3x3 &m3) const
 
void get (QuatT< T > &q) const
 
agx::Vec4T< T > getCol (size_t col) const
 
QuatT< T > getRotate () const
 
agx::Vec4T< T > getRow (size_t row) const
 
Vec3T< T > getTranslate () const
 
Matrix4x4T< T > inverse () const
 Matrix inverse.
 
bool isFinite () const
 
bool isIdentity () const
 
bool isNaN () const
 
bool isRigidTransformation () const
 
void mult (const Matrix4x4T< T > &, const Matrix4x4T< T > &)
 
void multSSE (const Matrix4x4T< Real32 > &lhs, const Matrix4x4T< Real32 > &rhs)
 
void multSSE (const Matrix4x4T< Real64 > &lhs, const Matrix4x4T< Real64 > &rhs)
 
void multSSE (const Matrix4x4T< T > &lhs, const Matrix4x4T< T > &rhs)
 
bool operator!= (const Matrix4x4T< T > &m) const
 
T & operator() (size_t row, size_t col)
 
operator() (size_t row, size_t col) const
 
Matrix4x4T< T > operator* (const Matrix4x4T< T > &m) const
 
Vec3T< T > operator* (const Vec3T< T > &v) const
 
Vec4T< T > operator* (const Vec4T< T > &v) const
 
void operator*= (const Matrix4x4T< T > &other)
 
Matrix4x4T< T > & operator= (const Matrix4x4T< T > &rhs)=default
 
bool operator== (const Matrix4x4T< T > &m) const
 
void postMult (const Matrix4x4T< T > &)
 
Vec3T< T > postMult (const Vec3T< T > &v) const
 
Vec4T< T > postMult (const Vec4T< T > &v) const
 
Matrix4x4T< T > & postMultTranslate (const Vec3T< T > &v)
 
void preMult (const Matrix4x4T< T > &)
 
Vec3T< T > preMult (const Vec3T< T > &v) const
 
Vec4T< T > preMult (const Vec4T< T > &v) const
 
Matrix4x4T< T > & preMultTranslate (const Vec3T< T > &v)
 
T * ptr ()
 
const T * ptr () const
 
Matrix4x4T< T > & set (const EulerAngles &e)
 
Matrix4x4T< T > & set (const OrthoMatrix3x3 &m3)
 
Matrix4x4T< T > & set (const QuatT< T > &q)
 
Matrix4x4T< T > & set (T a00, T a01, T a02, T a03, T a10, T a11, T a12, T a13, T a20, T a21, T a22, T a23, T a30, T a31, T a32, T a33)
 
Matrix4x4T< T > & set (T const *const ptr)
 
void setCol (size_t col, const agx::Vec4T< T > &vec)
 
Matrix4x4T< T > & setIdentity ()
 
Matrix4x4T< T > & setRotate (const EulerAngles &euler)
 
Matrix4x4T< T > & setRotate (const OrthoMatrix3x3 &m3)
 
Matrix4x4T< T > & setRotate (const QuatT< T > &q)
 
Matrix4x4T< T > & setRotate (const Vec3T< T > &from, const Vec3T< T > &to)
 
Matrix4x4T< T > & setRotate (T angle, const Vec3T< T > &axis)
 
Matrix4x4T< T > & setRotate (T angle, T x, T y, T z)
 
Matrix4x4T< T > & setRotate (T angle1, const Vec3T< T > &axis1, T angle2, const Vec3T< T > &axis2, T angle3, const Vec3T< T > &axis3)
 
void setRow (size_t row, const agx::Vec4T< T > &vec)
 Set the row of the matrix,.
 
Matrix4x4T< T > & setTranslate (const Vec3T< T > &t)
 
Matrix4x4T< T > & setTranslate (T tx, T ty, T tz)
 
Vec3T< T > transform3x3 (const Vec3T< T > &vIn) const
 
Vec3T< T > & transform3x3 (const Vec3T< T > &vIn, Vec3T< T > &vOut) const
 
Vec3T< T > transform3x3Inv (const Vec3T< T > &vIn) const
 
Vec3T< T > & transform3x3Inv (const Vec3T< T > &vIn, Vec3T< T > &vOut) const
 
Matrix4x4T< T > transpose () const
 
bool valid () const
 

Static Public Member Functions

static AffineMatrix4x4T< T > crossMatrix (const Vec3T< T > &vec)
 Generates a new matrix of a specific type.
 
static AffineMatrix4x4T< T > rotate (const EulerAngles &euler)
 
static AffineMatrix4x4T< T > rotate (const Vec3T< T > &from, const Vec3T< T > &to)
 Return a matrix which rotate a vector from from to to.
 
static AffineMatrix4x4T< T > rotate (T angle, const Vec3T< T > &axis)
 Return a matrix which rotate angle radians around vector axis.
 
static AffineMatrix4x4T< T > rotate (T angle, T x, T y, T z)
 Return a matrix which rotate angle radians around vector [x,y,z].
 
static AffineMatrix4x4T< T > rotate (T angle1, const Vec3T< T > &axis1, T angle2, const Vec3T< T > &axis2, T angle3, const Vec3T< T > &axis3)
 Return a matrix which rotate angle1 radians around vector axis1 and angle2 radians around vector axis2 angle3 radians around vector axis3.
 
static AffineMatrix4x4T< T > translate (const Vec3T< T > &dv)
 Return a matrix which translates according to dv.
 
static AffineMatrix4x4T< T > translate (T x, T y, T z)
 Return a matrix which translates according to vector [x,y,z].
 
- Static Public Member Functions inherited from agx::Matrix4x4T< T >
static Matrix4x4T< T > crossMatrix (const Vec3T< T > &vec)
 Generates a new matrix of a specific type.
 
static Matrix4x4T< T > rotate (const Vec3T< T > &from, const Vec3T< T > &to)
 
static Matrix4x4T< T > rotate (T angle, const Vec3T< T > &axis)
 
static Matrix4x4T< T > rotate (T angle, T x, T y, T z)
 
static Matrix4x4T< T > rotate (T angle1, const Vec3T< T > &axis1, T angle2, const Vec3T< T > &axis2, T angle3, const Vec3T< T > &axis3)
 
static Matrix4x4T< T > translate (const Vec3T< T > &dv)
 
static Matrix4x4T< T > translate (T x, T y, T z)
 

Protected Member Functions

bool invert (const AffineMatrix4x4T< T > &rhs)
 
- Protected Member Functions inherited from agx::Matrix4x4T< T >
bool invert (const Matrix4x4T< T > &mat)
 

Additional Inherited Members

- Public Types inherited from agx::Matrix4x4T< T >
typedef T Type
 
- Static Protected Member Functions inherited from agx::Matrix4x4T< T >
static void multSSE32Implementation (Real32 *out, const Real32 *lhs, const Real32 *rhs)
 
static void multSSE64Implementation (Real64 *out, const Real64 *lhs, const Real64 *rhs)
 
- Protected Attributes inherited from agx::Matrix4x4T< T >
m_data [4][4] = {{1,0,0,0}, {0,1,0,0}, {0,0,1,0}, {0,0,0,1}}
 

Detailed Description

template<typename T>
class agx::AffineMatrix4x4T< T >

Matrix class for rigid transformations (translation, rotation).

Translations are stored in the last row. The last column will be assumed to be [0 0 0 1]' in all operations, even if it is set to something else. The submatrix containing the first three rows and columns contains the rotational part and is assumed to be orthonormal.

Definition at line 51 of file AffineMatrix4x4.h.

Constructor & Destructor Documentation

◆ AffineMatrix4x4T() [1/8]

template<typename T >
agx::AffineMatrix4x4T< T >::AffineMatrix4x4T ( )
default

Creates a new matrix, initialized to be an identity matrix.

◆ AffineMatrix4x4T() [2/8]

template<typename T >
agx::AffineMatrix4x4T< T >::AffineMatrix4x4T ( const AffineMatrix4x4T< T > &  mat)
default

◆ AffineMatrix4x4T() [3/8]

template<typename T >
template<typename T2 , std::enable_if_t< std::is_same< T, T2 >::value==0, bool > >
agx::AffineMatrix4x4T< T >::AffineMatrix4x4T ( const AffineMatrix4x4T< T2 > &  mat)
explicit

Copy constructor.

Definition at line 415 of file AffineMatrix4x4.h.

◆ AffineMatrix4x4T() [4/8]

template<typename T >
agx::AffineMatrix4x4T< T >::AffineMatrix4x4T ( T const *const  ptr)
explicit

Create a matrix from a vector of 16 reals.

Definition at line 430 of file AffineMatrix4x4.h.

◆ AffineMatrix4x4T() [5/8]

template<typename T >
agx::AffineMatrix4x4T< T >::AffineMatrix4x4T ( const QuatT< T > &  rotation,
const Vec3T< T > &  translation = Vec3T<T>() 
)
explicit

Create a matrix from a quaternion.

Definition at line 437 of file AffineMatrix4x4.h.

◆ AffineMatrix4x4T() [6/8]

template<typename T >
agx::AffineMatrix4x4T< T >::AffineMatrix4x4T ( const EulerAngles rotation,
const Vec3T< T > &  translation = Vec3T<T>() 
)
explicit

Create a matrix from Euler angles.

Definition at line 447 of file AffineMatrix4x4.h.

◆ AffineMatrix4x4T() [7/8]

template<typename T >
agx::AffineMatrix4x4T< T >::AffineMatrix4x4T ( const OrthoMatrix3x3 rotation,
const Vec3T< T > &  translation = Vec3T<T>() 
)
explicit

Create a matrix from a 3x3 rotation matrix.

Definition at line 442 of file AffineMatrix4x4.h.

◆ AffineMatrix4x4T() [8/8]

template<typename T >
agx::AffineMatrix4x4T< T >::AffineMatrix4x4T ( a00,
a01,
a02,
a03,
a10,
a11,
a12,
a13,
a20,
a21,
a22,
a23,
a30,
a31,
a32,
a33 
)

Create a matrix from 16 T scalars.

Definition at line 421 of file AffineMatrix4x4.h.

References agxAssert, and agx::Matrix4x4T< T >::isRigidTransformation().

◆ ~AffineMatrix4x4T()

template<typename T >
agx::AffineMatrix4x4T< T >::~AffineMatrix4x4T ( )
default

Destructor.

Member Function Documentation

◆ at()

template<typename T >
Real agx::AffineMatrix4x4T< T >::at ( size_t  i,
size_t  j 
) const
Returns
the element at i,j.

Definition at line 958 of file AffineMatrix4x4.h.

◆ crossMatrix()

template<typename T >
AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::crossMatrix ( const Vec3T< T > &  vec)
inlinestatic

Generates a new matrix of a specific type.

Definition at line 650 of file AffineMatrix4x4.h.

References agx::Vec3T< T >::x(), agx::Vec3T< T >::y(), and agx::Vec3T< T >::z().

◆ getInvTranslate()

template<typename T >
Vec3T< T > agx::AffineMatrix4x4T< T >::getInvTranslate
Returns
The inverse translation

Definition at line 467 of file AffineMatrix4x4.h.

◆ inverse()

◆ invert()

template<typename T >
bool agx::AffineMatrix4x4T< T >::invert ( const AffineMatrix4x4T< T > &  rhs)
protected

Definition at line 870 of file AffineMatrix4x4.h.

References agx::Matrix4x4T< T >::m_data.

Referenced by agx::AffineMatrix4x4T< T >::inverse().

◆ mult()

template<typename T >
void agx::AffineMatrix4x4T< T >::mult ( const AffineMatrix4x4T< T > &  lhs,
const AffineMatrix4x4T< T > &  rhs 
)

◆ multSSE() [1/3]

void agx::AffineMatrix4x4T< Real32 >::multSSE ( const AffineMatrix4x4T< Real32 > &  lhs,
const AffineMatrix4x4T< Real32 > &  rhs 
)

Definition at line 923 of file AffineMatrix4x4.h.

References agx::mult(), and agx::Matrix4x4T< T >::ptr().

◆ multSSE() [2/3]

void agx::AffineMatrix4x4T< Real64 >::multSSE ( const AffineMatrix4x4T< Real64 > &  lhs,
const AffineMatrix4x4T< Real64 > &  rhs 
)

Definition at line 933 of file AffineMatrix4x4.h.

References agx::mult(), and agx::Matrix4x4T< T >::ptr().

◆ multSSE() [3/3]

template<typename T >
void agx::AffineMatrix4x4T< T >::multSSE ( const AffineMatrix4x4T< T > &  lhs,
const AffineMatrix4x4T< T > &  rhs 
)

◆ operator!=()

template<typename T >
bool agx::AffineMatrix4x4T< T >::operator!= ( const AffineMatrix4x4T< T > &  m) const

Definition at line 490 of file AffineMatrix4x4.h.

References agx::Matrix4x4T< T >::m_data.

◆ operator*() [1/4]

template<typename T >
AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::operator* ( const AffineMatrix4x4T< T > &  m) const
inline

Definition at line 815 of file AffineMatrix4x4.h.

References agx::AffineMatrix4x4T< T >::mult().

◆ operator*() [2/4]

template<typename T >
Matrix4x4T< T > agx::AffineMatrix4x4T< T >::operator* ( const Matrix4x4T< T > &  m) const
inline

Definition at line 823 of file AffineMatrix4x4.h.

References agx::Matrix4x4T< T >::mult().

◆ operator*() [3/4]

template<typename T >
Vec3T< T > agx::AffineMatrix4x4T< T >::operator* ( const Vec3T< T > &  v) const

Definition at line 844 of file AffineMatrix4x4.h.

◆ operator*() [4/4]

template<typename T >
Vec4T< T > agx::AffineMatrix4x4T< T >::operator* ( const Vec4T< T > &  v) const

Definition at line 850 of file AffineMatrix4x4.h.

◆ operator*=()

template<typename T >
void agx::AffineMatrix4x4T< T >::operator*= ( const AffineMatrix4x4T< T > &  other)

Definition at line 832 of file AffineMatrix4x4.h.

◆ operator=()

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::operator= ( const AffineMatrix4x4T< T > &  rhs)
default

◆ operator==()

template<typename T >
bool agx::AffineMatrix4x4T< T >::operator== ( const AffineMatrix4x4T< T > &  m) const

Definition at line 483 of file AffineMatrix4x4.h.

References agx::Matrix4x4T< T >::m_data.

◆ postMult()

template<typename T >
void agx::AffineMatrix4x4T< T >::postMult ( const AffineMatrix4x4T< T > &  other)

◆ postMultTranslate()

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::postMultTranslate ( const Vec3T< T > &  v)

Definition at line 802 of file AffineMatrix4x4.h.

◆ preMult()

template<typename T >
void agx::AffineMatrix4x4T< T >::preMult ( const AffineMatrix4x4T< T > &  other)

◆ preMultTranslate()

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::preMultTranslate ( const Vec3T< T > &  v)

Definition at line 789 of file AffineMatrix4x4.h.

◆ rotate() [1/5]

template<typename T >
static AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::rotate ( const EulerAngles euler)
static

◆ rotate() [2/5]

template<typename T >
AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::rotate ( const Vec3T< T > &  from,
const Vec3T< T > &  to 
)
inlinestatic

Return a matrix which rotate a vector from from to to.

Parameters
from- start of rotation
to- end of rotation
Returns
A new matrix with specified rotation

Definition at line 677 of file AffineMatrix4x4.h.

References agx::AffineMatrix4x4T< T >::setRotate().

◆ rotate() [3/5]

template<typename T >
AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::rotate ( angle,
const Vec3T< T > &  axis 
)
inlinestatic

Return a matrix which rotate angle radians around vector axis.

Parameters
angle- angle in radians
axis- vector
Returns
A new matrix with specified rotation

Definition at line 693 of file AffineMatrix4x4.h.

References agx::AffineMatrix4x4T< T >::setRotate().

◆ rotate() [4/5]

template<typename T >
AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::rotate ( angle,
x,
y,
z 
)
inlinestatic

Return a matrix which rotate angle radians around vector [x,y,z].

Parameters
angle- angle in radians
x- x element of vector
y- y element of vector
z- z element of vector
Returns
A new matrix with specified rotation

Definition at line 685 of file AffineMatrix4x4.h.

References agx::AffineMatrix4x4T< T >::setRotate().

◆ rotate() [5/5]

template<typename T >
AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::rotate ( angle1,
const Vec3T< T > &  axis1,
angle2,
const Vec3T< T > &  axis2,
angle3,
const Vec3T< T > &  axis3 
)
inlinestatic

Return a matrix which rotate angle1 radians around vector axis1 and angle2 radians around vector axis2 angle3 radians around vector axis3.

Parameters
angle1- angle in radians
axis1- vector
angle2- angle in radians
axis2- vector
angle3- angle in radians
axis3- vector
Returns
A new matrix with specified rotation

Definition at line 701 of file AffineMatrix4x4.h.

References agx::AffineMatrix4x4T< T >::setRotate().

◆ set() [1/6]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::set ( const EulerAngles euler)

Set the rotational part of the matrix using the specified euler angles and the translational part to 0,0,0.

Parameters
euler- Specified euler angles rotation
Returns
a reference to the modified matrix

◆ set() [2/6]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::set ( const OrthoMatrix3x3 m3)

Set the rotational part of the matrix using the specified rotation matrix and the translational part to 0,0,0.

Parameters
m3- Specified rotation matrix
Returns
a reference to the modified matrix

Definition at line 542 of file AffineMatrix4x4.h.

◆ set() [3/6]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::set ( const QuatT< T > &  q)

Set the rotational part of the matrix using the specified quaternion and the translational part to 0,0,0.

Parameters
q- Specified quaternion
Returns
a reference to the modified matrix

Definition at line 532 of file AffineMatrix4x4.h.

◆ set() [4/6]

template<typename T >
void agx::AffineMatrix4x4T< T >::set ( Real  val,
size_t  i,
size_t  j 
)

Set the value of element i,j.

Definition at line 964 of file AffineMatrix4x4.h.

◆ set() [5/6]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::set ( a00,
a01,
a02,
a03,
a10,
a11,
a12,
a13,
a20,
a21,
a22,
a23,
a30,
a31,
a32,
a33 
)

Set the entire matrix using values from the 16 elements using the following order:

m_data[0][0] = a00; m_data[0][1] = a01; m_data[0][2] = a02; m_data[0][3] = a03;

m_data[1][0] = a04;

etc.

Parameters
a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,a30,a31,a32,a33- Matrix elements
Returns
a reference to the modified matrix with the new values

Definition at line 521 of file AffineMatrix4x4.h.

References agx::Matrix4x4T< T >::set().

◆ set() [6/6]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::set ( T const *const  ptr)

Set the entire matrix using values from the array with 16 elements using the following order:

m_data[0][0] = ptr[0]; m_data[0][1] = ptr[1]; m_data[0][2] = ptr[2]; m_data[0][3] = ptr[3];

m_data[1][0] = ptr[4];

etc.

Parameters
ptr- pointer to a vector with 16 elements
Returns
reference of the modified matrix with the new values

Definition at line 501 of file AffineMatrix4x4.h.

References agxAssert.

◆ setIdentity()

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setIdentity

Set the value of the matrix to the identity matrix.

Returns
a reference to the modified matrix

Definition at line 638 of file AffineMatrix4x4.h.

◆ setRotate() [1/7]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setRotate ( const EulerAngles euler)

Set the rotational part of the matrix using the specified euler angles leaving the translational part untouched.

Parameters
euler- Specified euler angles rotation
Returns
a reference to the modified matrix

◆ setRotate() [2/7]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setRotate ( const OrthoMatrix3x3 m3)

Set the rotational part of the matrix using the specified rotation matrix leaving the translational part untouched.

Parameters
m3- Specified rotation matrix
Returns
a reference to the modified matrix

Definition at line 559 of file AffineMatrix4x4.h.

◆ setRotate() [3/7]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setRotate ( const QuatT< T > &  q)

Set the rotational part of the matrix using the specified quaternion leaving the translational part untouched.

Parameters
q- Specified quaternion
Returns
a reference to the modified matrix

Definition at line 551 of file AffineMatrix4x4.h.

References agx::Matrix4x4T< T >::setRotate().

Referenced by agxSDK::getFuturePosition(), and agx::AffineMatrix4x4T< T >::rotate().

◆ setRotate() [4/7]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setRotate ( const Vec3T< T > &  from,
const Vec3T< T > &  to 
)

Set the rotational part of the matrix using the specified two vectors.

The resulting rotation will be a rotation matrix which rotates a vector from from to to leaving the translational part untouched.

Parameters
from- start of rotation
to- end of rotation
Returns
a reference to the modified matrix

Definition at line 577 of file AffineMatrix4x4.h.

References agx::QuatT< T >::setRotate().

◆ setRotate() [5/7]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setRotate ( angle,
const Vec3T< T > &  axis 
)

Set the rotational part of a matrix which rotate angle radians around vector axis.

Parameters
angle- angle in radians
axis- vector
Returns
A reference to the modified matrix

Definition at line 586 of file AffineMatrix4x4.h.

References agx::QuatT< T >::setRotate().

◆ setRotate() [6/7]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setRotate ( angle,
x,
y,
z 
)

Set the rotational part of a matrix which rotate angle radians around vector x y z.

Parameters
angle- angle in radians
x,y,z- vector
Returns
A reference to the modified matrix

Definition at line 595 of file AffineMatrix4x4.h.

References agx::QuatT< T >::setRotate().

◆ setRotate() [7/7]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setRotate ( angle1,
const Vec3T< T > &  axis1,
angle2,
const Vec3T< T > &  axis2,
angle3,
const Vec3T< T > &  axis3 
)

Set the rotational part of a matrix which rotate angle1 radians around vector axis1 and angle2 radians around vector axis2 angle3 radians around vector axis3.

Parameters
angle1- angle in radians
axis1- vector
angle2- angle in radians
axis2- vector
angle3- angle in radians
axis3- vector
Returns
A reference to the modified matrix

Definition at line 604 of file AffineMatrix4x4.h.

References agx::QuatT< T >::setRotate().

◆ setTranslate() [1/2]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setTranslate ( const Vec3T< T > &  t)

Set the translational part of the matrix using the vector t.

Parameters
t- translation vector
Returns
A reference to the modified matrix

Definition at line 617 of file AffineMatrix4x4.h.

Referenced by agxSDK::getFuturePosition(), agx::Frame::transformVectorToLocal(), and agx::AffineMatrix4x4T< T >::translate().

◆ setTranslate() [2/2]

template<typename T >
AffineMatrix4x4T< T > & agx::AffineMatrix4x4T< T >::setTranslate ( tx,
ty,
tz 
)

Set the translational part of the matrix using the vector x, y, z.

Parameters
tx,ty,tz- translation vector
Returns
A reference to the modified matrix

Definition at line 627 of file AffineMatrix4x4.h.

◆ transformPoint()

template<typename T >
agx::Vec3T< T > agx::AffineMatrix4x4T< T >::transformPoint ( const agx::Vec3T< T > &  point) const

Transforms a (mathematical) point, using both rotation and translation.

Definition at line 971 of file AffineMatrix4x4.h.

◆ transformVector()

template<typename T >
agx::Vec3T< T > agx::AffineMatrix4x4T< T >::transformVector ( const agx::Vec3T< T > &  vector) const

Transforms a (mathematical) vector, using only rotation.

Definition at line 977 of file AffineMatrix4x4.h.

◆ translate() [1/2]

template<typename T >
AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::translate ( const Vec3T< T > &  dv)
inlinestatic

Return a matrix which translates according to dv.

Parameters
dv- translation vector
Returns
A new matrix with specified translation

Definition at line 661 of file AffineMatrix4x4.h.

References agx::AffineMatrix4x4T< T >::setTranslate().

◆ translate() [2/2]

template<typename T >
AffineMatrix4x4T< T > agx::AffineMatrix4x4T< T >::translate ( x,
y,
z 
)
inlinestatic

Return a matrix which translates according to vector [x,y,z].

Parameters
x- x element of vector
y- y element of vector
z- z element of vector
Returns
A new matrix with specified translation

Definition at line 669 of file AffineMatrix4x4.h.

References agx::AffineMatrix4x4T< T >::setTranslate().


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