pub struct Custom<const D: usize, N> { /* private fields */ }
Expand description
A generator which produces n-dimensional values based on the provided closure.
For details, see the documentation of custom()
. Typically, this struct is not meant
to be used directly. Instead, custom()
implemented by Source
, should be used to
create a custom generator.
§Direct usage of this struct
Direct instantiation of this struct:
let generator = Custom::new(|[x, y]| x % 2.0 + (1.0 - y * y) % 3.0);
let value = generator.sample([0.2, 0.5]);
Implementations§
Trait Implementations§
Source§impl<const D: usize, N: Fn([f64; D]) -> f64> Generator<D> for Custom<D, N>
impl<const D: usize, N: Fn([f64; D]) -> f64> Generator<D> for Custom<D, N>
Source§fn sample(&self, point: [f64; D]) -> f64
fn sample(&self, point: [f64; D]) -> f64
Samples the generator at a given
point
and returns the resulting value. Read moreSource§fn scale(self, scale: [f64; D]) -> Scale<D, Self>
fn scale(self, scale: [f64; D]) -> Scale<D, Self>
Create a generator which scales input points before passing them to the underlying generator. Read more
Source§fn translate(self, translation: [f64; D]) -> Translate<D, Self>
fn translate(self, translation: [f64; D]) -> Translate<D, Self>
Create a generator which translates input points before passing them to the underlying generator. Read more
Source§fn neg(self) -> Neg<D, Self>
fn neg(self) -> Neg<D, Self>
Create a generator which negates the results of the underlying generator. Read more
Source§fn abs(self) -> Abs<D, Self>
fn abs(self) -> Abs<D, Self>
Create a generator returning the absolute value of the results of the underlying generator. Read more
Source§fn exp(self) -> Exp<D, Self>
fn exp(self) -> Exp<D, Self>
Create a generator applying the exponential function on results of the underlying generator. Read more
Source§fn add(self, offset: f64) -> Add<D, Self>
fn add(self, offset: f64) -> Add<D, Self>
Create a generator adding
offset
to results of the underlying generator. Read moreSource§fn mul(self, scale: f64) -> Mul<D, Self>
fn mul(self, scale: f64) -> Mul<D, Self>
Create a generator multiplying
scale
to results of the underlying generator. Read moreSource§fn powi(self, exponent: i32) -> Pow<D, Self, i32>
fn powi(self, exponent: i32) -> Pow<D, Self, i32>
Create a generator raising results of the underlying generator to the power of
exponent
. Read moreSource§fn powf(self, exponent: f64) -> Pow<D, Self, f64>
fn powf(self, exponent: f64) -> Pow<D, Self, f64>
Create a generator raising results of the underlying generator to the power of
exponent
. Read moreSource§fn clamp(self, min: f64, max: f64) -> Clamp<D, Self>
fn clamp(self, min: f64, max: f64) -> Clamp<D, Self>
Create a generator clamping results of the underlying generator to a given interval. Read more
Source§fn lambda<L>(self, lambda: L) -> Lambda<D, Self, L>
fn lambda<L>(self, lambda: L) -> Lambda<D, Self, L>
Create a generator applying the supplied closure to results of the underlying generator. Read more
Source§fn sum<G>(self, other: G) -> Sum<D, Self, G>where
G: Generator<D>,
fn sum<G>(self, other: G) -> Sum<D, Self, G>where
G: Generator<D>,
Create a generator adding results of the underlying generator to results of a given other
generator. Read more
Source§fn product<G>(self, other: G) -> Product<D, Self, G>where
G: Generator<D>,
fn product<G>(self, other: G) -> Product<D, Self, G>where
G: Generator<D>,
Create a generator multiplying results of the underlying generator to results of a given other
generator. Read more
Source§fn min<G>(self, other: G) -> Min<D, Self, G>where
G: Generator<D>,
fn min<G>(self, other: G) -> Min<D, Self, G>where
G: Generator<D>,
Create a generator producing the minimum of results of the underlying generator and results of
a given other generator. Read more
Source§fn max<G>(self, other: G) -> Max<D, Self, G>where
G: Generator<D>,
fn max<G>(self, other: G) -> Max<D, Self, G>where
G: Generator<D>,
Create a generator producing the maximum of results of the underlying generator and results of
a given other generator. Read more
Source§fn power<G>(self, other: G) -> Power<D, Self, G>where
G: Generator<D>,
fn power<G>(self, other: G) -> Power<D, Self, G>where
G: Generator<D>,
Create a generator raising results of the underlying generator to the power of results of a
given other generator. Read more
Source§fn fbm(
self,
octaves: u32,
frequency: f64,
lacunarity: f64,
persistence: f64,
) -> Fbm<D, Self>
fn fbm( self, octaves: u32, frequency: f64, lacunarity: f64, persistence: f64, ) -> Fbm<D, Self>
Create a generator applying fractal brownian motion on the underlying generator. Read more
Source§fn billow(
self,
octaves: u32,
frequency: f64,
lacunarity: f64,
persistence: f64,
) -> Billow<D, Self>
fn billow( self, octaves: u32, frequency: f64, lacunarity: f64, persistence: f64, ) -> Billow<D, Self>
Source§fn ridgedmulti(
self,
octaves: u32,
frequency: f64,
lacunarity: f64,
attenuation: f64,
) -> RidgedMulti<D, Self>
fn ridgedmulti( self, octaves: u32, frequency: f64, lacunarity: f64, attenuation: f64, ) -> RidgedMulti<D, Self>
Source§fn blend<G, GC>(self, other: G, control: GC) -> Blend<D, Self, G, GC>
fn blend<G, GC>(self, other: G, control: GC) -> Blend<D, Self, G, GC>
Create a generator blending the underlying generator with a given other generator based on the
value supplied by a control-generator. Read more
Source§fn select<G, GC>(
self,
other: G,
control: GC,
selection_min: f64,
selection_max: f64,
) -> Select<D, Self, G, GC>
fn select<G, GC>( self, other: G, control: GC, selection_min: f64, selection_max: f64, ) -> Select<D, Self, G, GC>
Create a generator selecting the result of either the underlying generator or that of a given
other generator based on whether the value supplied by a control-generator lies within the
provided interval. Read more
Source§impl<N: Fn([f64; 2]) -> f64> Generator2D for Custom<2, N>
impl<N: Fn([f64; 2]) -> f64> Generator2D for Custom<2, N>
Source§fn rotate(self, rotation: [f64; 1]) -> Rotate<2, 1, Self>
fn rotate(self, rotation: [f64; 1]) -> Rotate<2, 1, Self>
Create a generator which rotates input points before passing them to the underlying generator. Read more
Source§impl<N: Fn([f64; 3]) -> f64> Generator3D for Custom<3, N>
impl<N: Fn([f64; 3]) -> f64> Generator3D for Custom<3, N>
Source§fn rotate(self, rotation: [f64; 3]) -> Rotate<3, 3, Self>
fn rotate(self, rotation: [f64; 3]) -> Rotate<3, 3, Self>
Create a generator which rotates input points before passing them to the underlying generator. Read more
Source§fn displace_x<GA>(self, displacement_generator: GA) -> Displace<3, 0, Self, GA>where
GA: Generator<3>,
fn displace_x<GA>(self, displacement_generator: GA) -> Displace<3, 0, Self, GA>where
GA: Generator<3>,
Create a generator providing the results of the underlying generator after displacing the
x-coordinate by the result of the provided generator. Read more
Source§impl<N: Fn([f64; 4]) -> f64> Generator4D for Custom<4, N>
impl<N: Fn([f64; 4]) -> f64> Generator4D for Custom<4, N>
Source§fn rotate(self, rotation: [f64; 6]) -> Rotate<4, 6, Self>
fn rotate(self, rotation: [f64; 6]) -> Rotate<4, 6, Self>
Create a generator which rotates input points before passing them to the underlying generator. Read more
Source§fn displace_x<GA>(self, displacement_generator: GA) -> Displace<4, 0, Self, GA>where
GA: Generator<4>,
fn displace_x<GA>(self, displacement_generator: GA) -> Displace<4, 0, Self, GA>where
GA: Generator<4>,
Create a generator providing the results of the underlying generator after displacing the
x-coordinate by the result of the provided generator. Read more
Source§fn displace_y<GA>(self, displacement_generator: GA) -> Displace<4, 1, Self, GA>where
GA: Generator<4>,
fn displace_y<GA>(self, displacement_generator: GA) -> Displace<4, 1, Self, GA>where
GA: Generator<4>,
Create a generator providing the results of the underlying generator after displacing the
y-coordinate by the result of the provided generator. Read more
impl<const D: usize, N: Copy> Copy for Custom<D, N>
Auto Trait Implementations§
impl<const D: usize, N> Freeze for Custom<D, N>where
N: Freeze,
impl<const D: usize, N> RefUnwindSafe for Custom<D, N>where
N: RefUnwindSafe,
impl<const D: usize, N> Send for Custom<D, N>where
N: Send,
impl<const D: usize, N> Sync for Custom<D, N>where
N: Sync,
impl<const D: usize, N> Unpin for Custom<D, N>where
N: Unpin,
impl<const D: usize, N> UnwindSafe for Custom<D, N>where
N: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 more