|
MatrixType & | operator~ () |
| Conversion operator for non-constant matrices.
|
|
const MatrixType & | operator~ () const |
| Conversion operator for constant matrices.
|
|
|
RotationMatrix & | operator= (const RotationMatrix &rhs) |
| Copy assignment operator for RotationMatrix.
|
|
template<typename Other > |
RotationMatrix & | operator= (const RotationMatrix< Other > &rhs) |
| Assignment operator for different RotationMatrix instances.
|
|
Type | operator[] (size_t index) const |
| 1D-access to the rotation matrix elements.
|
|
Type | operator() (size_t i, size_t j) const |
| 2D-access to the rotation matrix elements.
|
|
template<typename Other > |
RotationMatrix & | operator*= (const RotationMatrix< Other > &rhs) |
| Multiplication assignment operator for the multiplication between two rotation matrices ( ).
|
|
|
size_t | rows () const |
| Returns the current number of rows of the rotation matrix.
|
|
size_t | columns () const |
| Returns the current number of columns of the rotation matrix.
|
|
void | reset () |
| Reset to the default initial values.
|
|
Type | getDeterminant () const |
| Calculation of the determinant of the rotation matrix.
|
|
RotationMatrix & | transpose () |
| Transposing the rotation matrix.
|
|
RotationMatrix & | invert () |
| Inverting the matrix.
|
|
void | swap (RotationMatrix &m) |
| Swapping the contents of two 3x3 matrices.
|
|
|
template<typename Other > |
bool | isAliased (const Other *alias) const |
| Returns whether the rotation matrix is aliased with the given address alias.
|
|
|
template<typename Other > |
const StaticMatrix< typename
MultTrait< Type, Other >::Type, 3UL, 3UL, false > | rotate (const StaticMatrix< Other, 3UL, 3UL, false > &m) const |
| Rotation of a matrix M ( ).
|
|
template<typename Other > |
const StaticMatrix< typename
MultTrait< Type, Other >::Type, 3UL, 3UL, false > | diagRotate (const StaticMatrix< Other, 3UL, 3UL, false > &m) const |
| Rotation of a diagonal matrix M ( ).
|
|
|
For the classification of the Euler rotation, the following characteristics are defined:
- Inner axis: the inner axis is the axis of the first rotation matrix multiplied to a vector.
- Parity: the parity is even, if the inner axis X is followed by the middle axis Y, or Y is followed by Z, or Z is followed by X; otherwise parity is odd.
- Repetition: repetition tells, if the first and last axes are the same or different.
- Frame: the frame refers to the frame from which the Euler angles are calculated.
Altogether, there are 24 possible Euler rotations. The possibilities are consisting of the choice of the inner axis (X,Y or Z), the parity (even or odd), repetition (yes or no) and the frame (static or rotating). E.g., an Euler order of XYZs stands for the rotation order of x-, y- and z-axis in a static frame (inner axis: X, parity: even, repetition: no, frame: static), whereas YXYr stands for the rotation order y-, x- and y-axis in a rotating frame ( inner axis: Y, parity: odd, repetition: yes, frame: rotating).
|
const StaticVector< Type, 3UL > | getEulerAnglesXYZ () const |
| Calculation of the Euler angles (in radian measure).
|
|
const StaticVector< Type, 3UL > | getEulerAngles (EulerRotation order) const |
| Calculation of the Euler angles for a specific rotation order.
|
|
|
| RotationMatrix () |
| The default constructor for RotationMatrix.
|
|
template<typename Axis > |
| RotationMatrix (StaticVector< Axis, 3UL > axis, Type angle) |
| Rotation matrix constructor.
|
|
| RotationMatrix (const RotationMatrix &m) |
| The copy constructor for RotationMatrix.
|
|
template<typename Other > |
| RotationMatrix (const RotationMatrix< Other > &m) |
| Conversion constructor from different RotationMatrix instances.
|
|
| RotationMatrix (Type xx, Type xy, Type xz, Type yx, Type yy, Type yz, Type zx, Type zy, Type zz) |
| Constructor for a direct initialization of all rotation matrix elements.
|
|
template<typename Type>
class blaze::RotationMatrix< Type >
Efficient, generic implementation of a 3x3 rotation matrix.
The RotationMatrix class is the representation of a 3x3 rotation matrix with a total of 9 statically allocated elements of arbitrary type. The naming convention of the elements is as following:
These elements can be accessed directly with the 1D subscript operator or with the 2D function operator. The numbering of the matrix elements is
Note: The RotationMatrix class can only be instantiated for non-cv-qualified floating point types! Therefore the only possible RotationMatrix instantiations are
- RotationMatrix<float>
- RotationMatrix<double>
- RotationMatrix<long double>
The attempt to create a rotation matrix with an integral data type results in a compile time error.
template<typename Type >
template<typename Other >
const StaticMatrix< typename MultTrait< Type, Other >::Type, 3UL, 3UL, false > blaze::RotationMatrix< Type >::diagRotate |
( |
const StaticMatrix< Other, 3UL, 3UL, false > & |
m | ) |
const |
|
inline |
Rotation of a diagonal matrix M (
).
- Parameters
-
m | The diagonal matrix to be rotated. |
- Returns
- The rotated matrix.
The DiagRotate function is a special case of the rotate function. The matrix is assumed to be a diagonal matrix, which reduces the number of floating point operations of the rotation. The function is selected for matrices of different data type (in case Type and Other are supported by the MultTrait class). The function returns a matrix of the higher-order data type of the two involved data types.
Note: This function is only defined for matrices of floating point type. The attempt to use this function with matrices of integral data type will result in a compile time error.