KrisLibrary
1.0.0
|
A space with geodesics and (optionally) geodesic derivatives. More...
#include <GeodesicSpace.h>
Public Member Functions | |
virtual int | NumDimensions () |
virtual int | NumIntrinsicDimensions () |
virtual Real | Distance (const Config &x, const Config &y) |
virtual void | Interpolate (const Config &x, const Config &y, Real u, Config &out) |
virtual void | InterpolateDeriv (const Config &a, const Config &b, Real u, Vector &dx) |
virtual void | InterpolateDerivA (const Config &a, const Config &b, Real u, const Vector &da, Vector &dx) |
virtual void | InterpolateDerivB (const Config &a, const Config &b, Real u, const Vector &db, Vector &dx) |
virtual void | InterpolateDeriv2 (const Config &a, const Config &b, Real u, Vector &ddx) |
virtual void | Integrate (const Config &a, const Vector &da, Config &b) |
A space with geodesics and (optionally) geodesic derivatives.
The Interpolate function is a function x=f(a,b,u) and Distance(a,b) gives a metric on arc length of the geodesic.
NumDimensions() gives the number of Config elements. NumIntrinsicDimensions returns then number of intrinsic dimensions, which may be different from NumDimensions() if the space is a sub-manifold of the ambient space.
Optionally, this class provides information about df/du (InterpolateDeriv), df/da*a' (InterpolateDerivA), df/db*b' (InterpolateDerivB), and ddf/du^2 (InterpolateDeriv2).
It also allows you to integrate a tangent vector to the manifold da starting from configuration a (Integrate).
An example of the use of this would be geodesic interpolator on a sphere that is parameterized via theta/phi angles.
The default implementation assumes a linear interpolation / Cartesian space.