TooN: SIM3< Precision > Class Template Reference

TooN 2.0.0-beta8

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

Public Member Functions | Static Public Member Functions | Related Functions
SIM3< Precision > Class Template Reference
Transformation matrices

Represent a three-dimensional similarity transformation (a rotation, a scale factor and a translation). More...

`#include <sim3.h>`

List of all members.

## Public Member Functions
| SIM3 ()
template<int S, typename P , typename A >
| SIM3 (const SO3< Precision > &R, const Vector< S, P, A > &T, const Precision &s)
template<int S, typename P , typename A >
| SIM3 (const Vector< S, P, A > &v)
SO3< Precision > & | get_rotation ()
const SO3< Precision > & | get_rotation () const
Vector< 3, Precision > & | get_translation ()
const Vector< 3, Precision > & | get_translation () const
Precision & | get_scale ()
const Precision & | get_scale () const
Vector< 7, Precision > | ln () const
SIM3 | inverse () const
SIM3 & | operator*= (const SIM3 &rhs)
template<typename P >
SIM3< typename Internal::MultiplyType < Precision, P >::type > | operator* (const SIM3< P > &rhs) const
SIM3 & | left_multiply_by (const SIM3 &left)
template<int S, typename P2 , typename Accessor >
Vector< 7, Precision > | adjoint (const Vector< S, P2, Accessor > &vect) const
template<int S, typename P2 , typename Accessor >
Vector< 7, Precision > | trinvadjoint (const Vector< S, P2, Accessor > &vect) const
template<int R, int C, typename P2 , typename Accessor >
Matrix< 7, 7, Precision > | adjoint (const Matrix< R, C, P2, Accessor > &M) const
template<int R, int C, typename P2 , typename Accessor >
Matrix< 7, 7, Precision > | trinvadjoint (const Matrix< R, C, P2, Accessor > &M) const
template<int S, typename P , typename VA >
SIM3< Precision > | exp (const Vector< S, P, VA > &mu)
## Static Public Member Functions
template<int S, typename P , typename A >
static SIM3 | exp (const Vector< S, P, A > &vect)
static Vector< 7, Precision > | ln (const SIM3 &se3)
static Matrix< 4, 4, Precision > | generator (int i)
template<typename Base >
static Vector< 4, Precision > | generator_field (int i, const Vector< 4, Precision, Base > &pos)
## Related Functions
(Note that these are not member functions.)
template<typename Precision >
std::ostream & | operator<< (std::ostream &os, const SIM3< Precision > &rhs)
template<int S, typename PV , typename A , typename P >
Vector< 4, typename Internal::MultiplyType< P, PV > ::type > | operator* (const SIM3< P > &lhs, const Vector< S, PV, A > &rhs)
template<typename PV , typename A , typename P >
Vector< 3, typename Internal::MultiplyType< P, PV > ::type > | operator* (const SIM3< P > &lhs, const Vector< 3, PV, A > &rhs)
template<int S, typename PV , typename A , typename P >
Vector< 4, typename Internal::MultiplyType< P, PV > ::type > | operator* (const Vector< S, PV, A > &lhs, const SIM3< P > &rhs)
template<int R, int Cols, typename PM , typename A , typename P >
Matrix< 4, Cols, typename Internal::MultiplyType< P, PM > ::type > | operator* (const SIM3< P > &lhs, const Matrix< R, Cols, PM, A > &rhs)
template<int Rows, int C, typename PM , typename A , typename P >
Matrix< Rows, 4, typename Internal::MultiplyType< PM, P > ::type > | operator* (const Matrix< Rows, C, PM, A > &lhs, const SIM3< P > &rhs)

## Detailed Description

### template<typename Precision = DefaultPrecision>
class TooN::SIM3< Precision >

Represent a three-dimensional similarity transformation (a rotation, a scale factor and a translation).

This can be represented by a matrix operating on a homogeneous co-ordinate, so that a vector is transformed to a new location by

This transformation is a member of the Lie group SIM3. These can be parameterised with seven numbers (in the space of the Lie Algebra). In this class, the first three parameters are a translation vector while the second three are a rotation vector, whose direction is the axis of rotation and length the amount of rotation (in radians), as for SO3. The seventh parameter is the log of the scale of the transformation.

## Member Function Documentation

const SO3<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<3, 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.

const Precision& get_scale | ( |  | ) | const

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

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

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

See the Detailed Description for details of this vector.

Parameters:

  vect | The Vector to exponentiate

static Vector<7, Precision> ln | ( | const SIM3< Precision > & | se3 | ) | `[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<7, 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 SIM3< P >::ln().

SIM3& operator*= | ( | const SIM3< Precision > & | rhs | ) |

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

Parameters:

  rhs | The multipier

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

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

Parameters:

  rhs | The multipier

Vector< 7, Precision > adjoint | ( | const Vector< S, P2, Accessor > & | vect | ) | const

Transfer a matrix in the Lie Algebra from one co-ordinate frame to another.

This is the operation such that for a matrix ,

Parameters:

  M | The Matrix to transfer

References Vector< Size, Precision, Base >::size().

Matrix< 7, 7, Precision > adjoint | ( | const Matrix< R, C, P2, Accessor > & | M | ) | const

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

References Matrix< Rows, Cols, Precision, Layout >::num_cols(), Matrix< Rows, Cols, Precision, Layout >::num_rows(), and Matrix< Rows, Cols, Precision, Layout >::T().

Matrix< 7, 7, Precision > trinvadjoint | ( | const Matrix< R, C, P2, Accessor > & | M | ) | const

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

References Matrix< Rows, Cols, Precision, Layout >::num_cols(), Matrix< Rows, Cols, Precision, Layout >::num_rows(), and Matrix< Rows, Cols, Precision, Layout >::T().

## Friends And Related Function Documentation

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

Write an SIM3 to a stream.

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

Right-multiply by a Vector.

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

Right-multiply by a Vector.

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

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

Left-multiply by a Vector.

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

Right-multiply by a Matrix.

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

Left-multiply by a Matrix.