pub struct BlendedSpace<A, B, F>{
pub a: A,
pub b: B,
pub field: F,
}Expand description
Metric g = (1 − α)·g_A + α·g_B, with a spatially varying BlendingField.
Fields§
§a: A§b: B§field: FImplementations§
Trait Implementations§
Source§impl<A, B, F> ConformallyFlat for BlendedSpace<A, B, F>where
A: Space<Point = Vec3, Vector = Vec3> + ConformallyFlat,
B: Space<Point = Vec3, Vector = Vec3> + ConformallyFlat,
F: BlendingField,
impl<A, B, F> ConformallyFlat for BlendedSpace<A, B, F>where
A: Space<Point = Vec3, Vector = Vec3> + ConformallyFlat,
B: Space<Point = Vec3, Vector = Vec3> + ConformallyFlat,
F: BlendingField,
Source§fn conformal_factor(&self, p: Vec3) -> f32
fn conformal_factor(&self, p: Vec3) -> f32
May return
f32::INFINITY at the chart boundary.fn conformal_log_half_gradient(&self, p: Vec3) -> Vec3
Source§fn scalar_curvature(&self, p: Vec3) -> f32
fn scalar_curvature(&self, p: Vec3) -> f32
R = −(4/f)·[∇²φ + |∇φ|²/2]; the default is finite-difference.fn conformal_log_half(&self, p: Vec3) -> f32
Source§impl<A, B, F> Space for BlendedSpace<A, B, F>where
A: Space<Point = Vec3, Vector = Vec3> + ConformallyFlat,
B: Space<Point = Vec3, Vector = Vec3> + ConformallyFlat,
F: BlendingField,
impl<A, B, F> Space for BlendedSpace<A, B, F>where
A: Space<Point = Vec3, Vector = Vec3> + ConformallyFlat,
B: Space<Point = Vec3, Vector = Vec3> + ConformallyFlat,
F: BlendingField,
type Point = Vec3
type Vector = Vec3
type Frame = Mat3
fn frame_at(&self, at: Vec3) -> Mat3
fn distance(&self, a: Vec3, b: Vec3) -> f32
Source§fn exp(&self, at: Vec3, v: Vec3) -> Vec3
fn exp(&self, at: Vec3, v: Vec3) -> Vec3
Advances for unit time along the geodesic with initial velocity
v.fn log(&self, from: Vec3, to: Vec3) -> Vec3
fn parallel_transport(&self, from: Vec3, to: Vec3, v: Vec3) -> Vec3
Source§fn chart_envelope(&self) -> f32
fn chart_envelope(&self) -> f32
Geodesic distance from the chart origin beyond which
Self::valid_point refuses a point.Source§fn valid_point(&self, p: Vec3) -> bool
fn valid_point(&self, p: Vec3) -> bool
Finite, inside the chart, and within
Self::chart_envelope of the origin.Source§fn 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.Source§fn is_chart_flat(&self) -> bool
fn is_chart_flat(&self) -> bool
True when chart arithmetic respects the global geometry, including identifications.
Source§impl WgslSpace for BlendedSpace<EuclideanR3, HyperbolicH3, LinearBlendX>
impl WgslSpace for BlendedSpace<EuclideanR3, HyperbolicH3, LinearBlendX>
Source§fn wgsl_impl(&self) -> Cow<'static, str>
fn wgsl_impl(&self) -> Cow<'static, str>
Emits
loam_distance, loam_origin_distance, loam_exp, loam_log, loam_geodesic_step, and LOAM_MAX_ARC over the space’s point type.fn wgsl_accuracy(&self) -> WgslAccuracy
Auto Trait Implementations§
impl<A, B, F> Freeze for BlendedSpace<A, B, F>
impl<A, B, F> RefUnwindSafe for BlendedSpace<A, B, F>
impl<A, B, F> Send for BlendedSpace<A, B, F>
impl<A, B, F> Sync for BlendedSpace<A, B, F>
impl<A, B, F> Unpin for BlendedSpace<A, B, F>
impl<A, B, F> UnsafeUnpin for BlendedSpace<A, B, F>
impl<A, B, F> UnwindSafe for BlendedSpace<A, B, F>
Blanket Implementations§
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