pub struct GeodesicIntegrator {
pub steps: usize,
pub step_size: f64,
}Fields§
§steps: usize§step_size: f64Implementations§
Source§impl GeodesicIntegrator
impl GeodesicIntegrator
Sourcepub fn integrate(
&self,
manifold: &dyn RiemannianManifold,
point: ArrayView1<'_, f64>,
tangent: ArrayView1<'_, f64>,
) -> GeometryResult<Array1<f64>>
pub fn integrate( &self, manifold: &dyn RiemannianManifold, point: ArrayView1<'_, f64>, tangent: ArrayView1<'_, f64>, ) -> GeometryResult<Array1<f64>>
Integrate the geodesic ODE on the manifold by composing the closed-form
geodesic flow exp_p(v · h) with parallel transport of the velocity
along that segment. This is the mathematically correct flow on every
Riemannian manifold whose RiemannianManifold impl supplies an
exp_map and parallel_transport consistent with its metric — it
reduces to a Christoffel-driven leap-frog integrator on coordinates
where Γ ≡ 0 (e.g. Euclidean / flat tori) but stays on the manifold
and conserves the Riemannian kinetic energy on positively curved
spaces such as the sphere, which previously drifted off because the
extrinsic Christoffel symbols are not zero.
Trait Implementations§
Source§impl Clone for GeodesicIntegrator
impl Clone for GeodesicIntegrator
Source§fn clone(&self) -> GeodesicIntegrator
fn clone(&self) -> GeodesicIntegrator
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for GeodesicIntegrator
Source§impl Debug for GeodesicIntegrator
impl Debug for GeodesicIntegrator
Source§impl Default for GeodesicIntegrator
impl Default for GeodesicIntegrator
Source§impl PartialEq for GeodesicIntegrator
impl PartialEq for GeodesicIntegrator
Source§fn eq(&self, other: &GeodesicIntegrator) -> bool
fn eq(&self, other: &GeodesicIntegrator) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for GeodesicIntegrator
Auto Trait Implementations§
impl Freeze for GeodesicIntegrator
impl RefUnwindSafe for GeodesicIntegrator
impl Send for GeodesicIntegrator
impl Sync for GeodesicIntegrator
impl Unpin for GeodesicIntegrator
impl UnsafeUnpin for GeodesicIntegrator
impl UnwindSafe for GeodesicIntegrator
Blanket Implementations§
impl<T> Boilerplate for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.