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