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.
 
 Matrix3 (const Matrix3< T > &_m)=default
 Copy constructor.
 
 Matrix3 (const Quaternion< T > &_q)
 Construct 3x3 rotation Matrix from a quaternion.
 
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.
 
 ~Matrix3 ()=default
 Desctructor.
 
void Axes (const Vector3< T > &_xAxis, const Vector3< T > &_yAxis, const Vector3< T > &_zAxis)
 Set the matrix from three axis (1 per column).
 
void Axis (const Vector3< T > &_axis, T _angle)
 Set as a rotation matrix from an axis and angle.
 
void Col (unsigned int _c, const Vector3< T > &_v)
 Set a column.
 
Determinant () const
 Return the determinant of the matrix.
 
bool Equal (const Matrix3 &_m, const T &_tol) const
 Equality test with tolerance.
 
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.
 
Matrix3< T > Inverse () const
 Return the inverse matrix.
 
bool operator!= (const Matrix3< T > &_m) const
 Inequality test operator.
 
T & operator() (size_t _row, size_t _col)
 Array subscript operator.
 
operator() (size_t _row, size_t _col) const
 Array subscript operator.
 
Matrix3< T > operator* (const Matrix3< T > &_m) const
 Matrix multiplication operator.
 
Matrix3< T > operator* (const T &_s) const
 Scalar multiplication operator.
 
Vector3< T > operator* (const Vector3< T > &_vec) const
 Multiplication operator with Vector3 on the right treated like a column vector.
 
Matrix3< T > operator+ (const Matrix3< T > &_m) const
 Addition operation.
 
Matrix3< T > operator- (const Matrix3< T > &_m) const
 Subtraction operator.
 
Matrix3< T > & operator= (const Matrix3< T > &_mat)=default
 Equal operator. this = _mat.
 
Matrix3< T > & operator= (const Quaternion< T > &_q)
 Set as a 3x3 rotation matrix from a quaternion.
 
bool operator== (const Matrix3< T > &_m) const
 Equality test operator.
 
void Set (size_t _row, size_t _col, T _v)
 Set a single value.
 
void Set (T _v00, T _v01, T _v02, T _v10, T _v11, T _v12, T _v20, T _v21, T _v22)
 Set values.
 
void SetAxes (const Vector3< T > &_xAxis, const Vector3< T > &_yAxis, const Vector3< T > &_zAxis)
 Set the matrix from three axis (1 per column).
 
void SetCol (unsigned int _c, const Vector3< T > &_v)
 Set a column.
 
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.
 
void SetFromAxisAngle (const Vector3< T > &_axis, T _angle)
 Set as a rotation matrix from an axis and angle.
 
void Transpose ()
 Transpose this matrix.
 
Matrix3< T > Transposed () const
 Return the transpose of this matrix.
 

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).
 
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).
 

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]

template<typename T >
Matrix3 ( )
inline

Default constructor that initializes the matrix3 to zero.

References std::memset().

◆ Matrix3() [2/4]

template<typename T >
Matrix3 ( const Matrix3< T > & _m)
default

Copy constructor.

Parameters
_mMatrix to copy

◆ Matrix3() [3/4]

template<typename T >
constexpr Matrix3 ( T _v00,
T _v01,
T _v02,
T _v10,
T _v11,
T _v12,
T _v20,
T _v21,
T _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]

template<typename T >
Matrix3 ( const Quaternion< T > & _q)
inlineexplicit

Construct 3x3 rotation Matrix from a quaternion.

Parameters
[in]_qQuaternion to set the Matrix3 from.

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

◆ ~Matrix3()

template<typename T >
~Matrix3 ( )
default

Desctructor.

Member Function Documentation

◆ Axes()

template<typename T >
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> &,)

◆ Axis()

template<typename T >
void Axis ( const Vector3< T > & _axis,
T _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)

◆ Col()

template<typename T >
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)

◆ Determinant()

template<typename T >
T Determinant ( ) const
inline

Return the determinant of the matrix.

Returns
Determinant of this matrix.

◆ Equal()

template<typename T >
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.

◆ From2Axes()

template<typename T >
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> &)

◆ Inverse()

template<typename T >
Matrix3< T > Inverse ( ) const
inline

Return the inverse matrix.

Returns
Inverse of this matrix.

◆ operator!=()

template<typename T >
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]

template<typename T >
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]

template<typename T >
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]

template<typename T >
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]

template<typename T >
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]

template<typename T >
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+()

template<typename T >
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-()

template<typename T >
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]

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

Equal operator. this = _mat.

Parameters
_matMatrix to copy.
Returns
This matrix.

◆ operator=() [2/2]

template<typename T >
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==()

template<typename T >
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).

◆ Set() [1/2]

template<typename T >
void Set ( size_t _row,
size_t _col,
T _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.

◆ Set() [2/2]

template<typename T >
void Set ( T _v00,
T _v01,
T _v02,
T _v10,
T _v11,
T _v12,
T _v20,
T _v21,
T _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()

template<typename T >
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.

◆ SetCol()

template<typename T >
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().

◆ SetFrom2Axes()

template<typename T >
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(), Vector3< T >::Normalize(), and Vector3< T >::SquaredLength().

◆ SetFromAxisAngle()

template<typename T >
void SetFromAxisAngle ( const Vector3< T > & _axis,
T _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().

◆ Transpose()

template<typename T >
void Transpose ( )
inline

Transpose this matrix.

References std::swap().

◆ Transposed()

template<typename T >
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

template<typename T >
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

template<typename T >
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: