Geomi
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
SO3::Algebra< T_SCALAR_TYPE > Class Template Reference

#include <SO3_Algebra.hpp>

Inheritance diagram for SO3::Algebra< T_SCALAR_TYPE >:
Inheritance graph
[legend]
Collaboration diagram for SO3::Algebra< T_SCALAR_TYPE >:
Collaboration graph
[legend]

Public Member Functions

 Algebra (const Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > &v)
 
 Algebra (const T_SCALAR_TYPE a, const T_SCALAR_TYPE b, const T_SCALAR_TYPE c)
 
Algebra< T_SCALAR_TYPE > inverse () const
 
void operator+= (const Algebra< T_SCALAR_TYPE > &g)
 
void operator*= (T_SCALAR_TYPE s)
 
Algebra< T_SCALAR_TYPE > bracket (const Algebra< T_SCALAR_TYPE > &g) const
 
Algebra< T_SCALAR_TYPE > Ad (const Group< T_SCALAR_TYPE > &g) const
 
Algebra< T_SCALAR_TYPE > Ad_star (const Group< T_SCALAR_TYPE > &g) const
 
Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > operator* (const Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > &vec) const
 
Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > v () const
 
void v (const Eigen::AngleAxis< T_SCALAR_TYPE > &aa)
 
void v (const Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > &vec)
 
T_SCALAR_TYPE const & operator[] (size_t index) const
 
T_SCALAR_TYPE & operator[] (size_t index)
 
void normalize ()
 
Algebra< T_SCALAR_TYPE > normalized () const
 
T_SCALAR_TYPE norm () const
 
T_SCALAR_TYPE angle () const
 
Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > axis () const
 
Group< T_SCALAR_TYPE > exp () const
 
Eigen::Matrix< T_SCALAR_TYPE, 3, 3 > partialExp (const unsigned int i) const
 
Algebra< T_SCALAR_TYPE > computeDExpRInv (const Algebra< T_SCALAR_TYPE > &y, unsigned int order_p=0) const
 
Group< T_SCALAR_TYPE > cay () const
 
Eigen::Matrix< T_SCALAR_TYPE, 3, 3 > dCayRInv () const
 
Algebra< T_SCALAR_TYPE > dCayRInv (const Algebra< T_SCALAR_TYPE > &g) const
 
Eigen::AngleAxis< T_SCALAR_TYPE > toAngleAxis () const
 
Eigen::Matrix< T_SCALAR_TYPE, 3, 3 > toRotationMatrix () const
 
Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > toVector () const
 
NOXVector< 3 > toNOXVector () const
 
- Public Member Functions inherited from LieAlgebraBase< Algebra< T_SCALAR_TYPE >, Group< T_SCALAR_TYPE >, 3, T_SCALAR_TYPE >
Algebra< T_SCALAR_TYPE > inverse () const
 
void inverted ()
 
void operator+= (const Algebra< T_SCALAR_TYPE > &g)
 
Algebra< T_SCALAR_TYPE > operator+ (const Algebra< T_SCALAR_TYPE > &g) const
 
Algebra< T_SCALAR_TYPE > operator- (const Algebra< T_SCALAR_TYPE > &g) const
 
void operator*= (T_SCALAR_TYPE s)
 
Algebra< T_SCALAR_TYPE > operator* (const T_SCALAR_TYPE &s) const
 
Algebra< T_SCALAR_TYPE > bracket (const Algebra< T_SCALAR_TYPE > &g) const
 
Algebra< T_SCALAR_TYPE > Ad (const Group< T_SCALAR_TYPE > &g) const
 
Algebra< T_SCALAR_TYPE > Ad_star (const Group< T_SCALAR_TYPE > &g) const
 
T_SCALAR_TYPE norm () const
 
Group< T_SCALAR_TYPE > exp () const
 
NOXVector< T_DOF > toNOXVector () const
 
- Public Member Functions inherited from CRTP< Algebra< T_SCALAR_TYPE > >
Algebra< T_SCALAR_TYPE > & underlying ()
 
Algebra< T_SCALAR_TYPE > const & underlying () const
 

Static Public Member Functions

static Algebra< T_SCALAR_TYPE > Identity ()
 
static Algebra< T_SCALAR_TYPE > cay_inv (const Group< T_SCALAR_TYPE > &g)
 
static Algebra< T_SCALAR_TYPE > fromRotationMatrix (const Eigen::Matrix< T_SCALAR_TYPE, 3, 3 > &m)
 
static Eigen::Matrix< T_SCALAR_TYPE, 3, 3 > GeneratorMatrix (int const i)
 
static Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > GeneratorVector (int const i)
 
static Algebra< T_SCALAR_TYPE > Generator (int const i)
 
static Algebra< T_SCALAR_TYPE > Zero ()
 
- Static Public Member Functions inherited from LieAlgebraBase< Algebra< T_SCALAR_TYPE >, Group< T_SCALAR_TYPE >, 3, T_SCALAR_TYPE >
static Algebra< T_SCALAR_TYPE > Zero ()
 
