Skip to main content

ExpMap

Trait ExpMap 

Source
pub trait ExpMap<P: Point, V: Tensor>: Chart<P, V> {
    // Provided methods
    fn base_point(&self) -> P { ... }
    fn check_base_point_is_origin(&self) -> bool
       where V: Form { ... }
    fn check_preservation_of_origin(&self) -> bool
       where V: Form { ... }
    fn check_chart_at_base_point(&self) -> bool
       where V: Form { ... }
}
Expand description

By implementing ExpMap you certify that for C<P, V>: ExpMap<P, V> that straight lines through the origin in R^N map to geodesics on M, and that distances from the origin equal arc lengths along those geodesics.

Additionally, you certify that Self::chart_at(&self.base_point()) == self

Provided Methods§

Source

fn base_point(&self) -> P

Source

fn check_base_point_is_origin(&self) -> bool
where V: Form,

Source

fn check_preservation_of_origin(&self) -> bool
where V: Form,

Source

fn check_chart_at_base_point(&self) -> bool
where V: Form,

If a chart centred at p exists, chart_at(p) returns it. Formally: chart_at(p).base_point() == p whenever p is the base point of some valid chart in this atlas.

This is weaker than the TangentBundle centring invariant, which requires this to hold for all p. Here it is only required when p is already a base point of some chart — i.e. chart_at correctly identifies the chart when queried at a known base point.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl ExpMap<So3<Coords<R64, 3>>, Coords<R64, 3>> for So3Cover

Source§

impl ExpMap<UnitComplex<Coords<R64, 1>>, Coords<R64, 1>> for S1Cover

Source§

impl<I: ICompatible<V>, V: VCompatible<I>> ExpMap<KleinBottle<I, V>, V> for KleinBottleCover<I, V>

Source§

impl<I: ICompatible<V>, V: VCompatible<I>> ExpMap<Torus<I, V>, V> for MyopicTorus<I, V>

Source§

impl<I: ICompatible<V>, V: VCompatible<I>> ExpMap<Torus<I, V>, V> for MyopicTorusCover<I, V>

Source§

impl<I: ICompatible<V>, V: VCompatible<I>> ExpMap<Torus<I, V>, V> for TorusCover<I, V>

Source§

impl<P: Point, V: Tensor, T: TangentBundle<P, V>, U: TangentBundle<Self, JetVector<𝒞, V, N>>, const N: usize> ExpMap<P, V> for TM<P, V, T, U, N>

Source§

impl<V: Tensor, L: Smooth<V>> ExpMap<L, V> for L