| name | compute-geodesics |
| description | Solves the geodesic equation and computes exponential and logarithmic maps on Riemannian manifolds using the local_coordinates JAX library. Use when the user works with geodesics, parallel transport along a curve, Taylor expansions of the exponential map in Riemann normal coordinates, injectivity radius, or ODE integration of the geodesic system. |
Compute geodesics
Use this skill for geodesic-related computations on a Riemannian manifold.
Core objects
A geodesic gamma(t) satisfies d^2 gamma^i / dt^2 + Gamma^i_{jk}(gamma) (dgamma^j/dt)(dgamma^k/dt) = 0. The exponential map exp_p(v) returns gamma(1) for the geodesic starting at p with velocity v. The logarithmic map log_p is its inverse within the injectivity radius.
Numerical strategy
Convert the second-order geodesic ODE to a first-order system on the state [gamma, dot_gamma] and integrate with a standard solver such as Dopri5. For small displacements use the third-order Taylor expansion in Riemann normal coordinates:
x(v) = p + J v + (1/2) H v v + (1/6) T v v v + O(v^4)
where J is the orthonormal frame, H = -Gamma J J, and T involves the gradient of the Christoffel symbols. See riemann-normal-coordinates for the coefficients.
For the full derivation, boundary cases (Euclidean, sphere, hyperbolic), and property list, see references/REFERENCE.md. The script at scripts/sanity_check.py verifies exp_p(0) = p, the Euclidean limit, and consistency between exp and log.