Ignition Math

API Reference

6.4.0
Matrix3< T > Class Template Reference

A 3x3 matrix class. More...

#include <ignition/math/Matrix3.hh>

Public Member Functions

 Matrix3 ()
 Constructor. More...
 
 Matrix3 (const Matrix3< T > &_m)
 Copy constructor. More...
 
 Matrix3 (T _v00, T _v01, T _v02, T _v10, T _v11, T _v12, T _v20, T _v21, T _v22)
 Constructor. More...
 
 Matrix3 (const Quaternion< T > &_q)
 Construct Matrix3 from a quaternion. More...
 
virtual ~Matrix3 ()
 Desctructor. More...
 
void Axes (const Vector3< T > &_xAxis, const Vector3< T > &_yAxis, const Vector3< T > &_zAxis)
 Set the matrix from three axis (1 per column) More...
 
void Axis (const Vector3< T > &_axis, T _angle)
 Set the matrix from an axis and angle. More...
 
void Col (unsigned int _c, const Vector3< T > &_v)
 Set a column. More...
 
Determinant () const
 Return the determinant of the matrix. More...
 
bool Equal (const Matrix3 &_m, const T &_tol) const
 Equality test with tolerance. More...
 
void From2Axes (const Vector3< T > &_v1, const Vector3< T > &_v2)
 Set the matrix to represent rotation from vector _v1 to vector _v2, so that _v2.Normalize() == this * _v1.Normalize() holds. More...
 
Matrix3< T > Inverse () const
 Return the inverse matrix. More...
 
bool operator!= (const Matrix3< T > &_m) const
 Inequality test operator. More...
 
const T & operator() (size_t _row, size_t _col) const
 Array subscript operator. More...
 
T & operator() (size_t _row, size_t _col)
 Array subscript operator. More...
 
Matrix3< T > operator* (const T &_s) const
 returns the element wise scalar multiplication More...
 
Matrix3< T > operator* (const Matrix3< T > &_m) const
 Matrix multiplication operator. More...
 
Vector3< T > operator* (const Vector3< T > &_vec) const
 Multiplication operator with Vector3 on the right treated like a column vector. More...
 
Matrix3< T > operator+ (const Matrix3< T > &_m) const
 returns the element wise sum of two matrices More...
 
Matrix3< T > operator- (const Matrix3< T > &_m) const
 returns the element wise difference of two matrices More...
 
Matrix3< T > & operator= (const Matrix3< T > &_mat)
 Equal operator. this = _mat. More...
 
Matrix3< T > & operator= (const Quaternion< T > &_q)
 Set the matrix3 from a quaternion. More...
 
bool operator== (const Matrix3< T > &_m) const
 Equality test operator. More...
 
void Set (T _v00, T _v01, T _v02, T _v10, T _v11, T _v12, T _v20, T _v21, T _v22)
 Set values. More...
 
void Transpose ()
 Transpose this matrix. More...
 
Matrix3< T > Transposed () const
 Return the transpose of this matrix. More...
 

Static Public Attributes

static const Matrix3< T > Identity
 Identity matrix. More...
 
static const Matrix3< T > Zero
 Zero matrix. More...
 

Friends

Matrix3< T > operator* (T _s, const Matrix3< T > &_m)
 Matrix multiplication operator for scaling. More...
 
Vector3< T > operator* (const Vector3< T > &_v, const Matrix3< T > &_m)
 Matrix left multiplication operator for Vector3. Treats the Vector3 like a row vector multiplying the matrix from the left. More...
 
std::ostreamoperator<< (std::ostream &_out, const Matrix3< T > &_m)
 Stream insertion operator. More...
 
std::istreamoperator>> (std::istream &_in, Matrix3< T > &_m)
 Stream extraction operator. More...
 

Detailed Description

template<typename T>
class ignition::math::Matrix3< T >

A 3x3 matrix class.

Constructor & Destructor Documentation

◆ Matrix3() [1/4]

Matrix3 ( )
inline

Constructor.

References std::memset().

◆ Matrix3() [2/4]

Matrix3 ( const Matrix3< T > &  _m)
inline

Copy constructor.

Parameters
_mMatrix to copy

References std::memcpy().

