12template <
typename _Scalar,
int _Dim>
15 static constexpr int Dim = _Dim;
26 Dim == Eigen::Dynamic,
27 "This constructor is only valid if the dimension is dynamic.");
34 template <
int N =
Dim,
35 typename =
typename std::enable_if_t<N != Eigen::Dynamic>>
40 inline int nx()
const {
return dim_; }
44 template <
int OtherDim>
48 static_assert((
Dim == OtherDim) || (
Dim == Eigen::Dynamic));
57 VectorRef out)
const {
62 MatrixRef Jout,
int)
const {
67 MatrixRef,
int)
const {}
72 VectorRef out)
const {
77 MatrixRef Jout,
int arg)
const {
80 Jout = -MatrixXs::Identity(
ndx(),
ndx());
91 const Scalar &u, VectorRef out)
const {
92 out = u * x1 + (
static_cast<Scalar>(1.) - u) * x0;
#define ALIGATOR_DOMAIN_ERROR(...)
Base class for manifolds, to use in cost funcs, solvers...
void interpolate_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
Interpolation operation.
VectorSpaceTpl(const int dim)
Default constructor where the dimension is supplied.
VectorSpaceTpl()
Default constructor without arguments.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
void Jdifference_impl(const ConstVectorRef &, const ConstVectorRef &, MatrixRef Jout, int arg) const
void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
Perform the manifold integration operation.
int ndx() const
Get manifold tangent space dimension.
void JintegrateTransport_impl(const ConstVectorRef &, const ConstVectorRef &, MatrixRef, int) const
ManifoldAbstractTpl< Scalar > Base
int nx() const
Get manifold representation dimension.
VectorSpaceTpl(const VectorSpaceTpl< Scalar, OtherDim > &other)
Build from VectorSpaceTpl of different dimension.
void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
Implementation of the manifold retraction operation.
void Jintegrate_impl(const ConstVectorRef &, const ConstVectorRef &, MatrixRef Jout, int) const