TooN 2.1
Public Member Functions | Static Public Member Functions | Related Functions
SE2< Precision > Class Template Reference

Represent a two-dimensional Euclidean transformation (a rotation and a translation). More...

#include <se2.h>

List of all members.

Public Member Functions

 SE2 ()
template<class A >
 SE2 (const SO2< Precision > &R, const Vector< 2, Precision, A > &T)
template<int S, class P , class A >
 SE2 (const Vector< S, P, A > &v)
SO2< Precision > & get_rotation ()
const SO2< Precision > & get_rotation () const
Vector< 2, Precision > & get_translation ()
const Vector< 2, Precision > & get_translation () const
Vector< 3, Precision > ln () const
SE2 inverse () const
template<typename P >
SE2< typename
Internal::MultiplyType
< Precision, P >::type > 
operator* (const SE2< P > &rhs) const
template<typename P >
SE2operator*= (const SE2< P > &rhs)
template<typename Accessor >
Vector< 3, Precision > adjoint (const Vector< 3, Precision, Accessor > &vect) const
template<typename Accessor >
Matrix< 3, 3, Precision > adjoint (const Matrix< 3, 3, Precision, Accessor > &M) const
template<int S, typename PV , typename Accessor >
SE2< Precision > exp (const Vector< S, PV, Accessor > &mu)

Static Public Member Functions

template<int S, typename P , typename A >
static SE2 exp (const Vector< S, P, A > &vect)
static Vector< 3, Precision > ln (const SE2 &se2)
static Matrix< 3, 3, Precision > generator (int i)

Related Functions

(Note that these are not member functions.)

template<class Precision >
std::ostream & operator<< (std::ostream &os, const SE2< Precision > &rhs)
template<int S, typename P , typename PV , typename A >
Vector< 3, typename
Internal::MultiplyType< P, PV >
::type > 
operator* (const SE2< P > &lhs, const Vector< S, PV, A > &rhs)
template<typename P , typename PV , typename A >
Vector< 2, typename
Internal::MultiplyType< P, PV >
::type > 
operator* (const SE2< P > &lhs, const Vector< 2, 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 SE2< P > &rhs)
template<int R, int Cols, typename PM , typename A , typename P >
Matrix< 3, Cols, typename
Internal::MultiplyType< P, PM >
::type > 
operator* (const SE2< P > &lhs, const Matrix< R, Cols, PM, A > &rhs)
template<int Rows, int C, typename PM , typename A , typename P >
Matrix< Rows, 3, typename
Internal::MultiplyType< PM, P >
::type > 
operator* (const Matrix< Rows, C, PM, A > &lhs, const SE2< P > &rhs)

Detailed Description

template<typename Precision = DefaultPrecision>
class TooN::SE2< Precision >

Represent a two-dimensional Euclidean transformation (a rotation and a translation).

This can be represented by a $2\times 3$ matrix operating on a homogeneous co-ordinate, so that a vector $\underline{x}$ is transformed to a new location $\underline{x}'$ by

\[\begin{aligned}\underline{x}' &= E\times\underline{x}\\ \begin{bmatrix}x'\\y'\end{bmatrix} &= \begin{pmatrix}r_{11} & r_{12} & t_1\\r_{21} & r_{22} & t_2\end{pmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}\end{aligned}\]

This transformation is a member of the Special Euclidean Lie group SE2. These can be parameterised with three numbers (in the space of the Lie Algebra). In this class, the first two parameters are a translation vector while the third is the amount of rotation in the plane as for SO2.


Member Function Documentation

const SO2<Precision>& get_rotation ( ) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

const Vector<2, Precision>& get_translation ( ) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

static SE2 exp ( const Vector< S, P, A > &  vect) [static]

Exponentiate a Vector in the Lie Algebra to generate a new SE2.

See the Detailed Description for details of this vector.

Parameters:
vectThe Vector to exponentiate
static Vector<3, Precision> ln ( const SE2< Precision > &  se2) [static]

Take the logarithm of the matrix, generating the corresponding vector in the Lie Algebra.

See the Detailed Description for details of this vector.

Vector<3, Precision> ln ( ) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Referenced by SE2< P >::ln().

SE2<typename Internal::MultiplyType<Precision,P>::type> operator* ( const SE2< P > &  rhs) const

Right-multiply by another SE2 (concatenate the two transformations)

Parameters:
rhsThe multipier
SE2& operator*= ( const SE2< P > &  rhs)

Self right-multiply by another SE2 (concatenate the two transformations)

Parameters:
rhsThe multipier
static Matrix<3,3, Precision> generator ( int  i) [static]

returns the generators for the Lie group.

These are a set of matrices that form a basis for the vector space of the Lie algebra.

  • 0 is translation in x
  • 1 is translation in y
  • 2 is rotation in the plane

Friends And Related Function Documentation

std::ostream & operator<< ( std::ostream &  os,
const SE2< Precision > &  rhs 
) [related]

Write an SE2 to a stream.

Vector< 3, typename Internal::MultiplyType< P, PV >::type > operator* ( const SE2< P > &  lhs,
const Vector< S, PV, A > &  rhs 
) [related]

Right-multiply with a Vector<3>

Vector< 2, typename Internal::MultiplyType< P, PV >::type > operator* ( const SE2< P > &  lhs,
const Vector< 2, PV, A > &  rhs 
) [related]

Right-multiply with a Vector<2> (special case, extended to be a homogeneous vector)

References SE2< Precision >::get_rotation(), and SE2< Precision >::get_translation().

Vector< 3, typename Internal::MultiplyType< PV, P >::type > operator* ( const Vector< S, PV, A > &  lhs,
const SE2< P > &  rhs 
) [related]

Left-multiply with a Vector<3>

Matrix< 3, Cols, typename Internal::MultiplyType< P, PM >::type > operator* ( const SE2< P > &  lhs,
const Matrix< R, Cols, PM, A > &  rhs 
) [related]

Right-multiply with a Matrix<3>

Matrix< Rows, 3, typename Internal::MultiplyType< PM, P >::type > operator* ( const Matrix< Rows, C, PM, A > &  lhs,
const SE2< P > &  rhs 
) [related]

Left-multiply with a Matrix<3>