smooth
A C++ library for Lie theory
Loading...
Searching...
No Matches
Concepts | Typedefs | Functions
manifold.hpp File Reference
#include <Eigen/Core>
#include "smooth/version.hpp"
Include dependency graph for manifold.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Concepts

concept  Manifold
 Class-external Manifold interface defined through the traits::man trait class.
 

Typedefs

template<Manifold M>
using Scalar = typename traits::man< M >::Scalar
 Manifold scalar type.
 
template<Manifold M>
using PlainObject = typename traits::man< M >::PlainObject
 Manifold default type.
 
template<typename NewScalar , Manifold M>
using CastT = typename traits::man< M >::template CastT< NewScalar >
 Cast'ed type.
 
template<Manifold M>
using Tangent = Eigen::Vector< Scalar< M >, Dof< M > >
 Tangent as a Dof-length vector.
 
template<Manifold M>
using TangentMap = Eigen::Matrix< Scalar< M >, Dof< M >, Dof< M > >
 Matrix of size Dof x Dof.
 
template<Manifold M>
using Hessian = Eigen::Matrix< Scalar< M >, Dof< M >,(Dof< M > > 0 ? Dof< M > *Dof< M > :-1)>
 Matrix of size Dof x Dof*Dof.
 

Functions

template<Manifold M>
PlainObject< M > Default (Eigen::Index dof)
 Default-initialized Manifold.
 
template<Manifold M>
requires (Dof<M> > 0)
PlainObject< M > Default ()
 Default-initialized Manifold with static dof.
 
template<Manifold M>
Eigen::Index dof (const M &m)
 Manifold degrees of freedom (tangent space dimension)
 
template<typename NewScalar , Manifold M>
CastT< NewScalar, M > cast (const M &m)
 Cast to different scalar type.
 
template<Manifold M, typename Derived >
PlainObject< M > rplus (const M &m, const Eigen::MatrixBase< Derived > &a)
 Manifold right-plus.
 
template<Manifold M, Manifold Mo>
Tangent< M > rminus (const M &g1, const Mo &g2)
 Manifold right-minus.
 

Detailed Description

Manifold interface and free Manifold functions.

Definition in file manifold.hpp.

Typedef Documentation

◆ CastT

template<typename NewScalar , Manifold M>
using CastT = typename traits::man<M>::template CastT<NewScalar>

Cast'ed type.

Definition at line 100 of file manifold.hpp.

◆ Hessian

template<Manifold M>
using Hessian = Eigen::Matrix<Scalar<M>, Dof<M>, (Dof<M> > 0 ? Dof<M> * Dof<M> : -1)>

Matrix of size Dof x Dof*Dof.

Definition at line 118 of file manifold.hpp.

◆ PlainObject

template<Manifold M>
using PlainObject = typename traits::man<M>::PlainObject

Manifold default type.

Definition at line 94 of file manifold.hpp.

◆ Scalar

template<Manifold M>
using Scalar = typename traits::man<M>::Scalar

Manifold scalar type.

Definition at line 88 of file manifold.hpp.

◆ Tangent

template<Manifold M>
using Tangent = Eigen::Vector<Scalar<M>, Dof<M> >

Tangent as a Dof-length vector.

Definition at line 106 of file manifold.hpp.

◆ TangentMap

template<Manifold M>
using TangentMap = Eigen::Matrix<Scalar<M>, Dof<M>, Dof<M> >

Matrix of size Dof x Dof.

Definition at line 112 of file manifold.hpp.

Function Documentation

◆ cast()

template<typename NewScalar , Manifold M>
CastT< NewScalar, M > cast ( const M &  m)
inline

Cast to different scalar type.

Definition at line 154 of file manifold.hpp.

◆ Default() [1/2]

template<Manifold M>
requires (Dof<M> > 0)
PlainObject< M > Default ( )
inline

Default-initialized Manifold with static dof.

Definition at line 135 of file manifold.hpp.

◆ Default() [2/2]

template<Manifold M>
PlainObject< M > Default ( Eigen::Index  dof)
inline

Default-initialized Manifold.

Definition at line 126 of file manifold.hpp.

◆ dof()

template<Manifold M>
Eigen::Index dof ( const M &  m)
inline

Manifold degrees of freedom (tangent space dimension)

Definition at line 145 of file manifold.hpp.

◆ rminus()

template<Manifold M, Manifold Mo>
Tangent< M > rminus ( const M &  g1,
const Mo &  g2 
)
inline

Manifold right-minus.

Definition at line 172 of file manifold.hpp.

◆ rplus()

template<Manifold M, typename Derived >
PlainObject< M > rplus ( const M &  m,
const Eigen::MatrixBase< Derived > &  a 
)
inline

Manifold right-plus.

Definition at line 163 of file manifold.hpp.