pub struct SphereBoostFlowBasis;Expand description
The three conformal-boost vector fields on the round S² in (lat, lon)
coordinates — the non-isometric part of the conformal group, i.e. the
gradient fields of the degree-1 spherical harmonics z, x, y.
§Why these three modes, and why they are the right (and complete) pin
After the gauge-invariant fit the sphere chart’s residual freedom is the
conformal group of (S², g_round), which is PSL(2, ℂ) (6-real-dim): the
three rotation Killing fields (the isometries O(3)) plus the three
boosts. The isometry defect ‖g_φ − g_ref‖² is null on the rotations
(true isometries) and strictly positive on the boosts (a boost is a
non-isometric conformal map: it scales the metric by a non-constant
conformal factor μ(x) ≠ 1, compressing one hemisphere into a cap — the
d = 2 analogue of the d = 1 circle-into-1.0-rad pathology). So
minimizing the defect over the boost subspace breaks the conformal
moduli down to the residual isometry group O(3) — exactly the finite-dim
residual the certificate reports. The rotation modes are deliberately
EXCLUDED: they are defect-null and would only insert null directions into
the Gauss–Newton system (the same reason torus translations / patch
rotations are excluded from their flow bases).
In (lat, lon) the boost fields are (with s = sin lat, c = cos lat):
K_z = ( c, 0 ) (gradient of z = sin lat)
K_x = ( s·cos lon, −sin lon / c ) (gradient of x)
K_y = ( s·sin lon, cos lon / c ) (gradient of y)K_z is globally smooth (pole-free); K_x, K_y carry the 1/c
longitudinal pole the hairy-ball theorem guarantees somewhere. The flow is
the same Euler convention as the torus / patch families,
φ_θ(t) = t + Σ_k θ_k v_k(t), and the band guard (SPHERE_FLOW_POLE_MARGIN)
keeps every evaluated row away from the 1/c singularity, so the three
fields are smooth and bounded on the data and the pin is well-posed.
Implementations§
Source§impl SphereBoostFlowBasis
impl SphereBoostFlowBasis
Sourcepub fn dim(&self) -> usize
pub fn dim(&self) -> usize
The three boost modes are always present; the dimension is fixed at 3.
Sourcepub fn mode_layout(&self) -> [SphereBoostAxis; 3]
pub fn mode_layout(&self) -> [SphereBoostAxis; 3]
Mode identities in coefficient order: [Z, X, Y]. This IS the θ
index layout — [Self::mode_samples] returns samples in the same order.
Trait Implementations§
Source§impl Clone for SphereBoostFlowBasis
impl Clone for SphereBoostFlowBasis
Source§fn clone(&self) -> SphereBoostFlowBasis
fn clone(&self) -> SphereBoostFlowBasis
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SphereBoostFlowBasis
impl RefUnwindSafe for SphereBoostFlowBasis
impl Send for SphereBoostFlowBasis
impl Sync for SphereBoostFlowBasis
impl Unpin for SphereBoostFlowBasis
impl UnsafeUnpin for SphereBoostFlowBasis
impl UnwindSafe for SphereBoostFlowBasis
Blanket Implementations§
impl<T> Allocation 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
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>
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>
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,
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>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
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
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.