Gazebo Math

API Reference

7.4.0
Matrix3< T > Class Template Reference

A 3x3 matrix class. More...

#include <gz/math/Matrix3.hh>

Public Member Functions

 Matrix3 ()
 Default constructor that initializes the matrix3 to zero. More...
 
 Matrix3 (const Matrix3< T > &_m)=default
 Copy constructor. More...
 
 Matrix3 (const Quaternion< T > &_q)
 Construct 3x3 rotation Matrix from a quaternion. More...
 
constexpr Matrix3 (T _v00, T _v01, T _v02, T _v10, T _v11, T _v12, T _v20, T _v21, T _v22)
 Construct a matrix3 using nine values. More...
 
 ~Matrix3 ()=default
 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 as a rotation 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 as a rotation 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...
 
T & operator() (size_t _row, size_t _col)
 Array subscript operator. More...
 
operator() (size_t _row, size_t _col) const
 Array subscript operator. More...
 
Matrix3< T > operator* (const Matrix3< T > &_m) const
 Matrix multiplication operator. More...
 
Matrix3< T > operator* (const T &_s) const
 Scalar 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
 Addition operation. More...
 
Matrix3< T > operator- (const Matrix3< T > &_m) const
 Subtraction operator. More...
 
Matrix3< T > & operator= (const Matrix3< T > &_mat)=default
 Equal operator. this = _mat. More...
 
Matrix3< T > & operator= (const Quaternion< T > &_q)
 Set as a 3x3 rotation matrix from a quaternion. More...
 
bool operator== (const Matrix3< T > &_m) const
 Equality test operator. More...
 
void Set (size_t _row, size_t _col, T _v)
 Set a single value. 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 SetAxes (const Vector3< T > &_xAxis, const Vector3< T > &_yAxis, const Vector3< T > &_zAxis)
 Set the matrix from three axis (1 per column). More...
 
void SetCol (unsigned int _c, const Vector3< T > &_v)
 Set a column. More...
 
void SetFrom2Axes (const Vector3< T > &_v1, const Vector3< T > &_v2)
 Set as a rotation matrix to represent rotation from vector _v1 to vector _v2, so that _v2.Normalize() == this * _v1.Normalize() holds. More...
 
void SetFromAxisAngle (const Vector3< T > &_axis, T _angle)
 Set as a rotation matrix from an axis and angle. 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 = detail::gMatrix3Identity<T>
 A Matrix3 initialized to identity. This is equivalent to math::Matrix3<T>(1, 0, 0, 0, 1, 0, 0, 0, 1). More...
 
static const Matrix3< T > & Zero = detail::gMatrix3Zero<T>
 A Matrix3 initialized to zero. This is equivalent to math::Matrix3<T>(0, 0, 0, 0, 0, 0, 0, 0, 0). More...
 

Detailed Description

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

A 3x3 matrix class.

The following two type definitions are provided:

  • Matrix3i : Equivalent to Matrix3<int>
  • Matrix3f : Equivalent to Matrix3<float>
  • Matrix3d : Equivalent to Matrix3<double>

Examples

  • C++
#include <iostream>
int main(int argc, char **argv)
{
// Construct a default matrix3.
std::cout << "The default constructed matrix m has the following values.\n\t"
<< m << std::endl;
// Set the first column of the matrix.
m.SetCol(0, gz::math::Vector3d(3, 4, 5));
std::cout << "Setting the first column of the matrix m to 3, 4, 5.\n\t"
<< m << std::endl;
// Transpose the matrix.
std::cout << "The transposed matrix t has the values.\n\t"
<< t << std::endl;
// Multiply the two matrices.
std::cout << "m * t = " << m * t << std::endl;
}
  • Ruby
    # Modify the RUBYLIB environment variable to include the Gazebo Math
    # library install path. For example, if you install to /user:
    #
    # $ export RUBYLIB=/usr/lib/ruby:$RUBYLIB
    #
    require 'gz/math'
    # Construct a default matrix3.
    m = Gz::Math::Matrix3d.new
    printf("The default constructed matrix m has the following "+
    "values.\n\t" +
    "%2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f\n",
    m.(0, 0), m.(0, 1), m.(0, 2),
    m.(1, 0), m.(1, 1), m.(1, 2),
    m.(2, 0), m.(2, 1), m.(2, 2))
    # Set the first column of the matrix.
    m.SetCol(0, Gz::Math::Vector3d.new(3, 4, 5))
    printf("Setting the first column of the matrix m to 3, 4, 5.\n\t" +
    "%2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f\n",
    m.(0, 0), m.(0, 1), m.(0, 2),
    m.(1, 0), m.(1, 1), m.(1, 2),
    m.(2, 0), m.(2, 1), m.(2, 2))
    # Transpose the matrix.
    t = m.Transposed()
    printf("The transposed matrix t has the values.\n\t"+
    "%2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f\n",
    t.(0, 0), t.(0, 1), t.(0, 2),
    t.(1, 0), t.(1, 1), t.(1, 2),
    t.(2, 0), t.(2, 1), t.(2, 2))
    # Multiply the two matrices.
    m = m * t
    printf("m * t = " +
    "%2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f %2.1f\n",
    m.(0, 0), m.(0, 1), m.(0, 2),
    m.(1, 0), m.(1, 1), m.(1, 2),
    m.(2, 0), m.(2, 1), m.(2, 2))

