|
| SO3 () |
| Default constructor. Initialises the matrix to the identity (no rotation) More...
|
|
template<int S, typename P , typename A > |
| SO3 (const Vector< S, P, A > &v) |
| Construct from the axis of rotation (and angle given by the magnitude). More...
|
|
template<int R, int C, typename P , typename A > |
| SO3 (const Matrix< R, C, P, A > &rhs) |
| Construct from a rotation matrix. More...
|
|
template<int S1, int S2, typename P1 , typename P2 , typename A1 , typename A2 > |
| SO3 (const Vector< S1, P1, A1 > &a, const Vector< S2, P2, A2 > &b) |
|
template<int R, int C, typename P , typename A > |
SO3 & | operator= (const Matrix< R, C, P, A > &rhs) |
|
void | coerce () |
| Modifies the matrix to make sure it is a valid rotation matrix. More...
|
|
Vector< 3, Precision > | ln () const |
|
SO3 | inverse () const |
| Returns the inverse of this matrix (=the transpose, so this is a fast operation) More...
|
|
SO3 & | operator*= (const SO3 &rhs) |
| Right-multiply by another rotation matrix. More...
|
|
template<typename P > |
SO3< typename Internal::MultiplyType< Precision, P >::type > | operator* (const SO3< P > &rhs) const |
| Right-multiply by another rotation matrix. More...
|
|
const Matrix< 3, 3, Precision > & | get_matrix () const |
| Returns the SO3 as a Matrix<3> More...
|
|
template<int S, typename A > |
Vector< 3, Precision > | adjoint (const Vector< S, Precision, A > &vect) const |
|
template<typename PA , typename PB > |
| SO3 (const SO3< PA > &a, const SO3< PB > &b) |
|
template<int S, typename VP , typename VA > |
SO3< Precision > | exp (const Vector< S, VP, VA > &w) |
|
|
(Note that these are not member functions.)
|
template<typename Precision > |
std::ostream & | operator<< (std::ostream &os, const SO3< Precision > &rhs) |
|
template<typename Precision > |
std::istream & | operator>> (std::istream &is, SO3< Precision > &rhs) |
|
template<typename Precision , int S, typename VP , typename VA , typename MA > |
void | rodrigues_so3_exp (const Vector< S, VP, VA > &w, const Precision A, const Precision B, Matrix< 3, 3, Precision, MA > &R) |
|
template<int S, typename P , typename PV , typename A > |
Vector< 3, typename Internal::MultiplyType< P, PV >::type > | operator* (const SO3< P > &lhs, const Vector< S, PV, A > &rhs) |
|
template<int S, typename P , typename PV , typename A > |
Vector< 3, typename Internal::MultiplyType< PV, P >::type > | operator* (const Vector< S, PV, A > &lhs, const SO3< P > &rhs) |
|
template<int R, int C, typename P , typename PM , typename A > |
Matrix< 3, C, typename Internal::MultiplyType< P, PM >::type > | operator* (const SO3< P > &lhs, const Matrix< R, C, PM, A > &rhs) |
|
template<int R, int C, typename P , typename PM , typename A > |
Matrix< R, 3, typename Internal::MultiplyType< PM, P >::type > | operator* (const Matrix< R, C, PM, A > &lhs, const SO3< P > &rhs) |
|
template<typename Precision = double>
class TooN::SO3< Precision >
Class to represent a three-dimensional rotation matrix. Three-dimensional rotation matrices are members of the Special Orthogonal Lie group SO3. This group can be parameterised three numbers (a vector in the space of the Lie Algebra). In this class, the three parameters are the finite rotation vector, i.e. a three-dimensional vector whose direction is the axis of rotation and whose length is the angle of rotation in radians. Exponentiating this vector gives the matrix, and the logarithm of the matrix gives this vector.
Definition at line 39 of file so3.h.
template<typename Precision = double>
template<int R, int C, typename P , typename A >
Construct from a rotation matrix.
Definition at line 68 of file so3.h.
template<typename Precision = double>
template<int S1, int S2, typename P1 , typename P2 , typename A1 , typename A2 >
creates an SO3 as a rotation that takes Vector a into the direction of Vector b with the rotation axis along a ^ b. If |a ^ b| == 0, it creates the identity rotation. An assertion will fail if Vector a and Vector b are in exactly opposite directions.
- Parameters
-
Definition at line 76 of file so3.h.
template<typename Precision = double>
template<int S, typename A >
Transfer a vector in the Lie Algebra from one co-ordinate frame to another such that for a matrix , the adjoint obeys
Definition at line 172 of file so3.h.
template<typename Precision = double>
template<int R, int C, typename P , typename A >
Assignment operator from a general matrix. This also calls coerce() to make sure that the matrix is a valid rotation matrix.
Definition at line 101 of file so3.h.
template<typename Precision , int S, typename VP , typename VA , typename MA >
void rodrigues_so3_exp |
( |
const Vector< S, VP, VA > & |
w, |
|
|
const Precision |
A, |
|
|
const Precision |
B, |
|
|
Matrix< 3, 3, Precision, MA > & |
R |
|
) |
| |
|
related |