A 3x3 matrix class. More...
#include <gz/math/Matrix3.hh>
Public Member Functions | |
Matrix3 () | |
Default constructor that initializes the matrix3 to zero. | |
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. | |
T | Determinant () const |
Return the determinant of the matrix. | |
bool | Equal (const Matrix3 &_m, const T &_tol) const |
Equality test with tolerance. | |
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. | |
T | 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 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
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/3]
Default constructor that initializes the matrix3 to zero.
References std::memset().
◆ Matrix3() [2/3]
|
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() [3/3]
|
inlineexplicit |
Construct 3x3 rotation Matrix from a quaternion.
- Parameters
-
[in] _q Quaternion to set the Matrix3 from.
Member Function Documentation
◆ Determinant()
|
inline |
Return the determinant of the matrix.
- Returns
- Determinant of this matrix.
◆ Equal()
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.
◆ Inverse()
Return the inverse matrix.
- Returns
- Inverse of this matrix.
◆ operator!=()
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]
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]
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]
Scalar multiplication operator.
- Parameters
-
[in] _s Value to multiply.
- Returns
- The element wise scalar multiplication.
◆ operator*() [3/3]
◆ 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=()
|
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==()
Equality test operator.
- Parameters
-
[in] _m Matrix3<T> to test.
- Returns
- True if equal (using the default tolerance of 1e-6).
◆ Set() [1/2]
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()
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().
◆ SetFrom2Axes()
|
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] _v1 The first vector [in] _v2 The second vector
◆ SetFromAxisAngle()
Set as a rotation matrix from an axis and angle.
- Parameters
-
[in] _axis the axis [in] _angle ccw rotation around the axis in radians
◆ Transpose()
Transpose this matrix.
References std::swap().
◆ Transposed()
Return the transpose of this matrix.
- Returns
- Transpose of this matrix.
Member Data Documentation
◆ Identity
A Matrix3 initialized to identity. This is equivalent to math::Matrix3<T>(1, 0, 0, 0, 1, 0, 0, 0, 1).
◆ Zero
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: