cartan

Geometry

cartan-geo provides higher-level geometric tools built on top of the Manifold trait: parameterized geodesic curves, curvature queries, and Jacobi field integration. These complement the per-point operations in cartan-core with global and curve-level geometry.

Modules

ModuleStruct / functionPurpose
geodesicGeodesic<M>Parameterized geodesic curve; eval, sample, length
curvatureCurvatureQuery<M>Sectional, Ricci, scalar, Riemann curvature at a point
jacobiintegrate_jacobiRK4 Jacobi field integration; conjugate point detection

Quick Example

use cartan::prelude::*;
use cartan::manifolds::Sphere;
use cartan_geo::{Geodesic, CurvatureQuery};
 
let s2 = Sphere::<3>;
let mut rng = rand::rng();
let p = s2.random_point(&mut rng);
let q = s2.random_point(&mut rng);
 
// Geodesic from p to q
let geo = Geodesic::from_two_points(&s2, p, &q).unwrap();
let mid = geo.midpoint();
let samples = geo.sample(10);
 
// Curvature at p
let u = s2.random_tangent(&p, &mut rng);
let v = s2.random_tangent(&p, &mut rng);
let cq = CurvatureQuery::new(&s2, p);
let k = cq.sectional(&u, &v);  // K = 1 on S²