◆ Matrix3() [3/4]

Matrix3 ( _v00,
_v01,
_v02,
_v10,
_v11,
_v12,
_v20,
_v21,
_v22 
)
inline

Constructor.

Parameters
[in]_v00Row 0, Col 0 value
[in]_v01Row 0, Col 1 value
[in]_v02Row 0, Col 2 value
[in]_v10Row 1, Col 0 value
[in]_v11Row 1, Col 1 value
[in]_v12Row 1, Col 2 value
[in]_v20Row 2, Col 0 value
[in]_v21Row 2, Col 1 value
[in]_v22Row 2, Col 2 value

◆ Matrix3() [4/4]

Matrix3 ( const Quaternion< T > &  _q)
inlineexplicit

◆ ~Matrix3()

virtual ~Matrix3 ( )
inlinevirtual

Desctructor.

Member Function Documentation

◆ Axes()

void Axes ( const Vector3< T > &  _xAxis,
const Vector3< T > &  _yAxis,
const Vector3< T > &  _zAxis 
)
inline

Set the matrix from three axis (1 per column)

Parameters
[in]_xAxisThe x axis
[in]_yAxisThe y axis
[in]_zAxisThe z axis

References Matrix3< T >::Col().

◆ Axis()

void Axis ( const Vector3< T > &  _axis,
_angle 
)
inline

Set the matrix from an axis and angle.

Parameters
[in]_axisthe axis
[in]_angleccw rotation around the axis in radians

References Vector3< T >::X(), Vector3< T >::Y(), and Vector3< T >::Z().

Referenced by Matrix3< T >::From2Axes().

◆ Col()

void Col ( unsigned int  _c,
const Vector3< T > &  _v 
)
inline

Set a column.

Parameters
[in]_cThe colum index [0, 1, 2]. _col is clamped to the range [0, 2].
[in]_vThe value to set in each row of the column.

References ignition::math::clamp(), Vector3< T >::X(), Vector3< T >::Y(), and Vector3< T >::Z().

Referenced by Matrix3< T >::Axes().

◆ Determinant()

T Determinant ( ) const
inline

Return the determinant of the matrix.

Returns
Determinant of this matrix.

◆ Equal()

bool Equal ( const Matrix3< T > &  _m,
const T &  _tol 
) const
inline

Equality test with tolerance.

Parameters
[in]_mthe matrix to compare to
[in]_tolequality tolerance.
Returns
true if the elements of the matrices are equal within the tolerence specified by _tol.

Referenced by Matrix3< T >::operator==().

◆ From2Axes()

void From2Axes ( const Vector3< T > &  _v1,
const Vector3< T > &  _v2 
)
inline

Set the matrix to represent rotation from vector _v1 to vector _v2, so that _v2.Normalize() == this * _v1.Normalize() holds.

Parameters
[in]_v1The first vector
[in]_v2The second vector

References Matrix3< T >::Axis(), Vector3< T >::Cross(), Vector3< T >::Dot(), Matrix3< T >::Set(), and Vector3< T >::SquaredLength().

◆ Inverse()

Matrix3<T> Inverse ( ) const
inline

Return the inverse matrix.

Returns
Inverse of this matrix.

◆ operator!=()

bool operator!= ( const Matrix3< T > &  _m) const
inline

Inequality test operator.

Parameters
[in]_mMatrix3<T> to test
Returns
True if not equal (using the default tolerance of 1e-6)

◆ operator()() [1/2]

const T& operator() ( size_t  _row,
size_t  _col 
) const
inline

Array subscript operator.

Parameters
[in]_rowrow index. _row is clamped to the range [0,2]
[in]_colcolumn index. _col is clamped to the range [0,2]
Returns
a pointer to the row

References ignition::math::clamp(), ignition::math::IGN_TWO_SIZE_T, and ignition::math::IGN_ZERO_SIZE_T.

◆ operator()() [2/2]

T& operator() ( size_t  _row,
size_t  _col 
)
inline

Array subscript operator.

Parameters
[in]_rowrow index. _row is clamped to the range [0,2]
[in]_colcolumn index. _col is clamped to the range [0,2]
Returns
a pointer to the row

