Specific manifold functions

This small section extends the functions available from ManifoldsBase.jl and Manifolds.jl, especially a few random generators, that are simpler than the available functions.

mid_point(M, p, q, x)
mid_point!(M, y, p, q, x)

Compute the mid point between p and q. If there is more than one mid point of (not neccessarily minimizing) geodesics (e.g. on the sphere), the one nearest to x is returned (in place of y).

max_stepsize(M::TangentBundle, p)

Tangent bundle has injectivity radius of either infinity (for flat manifolds) or 0 (for non-flat manifolds). This makes a guess of what a reasonable maximum stepsize on a tangent bundle might be.

reflect(M, p, x)
reflect!(M, q, p, x)

reflect the point x from the manifold M at point p, i.e.

\[ \operatorname{refl}_p(x) = \exp_p(-\log_p x).\]

where exp and log denote the exponential and logarithmic map on M. This can also be done in place of q.

reflect(M, f, x)
reflect!(M, q, f, x)

reflect the point x from the manifold M at the point f(x) of the function $f: \mathcal M → \mathcal M$, i.e.,

\[ \operatorname{refl}_f(x) = \operatorname{refl}_{f(x)}(x),\]

Compute the result in q.

see also reflect(M,p,x).