static Algebra< T_SCALAR_TYPE > static_bracket (const Algebra< T_SCALAR_TYPE > &g1, const Algebra< T_SCALAR_TYPE > &g2)
 
static Algebra< T_SCALAR_TYPE > static_Ad (const Algebra< T_SCALAR_TYPE > &a, const Group< T_SCALAR_TYPE > &g)
 
static Algebra< T_SCALAR_TYPE > static_Ad_star (const Group< T_SCALAR_TYPE > &g, const Algebra< T_SCALAR_TYPE > &a)
 
static Group< T_SCALAR_TYPE > exp (const Algebra< T_SCALAR_TYPE > &g)
 
static const unsigned int dof ()
 

Protected Attributes

Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > m_v
 

Additional Inherited Members

- Static Public Attributes inherited from LieAlgebraBase< Algebra< T_SCALAR_TYPE >, Group< T_SCALAR_TYPE >, 3, T_SCALAR_TYPE >
static const unsigned int DOF
 

Detailed Description

template<typename T_SCALAR_TYPE>
class SO3::Algebra< T_SCALAR_TYPE >

Class Lie algebra \(\mathfrak{so}(3)\) implementation.

Template Parameters
TFloating point type used for internal representation of coefficients.

Member Function Documentation

◆ bracket()

template<typename T_SCALAR_TYPE>
Algebra<T_SCALAR_TYPE> SO3::Algebra< T_SCALAR_TYPE >::bracket ( const Algebra< T_SCALAR_TYPE > &  g) const
inline

Implements the non-commutative Lie bracket operation \([a,b]\) where \(a\) is *this and \(b\) is g.

Returns
the bracket operation between *this and g.

◆ cay()

template<typename T_SCALAR_TYPE>
Group<T_SCALAR_TYPE> SO3::Algebra< T_SCALAR_TYPE >::cay ( ) const
inline

Implements the Cayley map \(cay:\mathfrak{so}(3)\rightarrow SO(3)\) evalutated at *this.

Returns
the Lie::SO3::Group<T> implementation of the Lie group \(SO(3)\) element that represents the image of *this by the Cayley map.

◆ exp()

template<typename T_SCALAR_TYPE>
Group<T_SCALAR_TYPE> SO3::Algebra< T_SCALAR_TYPE >::exp ( ) const
inline

Implements the exponential map \(\exp:\mathfrak{so}(3)\rightarrow SO(3)\) evalutated at *this.

Returns
the Lie::SO3::Group<T> implementation of the Lie group \(SO(3)\) element that represents the exponential of *this.

◆ GeneratorMatrix()

template<typename T_SCALAR_TYPE>
static Eigen::Matrix<T_SCALAR_TYPE,3,3> SO3::Algebra< T_SCALAR_TYPE >::GeneratorMatrix ( int const  i)
inlinestatic

Implements the three generators of the skew matrix representation of \(\mathfrak{so}(3)\). Those generators are repsectively

\[ \widehat J_0=\begin{pmatrix}0&0&0\\0&0&-1\\0&1&0\end{pmatrix},\quad \widehat J_1=\begin{pmatrix}0&0&1\\0&0&0\\-1&0&0\end{pmatrix},\quad \widehat J_2=\begin{pmatrix}0&-1&0\\1&0&0\\0&0&0\end{pmatrix} \]

and define the isomorphism between 3 by 3 skew matrices and size 3 vectors

\[ \widehat\omega = \omega\cdot\left(\widehat J_0,\widehat J_1,\widehat J_2\right)^T. \]

Returns
the i-th generator matrix.

◆ Identity()

template<typename T_SCALAR_TYPE>
static Algebra<T_SCALAR_TYPE> SO3::Algebra< T_SCALAR_TYPE >::Identity ( )
inlinestatic
Returns
the element representing the group identity for operation +.

◆ inverse()

template<typename T_SCALAR_TYPE>
Algebra<T_SCALAR_TYPE> SO3::Algebra< T_SCALAR_TYPE >::inverse ( ) const
inline
Returns
the group inverse of *this.

◆ operator*()

template<typename T_SCALAR_TYPE>
Eigen::Matrix<T_SCALAR_TYPE,3,1> SO3::Algebra< T_SCALAR_TYPE >::operator* ( const Eigen::Matrix< T_SCALAR_TYPE, 3, 1 > &  vec) const
inline

Transforms the size 3 vector vec by the algebra element represented by *this. With a skew matrix representation, it implements the operation \(\widehat\omega v\); with a vector reprentation it implements \(\omega\wedge v\).

Returns
the result of the action of *this on vec.

◆ toAngleAxis()

template<typename T_SCALAR_TYPE>
Eigen::AngleAxis<T_SCALAR_TYPE> SO3::Algebra< T_SCALAR_TYPE >::toAngleAxis ( ) const
inline
Returns
the axis-angle representation of *this.

The documentation for this class was generated from the following file: