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... | |
T | 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... | |
T | 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++
- 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.newprintf("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 * tprintf("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]
|
inline |
Default constructor that initializes the matrix3 to zero.
References std::memset().
◆ Matrix3() [2/4]
◆ Matrix3() [3/4]
|
inlineconstexpr |
Construct a matrix3 using nine values.
- Parameters
-
[in] _v00 Row 0, Col 0 value [in] _v01 Row 0, Col 1 value [in] _v02 Row 0, Col 2 value [in] _v10 Row 1, Col 0 value [in] _v11 Row 1, Col 1 value [in] _v12 Row 1, Col 2 value [in] _v20 Row 2, Col 0 value [in] _v21 Row 2, Col 1 value [in] _v22 Row 2, Col 2 value
◆ Matrix3() [4/4]
|
inlineexplicit |
Construct 3x3 rotation Matrix from a quaternion.
- Parameters
-
[in] _q Quaternion to set the Matrix3 from.
References Quaternion< T >::Normalize(), Quaternion< T >::W(), Quaternion< T >::X(), Quaternion< T >::Y(), and Quaternion< T >::Z().
◆ ~Matrix3()
|
default |
Desctructor.
Member Function Documentation
◆ Axes()
|
inline |
Set the matrix from three axis (1 per column).
- Parameters
-
[in] _xAxis The x axis, the first column of the matrix. [in] _yAxis The y axis, the second column of the matrix. [in] _zAxis The z axis, the third column of the matrix.
- Deprecated:
- Use SetAxes(const Vector3<T> &, const Vector3<T> &, const Vector3<T> &,)
◆ Axis()
|
inline |
Set as a rotation matrix from an axis and angle.
- Parameters
-
[in] _axis the axis [in] _angle ccw rotation around the axis in radians
◆ Col()
|
inline |
Set a column.
- Parameters
-
[in] _c The colum index [0, 1, 2]. _col is clamped to the range [0, 2]. [in] _v The value to set in each row of the column.
◆ Determinant()
|
inline |
Return the determinant of the matrix.
- Returns
- Determinant of this matrix.
◆ Equal()
|
inline |
Equality test with tolerance.
- Parameters
-
[in] _m the matrix to compare to [in] _tol equality tolerance.
- Returns
- true if the elements of the matrices are equal within the tolerence specified by _tol.
◆ From2Axes()
Set as a rotation matrix to represent rotation from vector _v1 to vector _v2, so that _v2.Normalize() == this * _v1.Normalize() holds.
- Parameters
-
[in] _v1 The first vector [in] _v2 The second vector
◆ Inverse()
|
inline |
Return the inverse matrix.
- Returns
- Inverse of this matrix.
◆ operator!=()
|
inline |
Inequality test operator.
- Parameters
-
[in] _m Matrix3<T> to test.
- Returns
- True if not equal (using the default tolerance of 1e-6).
◆ operator()() [1/2]
|
inline |
Array subscript operator.
- Parameters
-
[in] _row row index. _row is clamped to the range [0,2] [in] _col column 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]
|
inline |
Array subscript operator.
- Parameters
-
[in] _row row index. _row is clamped to the range [0,2] [in] _col column 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]
Matrix multiplication operator.
- Parameters
-
[in] _m Matrix3<T> to multiply
- Returns
- Product of this * _m
◆ operator*() [2/3]
|
inline |
Scalar multiplication operator.
- Parameters
-
[in] _s Value to multiply.
- Returns
- The element wise scalar multiplication.
◆ operator*() [3/3]
Multiplication operator with Vector3 on the right treated like a column vector.
- Parameters
-
_vec Vector3
- Returns
- Resulting vector from multiplication
References Vector3< T >::X(), Vector3< T >::Y(), and Vector3< T >::Z().
◆ operator+()
Addition operation.
- Parameters
-
[in] _m Matrix to add.
- Returns
- The element wise sum of two matrices
◆ operator-()
Subtraction operator.
- Parameters
-
[in] _m Matrix to subtract.
- Returns
- The element wise difference of two matrices.
◆ operator=() [1/2]
Equal operator. this = _mat.
- Parameters
-
_mat Matrix to copy.
- Returns
- This matrix.
◆ operator=() [2/2]
|
inline |
Set as a 3x3 rotation matrix from a quaternion.
- Parameters
-
[in] _q Quaternion to set the matrix3 from.
- Returns
- Reference to the new matrix3 object.
◆ operator==()
|
inline |
Equality test operator.
- Parameters
-
[in] _m Matrix3<T> to test.
- Returns
- True if equal (using the default tolerance of 1e-6).
◆ Set() [1/2]
|
inline |
Set a single value.
- Parameters
-
[in] _row row index. _row is clamped to the range [0,2] [in] _col column index. _col is clamped to the range [0,2] [in] _v New value.
References gz::math::clamp(), gz::math::GZ_TWO_SIZE_T, and gz::math::GZ_ZERO_SIZE_T.
◆ Set() [2/2]
|
inline |
Set values.
- Parameters
-
[in] _v00 Row 0, Col 0 value [in] _v01 Row 0, Col 1 value [in] _v02 Row 0, Col 2 value [in] _v10 Row 1, Col 0 value [in] _v11 Row 1, Col 1 value [in] _v12 Row 1, Col 2 value [in] _v20 Row 2, Col 0 value [in] _v21 Row 2, Col 1 value [in] _v22 Row 2, Col 2 value
◆ SetAxes()
|
inline |
Set the matrix from three axis (1 per column).
- Parameters
-
[in] _xAxis The x axis, the first column of the matrix. [in] _yAxis The y axis, the second column of the matrix. [in] _zAxis The z axis, the third column of the matrix.
◆ SetCol()
|
inline |
Set a column.
- Parameters
-
[in] _c The colum index [0, 1, 2]. _col is clamped to the range [0, 2]. [in] _v The value to set in each row of the column.
References gz::math::clamp(), Vector3< T >::X(), Vector3< T >::Y(), and Vector3< T >::Z().
◆ SetFrom2Axes()
Set as a rotation matrix to represent rotation from vector _v1 to vector _v2, so that _v2.Normalize() == this * _v1.Normalize() holds.
- Parameters
-
[in] _v1 The first vector [in] _v2 The second vector
References Vector3< T >::Cross(), Vector3< T >::Dot(), Vector3< T >::Normalize(), and Vector3< T >::SquaredLength().
◆ SetFromAxisAngle()
|
inline |
Set as a rotation matrix from an axis and angle.
- Parameters
-
[in] _axis the axis [in] _angle ccw rotation around the axis in radians
References Vector3< T >::X(), Vector3< T >::Y(), and Vector3< T >::Z().
◆ Transpose()
|
inline |
Transpose this matrix.
References std::swap().
◆ Transposed()
|
inline |
Return the transpose of this matrix.
- Returns
- Transpose of this matrix.
Referenced by MassMatrix3< T >::SetFromBox(), MassMatrix3< T >::SetFromConeZ(), and MassMatrix3< T >::SetFromCylinderZ().
Member Data Documentation
◆ Identity
|
static |
A Matrix3 initialized to identity. This is equivalent to math::Matrix3<T>(1, 0, 0, 0, 1, 0, 0, 0, 1).
◆ Zero
|
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: