7#include "smooth/version.hpp"
32requires (Eigen::Index
dof) {
42requires(
const M & m1,
const M & m2,
const Eigen::Vector<typename traits::man<M>::Scalar,
traits::man<M>::Dof> & a) {
50 !std::is_convertible_v<typename traits::man<M>::Scalar,
double> ||
51 requires (
const M & m) {
56 requires (
const M & m) {
99template<
typename NewScalar, Manifold M>
106using Tangent = Eigen::Vector<Scalar<M>, Dof<M>>;
118using Hessian = Eigen::Matrix<Scalar<M>, Dof<M>, (Dof<M> > 0 ? Dof<M> * Dof<M> : -1)>;
145inline Eigen::Index
dof(
const M & m)
153template<
typename NewScalar, Manifold M>
162template<Manifold M,
typename Derived>
171template<Manifold M, Manifold Mo>
Class-external Manifold interface defined through the traits::man trait class.
PlainObject< M > Default()
Default-initialized Manifold with static dof.
Eigen::Matrix< Scalar< M >, Dof< M >,(Dof< M > > 0 ? Dof< M > *Dof< M > :-1)> Hessian
Matrix of size Dof x Dof*Dof.
Eigen::Vector< Scalar< M >, Dof< M > > Tangent
Tangent as a Dof-length vector.
typename traits::man< M >::Scalar Scalar
Manifold scalar type.
Eigen::Index dof(const M &m)
Manifold degrees of freedom (tangent space dimension)
Tangent< M > rminus(const M &g1, const Mo &g2)
Manifold right-minus.
Eigen::Matrix< Scalar< M >, Dof< M >, Dof< M > > TangentMap
Matrix of size Dof x Dof.
PlainObject< M > rplus(const M &m, const Eigen::MatrixBase< Derived > &a)
Manifold right-plus.
typename traits::man< M >::template CastT< NewScalar > CastT
Cast'ed type.
CastT< NewScalar, M > cast(const M &m)
Cast to different scalar type.
typename traits::man< M >::PlainObject PlainObject
Manifold default type.
Trait class for making a class a Manifold instance via specialization.