pub trait Space {
type Point: Copy + Send + Sync + 'static;
type Vector: Copy + Send + Sync + 'static;
type Frame: Copy + Send + Sync + 'static;
// Required methods
fn frame_at(&self, at: Self::Point) -> Self::Frame;
fn distance(&self, a: Self::Point, b: Self::Point) -> f32;
fn exp(&self, at: Self::Point, v: Self::Vector) -> Self::Point;
fn log(&self, from: Self::Point, to: Self::Point) -> Self::Vector;
fn parallel_transport(
&self,
from: Self::Point,
to: Self::Point,
v: Self::Vector,
) -> Self::Vector;
fn chart_envelope(&self) -> f32;
fn valid_point(&self, p: Self::Point) -> bool;
// Provided methods
fn parallel_transport_along(
&self,
path: &[Self::Point],
v: Self::Vector,
) -> Self::Vector { ... }
fn is_chart_flat(&self) -> bool { ... }
}Required Associated Types§
type Point: Copy + Send + Sync + 'static
type Vector: Copy + Send + Sync + 'static
type Frame: Copy + Send + Sync + 'static
Required Methods§
fn frame_at(&self, at: Self::Point) -> Self::Frame
fn distance(&self, a: Self::Point, b: Self::Point) -> f32
Sourcefn exp(&self, at: Self::Point, v: Self::Vector) -> Self::Point
fn exp(&self, at: Self::Point, v: Self::Vector) -> Self::Point
Advances for unit time along the geodesic with initial velocity v.
fn log(&self, from: Self::Point, to: Self::Point) -> Self::Vector
fn parallel_transport( &self, from: Self::Point, to: Self::Point, v: Self::Vector, ) -> Self::Vector
Sourcefn chart_envelope(&self) -> f32
fn chart_envelope(&self) -> f32
Geodesic distance from the chart origin beyond which Self::valid_point refuses a point.
Sourcefn valid_point(&self, p: Self::Point) -> bool
fn valid_point(&self, p: Self::Point) -> bool
Finite, inside the chart, and within Self::chart_envelope of the origin.
Provided Methods§
Sourcefn parallel_transport_along(
&self,
path: &[Self::Point],
v: Self::Vector,
) -> Self::Vector
fn parallel_transport_along( &self, path: &[Self::Point], v: Self::Vector, ) -> Self::Vector
Composes transport along consecutive points; fewer than two points leave v unchanged.
Sourcefn is_chart_flat(&self) -> bool
fn is_chart_flat(&self) -> bool
True when chart arithmetic respects the global geometry, including identifications.