References ignition::math::clamp(), ignition::math::IGN_TWO_SIZE_T, and ignition::math::IGN_ZERO_SIZE_T.

◆ operator*() [1/3]

Matrix3<T> operator* ( const T &  _s) const
inline

returns the element wise scalar multiplication

◆ operator*() [2/3]

Matrix3<T> operator* ( const Matrix3< T > &  _m) const
inline

Matrix multiplication operator.

Parameters
[in]_mMatrix3<T> to multiply
Returns
product of this * _m

◆ operator*() [3/3]

Vector3<T> operator* ( const Vector3< T > &  _vec) const
inline

Multiplication operator with Vector3 on the right treated like a column vector.

Parameters
_vecVector3
Returns
Resulting vector from multiplication

References Vector3< T >::X(), Vector3< T >::Y(), and Vector3< T >::Z().

◆ operator+()

Matrix3<T> operator+ ( const Matrix3< T > &  _m) const
inline

returns the element wise sum of two matrices

◆ operator-()

Matrix3<T> operator- ( const Matrix3< T > &  _m) const
inline

returns the element wise difference of two matrices

◆ operator=() [1/2]

Matrix3<T>& operator= ( const Matrix3< T > &  _mat)
inline

Equal operator. this = _mat.

Parameters
_matIncoming matrix
Returns
itself

◆ operator=() [2/2]

Matrix3<T>& operator= ( const Quaternion< T > &  _q)
inline

Set the matrix3 from a quaternion.

Parameters
[in]_qQuaternion to set the matrix3 from.
Returns
Reference to the new matrix3 object.

◆ operator==()

bool operator== ( const Matrix3< T > &  _m) const
inline

Equality test operator.

Parameters
[in]_mMatrix3<T> to test
Returns
True if equal (using the default tolerance of 1e-6)

References Matrix3< T >::Equal().

◆ Set()

void Set ( _v00,
_v01,
_v02,
_v10,
_v11,
_v12,
_v20,
_v21,
_v22 
)
inline

Set values.

Parameters
[in]_v00Row 0, Col 0 value
[in]_v01Row 0, Col 1 value
[in]_v02Row 0, Col 2 value
[in]_v10Row 1, Col 0 value
[in]_v11Row 1, Col 1 value
[in]_v12Row 1, Col 2 value
[in]_v20Row 2, Col 0 value
[in]_v21Row 2, Col 1 value
[in]_v22Row 2, Col 2 value

Referenced by Matrix3< T >::From2Axes(), and Matrix3< T >::Matrix3().

◆ Transpose()

void Transpose ( )
inline

Transpose this matrix.

References std::swap().

◆ Transposed()

Matrix3<T> Transposed ( ) const
inline

Return the transpose of this matrix.

Returns
Transpose of this matrix.

Referenced by MassMatrix3< T >::SetFromBox(), MassMatrix3< T >::SetFromCylinderZ(), and Inertial< T >::SetMassMatrixRotation().

Friends And Related Function Documentation

◆ operator* [1/2]

Matrix3<T> operator* ( _s,
const Matrix3< T > &  _m 
)
friend

Matrix multiplication operator for scaling.

Parameters
[in]_sScaling factor.
[in]_mInput matrix.
Returns
A scaled matrix.

◆ operator* [2/2]

Vector3<T> operator* ( const Vector3< T > &  _v,
const Matrix3< T > &  _m 
)
friend

Matrix left multiplication operator for Vector3. Treats the Vector3 like a row vector multiplying the matrix from the left.

Parameters
[in]_vInput vector.
[in]_mInput matrix.
Returns
The product vector.

◆ operator<<

std::ostream& operator<< ( std::ostream _out,
const Matrix3< T > &  _m 
)
friend

Stream insertion operator.

Parameters
[in]_outOutput stream
[in]_mMatrix to output
Returns
the stream

◆ operator>>

std::istream& operator>> ( std::istream _in,
Matrix3< T > &  _m 
)
friend

Stream extraction operator.

Parameters
[in,out]_ininput stream
[out]_mMatrix3 to read values into
Returns
the stream

Member Data Documentation

◆ Identity

const Matrix3< T > Identity
static

Identity matrix.

◆ Zero

const Matrix3< T > Zero
static

Zero matrix.


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