Constructor & Destructor Documentation

◆ Matrix3() [1/4]

Matrix3 ( )
inline

Default constructor that initializes the matrix3 to zero.

References std::memset().

◆ Matrix3() [2/4]

Matrix3 ( const Matrix3< T > &  _m)
default

Copy constructor.

Parameters
_mMatrix to copy

◆ Matrix3() [3/4]

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

Construct a matrix3 using nine 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

◆ Matrix3() [4/4]

Matrix3 ( const Quaternion< T > &  _q)
inlineexplicit

Construct 3x3 rotation Matrix from a quaternion.

Parameters
[in]_qQuaternion to set the Matrix3 from.

References Quaternion::Normalize(), Matrix3< T >::Set(), Quaternion::W(), Quaternion::X(), Quaternion::Y(), and Quaternion::Z().

◆ ~Matrix3()

~Matrix3 ( )
default

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, the first column of the matrix.
[in]_yAxisThe y axis, the second column of the matrix.
[in]_zAxisThe z axis, the third column of the matrix.
Deprecated:
Use SetAxes(const Vector3<T> &, const Vector3<T> &, const Vector3<T> &,)

References Matrix3< T >::SetAxes().

◆ Axis()

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

Set as a rotation matrix from an axis and angle.

Parameters
[in]_axisthe axis
[in]_angleccw rotation around the axis in radians
Deprecated:
Use SetFromAxisAngle(const Vector3<T> &, T)

References Matrix3< T >::SetFromAxisAngle().

◆ 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.
Deprecated:
Use SetCol(unsigned int _c, const Vector3<T> &_v)

References Matrix3< T >::SetCol().

◆ 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 as a rotation 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
Deprecated:
Use SetFrom2Axes(const Vector3<T> &, const Vector3<T> &)

References Matrix3< T >::SetFrom2Axes().

◆ 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]

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 gz::math::clamp(), gz::math::GZ_TWO_SIZE_T, and gz::math::GZ_ZERO_SIZE_T.

◆ operator()() [2/2]

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 gz::math::clamp(), gz::math::GZ_TWO_SIZE_T, and gz::math::GZ_ZERO_SIZE_T.

◆ operator*() [1/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*() [2/3]

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

Scalar multiplication operator.

Parameters
[in]_sValue to multiply.
Returns
The element wise scalar multiplication.

◆ 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

Addition operation.

Parameters
[in]_mMatrix to add.
Returns
The element wise sum of two matrices

◆ operator-()

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

Subtraction operator.

Parameters
[in]_mMatrix to subtract.
Returns
The element wise difference of two matrices.

◆ operator=() [1/2]

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

Equal operator. this = _mat.

Parameters
_matMatrix to copy.
Returns
This matrix.

◆ operator=() [2/2]

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

Set as a 3x3 rotation matrix 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() [1/2]

void Set ( size_t  _row,
size_t  _col,
_v 
)
inline

Set a single value.

Parameters
[in]_rowrow index. _row is clamped to the range [0,2]
[in]_colcolumn index. _col is clamped to the range [0,2]
[in]_vNew value.

References gz::math::clamp(), gz::math::GZ_TWO_SIZE_T, and gz::math::GZ_ZERO_SIZE_T.

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

◆ Set() [2/2]

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

◆ SetAxes()

void SetAxes ( 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, the first column of the matrix.
[in]_yAxisThe y axis, the second column of the matrix.
[in]_zAxisThe z axis, the third column of the matrix.

References Matrix3< T >::SetCol().

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

◆ SetCol()

void SetCol ( 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 gz::math::clamp(), Vector3< T >::X(), Vector3< T >::Y(), and Vector3< T >::Z().

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

◆ SetFrom2Axes()

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

Set as a rotation 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 Vector3< T >::Cross(), Vector3< T >::Dot(), Matrix3< T >::Set(), Matrix3< T >::SetFromAxisAngle(), and Vector3< T >::SquaredLength().

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

◆ SetFromAxisAngle()

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

Set as a rotation 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 >::Axis(), and Matrix3< T >::SetFrom2Axes().

◆ 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(), and MassMatrix3< T >::SetFromCylinderZ().

Member Data Documentation

◆ Identity

const Matrix3< T > & Identity = detail::gMatrix3Identity<T>
static

A Matrix3 initialized to identity. This is equivalent to math::Matrix3<T>(1, 0, 0, 0, 1, 0, 0, 0, 1).

◆ Zero

const Matrix3< T > & Zero = detail::gMatrix3Zero<T>
static

A Matrix3 initialized to zero. This is equivalent to math::Matrix3<T>(0, 0, 0, 0, 0, 0, 0, 0, 0).


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