Skip to main content

IfsMap

Struct IfsMap 

Source
pub struct IfsMap {
    pub theta: f32,
    pub phi: f32,
    pub sx: f32,
    pub sy: f32,
    pub t: [f32; 2],
    pub p: f32,
}
Expand description

One map, decomposed: M = R(θ)·diag(sx, sy)·R(φ), a translation, and a selection probability.

This is the space every morph and every lever acts in, and the reason the whole family is safe by construction rather than by a guard.

Fields§

§theta: f32

The rotation applied after the scale.

§phi: f32

The rotation applied before the scale.

§sx: f32

The larger singular value — non-negative, and >= |sy| by construction.

§sy: f32

The smaller singular value, signed so a reflection is representable. The fern’s f₄ has determinant −0.109; a parameterization that forces this non-negative reproduces the fern with its right-hand frond wrong, and silently.

§t: [f32; 2]

The translation (e, f). Does not enter contractivity at all, which is what makes lean an unconditionally safe lever.

§p: f32

Selection probability. Changes where points land, never whether the orbit converges — which is what makes bias safe too.

Implementations§

Source§

impl IfsMap

Source

pub fn sigma_max(&self) -> f32

This map’s operator norm — the number the whole safety argument is stated against. Contractive exactly when this is below 1.

Written as max(|sx|, |sy|) rather than as sx, even though sx is the larger by construction and stays so under every operation here (a lerp of two orderings preserves the ordering; a uniform scale preserves it). The property is about the operator norm, and spelling it as the property is what keeps a later edit from quietly making sx the wrong answer.

Source

pub fn to_affine(&self) -> Affine

The affine this map recomposes to.

Trait Implementations§

Source§

impl Clone for IfsMap

Source§

fn clone(&self) -> IfsMap

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for IfsMap

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for IfsMap

Source§

fn eq(&self, other: &IfsMap) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for IfsMap

Source§

impl StructuralPartialEq for IfsMap

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,