15  using Scalar = 
typename Base::Scalar;
 
   16  static constexpr int Options = Base::Options;
 
   28  template <
typename... BaseCtorArgs>
 
   33    this->ndx_ = 2 * 
base_.ndx();
 
 
   38    return base_.isNormalized(p);
 
 
   45  template <
typename Po
int>
 
   46  typename Point::ConstSegmentReturnType
 
   48    return x.head(
base_.nx());
 
 
   51  template <
typename Po
int>
 
   52  typename Point::SegmentReturnType
 
   54    return x.const_cast_derived().head(
base_.nx());
 
 
   57  template <
typename Tangent>
 
   58  typename Tangent::ConstSegmentReturnType
 
   60    return v.head(
base_.ndx());
 
 
   63  template <
typename Tangent>
 
   64  typename Tangent::SegmentReturnType
 
   66    return v.const_cast_derived().head(
base_.ndx());
 
 
   69  template <
typename Jac>
 
   70  Eigen::Block<Jac, Eigen::Dynamic, Eigen::Dynamic>
 
   72    return J.const_cast_derived().topLeftCorner(
base_.ndx(), 
base_.ndx());
 
 
   88                       MatrixRef Jout, 
int arg) 
const;
 
   91                                const ConstVectorRef &v, MatrixRef Jout,
 
   95                        MatrixRef Jout, 
int arg) 
const;
 
   98                        const Scalar &u, VectorRef out) 
const;
 
 
  103#include "aligator/modelling/spaces/tangent-bundle.hxx" 
ManifoldAbstractTpl(int nx, int ndx)
 
void Jdifference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
 
Point::SegmentReturnType getBasePointWrite(const Eigen::MatrixBase< Point > &x) const
 
void interpolate_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
Interpolation operation.
 
typename Base::Scalar Scalar
 
TangentBundleTpl(BaseCtorArgs... args)
Constructor using base space constructor.
 
void rand_impl(VectorRef out) const
 
Tangent::SegmentReturnType getTangentHeadWrite(const Eigen::MatrixBase< Tangent > &v) const
 
void neutral_impl(VectorRef out) const
 
void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &dx, VectorRef out) const
Perform the manifold integration operation.
 
int nx() const
Get manifold representation dimension.
 
const Base & getBaseSpace() const
 
Point::ConstSegmentReturnType getBasePoint(const Eigen::MatrixBase< Point > &x) const
 
void JintegrateTransport_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 
bool isNormalized(const ConstVectorRef &x) const
Check if the input vector x is a viable element of the manifold.
 
void Jintegrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 
int ndx() const
Get manifold tangent space dimension.
 
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
 
Eigen::Block< Jac, Eigen::Dynamic, Eigen::Dynamic > getBaseJacobian(const Eigen::MatrixBase< Jac > &J) const
 
ManifoldAbstractTpl< Scalar > ManifoldBase
 
void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
Implementation of the manifold retraction operation.
 
TangentBundleTpl(const Base &base)
Constructor using base space instance.
 
static constexpr int Options
 
TangentBundleTpl< Base > Self
 
Tangent::ConstSegmentReturnType getBaseTangent(const Tangent &v) const