Struct Custom

Source
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§

Source§

impl<const D: usize, N: Fn([f64; D]) -> f64> Custom<D, N>

Source

pub fn new(noise: N) -> Self

Create a new constant generator.

Trait Implementations§

Source§

impl<const D: usize, N: Clone> Clone for Custom<D, N>

Source§

fn clone(&self) -> Custom<D, N>

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<const D: usize, N: Debug> Debug for Custom<D, N>

Source§

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

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

impl<const D: usize, N: Fn([f64; D]) -> f64> Generator<D> for Custom<D, N>

Source§

fn sample(&self, point: [f64; D]) -> f64

Samples the generator at a given point and returns the resulting value. Read more
Source§

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>

Create a generator which translates input points before passing them to the underlying generator. Read more
Source§

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>

Create a generator returning the absolute value of the results of the underlying generator. Read more
Source§

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>

Create a generator adding offset to results of the underlying generator. Read more
Source§

fn mul(self, scale: f64) -> Mul<D, Self>

Create a generator multiplying scale to results of the underlying generator. Read more
Source§

fn powi(self, exponent: i32) -> Pow<D, Self, i32>

Create a generator raising results of the underlying generator to the power of exponent. Read more
Source§

fn powf(self, exponent: f64) -> Pow<D, Self, f64>

Create a generator raising results of the underlying generator to the power of exponent. Read more
Source§

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>
where L: Fn(f64) -> f64,

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>,

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>,

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>,

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>,

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>,

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>

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>

Create a generator applying an fbm()-like effect on the underlying generator. Read more
Source§

fn ridgedmulti( self, octaves: u32, frequency: f64, lacunarity: f64, attenuation: f64, ) -> RidgedMulti<D, Self>

Create a generator applying an fbm()-like effect on the underlying generator. Read more
Source§

fn blend<G, GC>(self, other: G, control: GC) -> Blend<D, Self, G, GC>
where G: Generator<D>, GC: Generator<D>,

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>
where G: Generator<D>, GC: Generator<D>,

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§

fn spline<S>(self, knot_vector: &[f64], knots: &[f64]) -> Spline<D, Self, S>
where S: SplineImpl,

Create a generator returning the function value of a provided spline given the result of the underlying generator as input. Read more
Source§

impl<N: Fn([f64; 1]) -> f64> Generator1D for Custom<1, N>

Source§

fn displace_x<GA>(self, displacement_generator: GA) -> Displace<1, 0, Self, GA>
where GA: Generator<1>,

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; 2]) -> f64> Generator2D for Custom<2, N>

Source§

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§

fn displace_x<GA>(self, displacement_generator: GA) -> Displace<2, 0, Self, GA>
where GA: Generator<2>,

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<2, 1, Self, GA>
where GA: Generator<2>,

Create a generator providing the results of the underlying generator after displacing the y-coordinate by the result of the provided generator. Read more
Source§

impl<N: Fn([f64; 3]) -> f64> Generator3D for Custom<3, N>

Source§

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>,

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<3, 1, Self, GA>
where GA: Generator<3>,

Create a generator providing the results of the underlying generator after displacing the y-coordinate by the result of the provided generator. Read more
Source§

fn displace_z<GA>(self, displacement_generator: GA) -> Displace<3, 2, Self, GA>
where GA: Generator<3>,

Create a generator providing the results of the underlying generator after displacing the z-coordinate by the result of the provided generator. Read more
Source§

impl<N: Fn([f64; 4]) -> f64> Generator4D for Custom<4, N>

Source§

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>,

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>,

Create a generator providing the results of the underlying generator after displacing the y-coordinate by the result of the provided generator. Read more
Source§

fn displace_z<GA>(self, displacement_generator: GA) -> Displace<4, 2, Self, GA>
where GA: Generator<4>,

Create a generator providing the results of the underlying generator after displacing the z-coordinate by the result of the provided generator. Read more
Source§

fn displace_w<GA>(self, displacement_generator: GA) -> Displace<4, 3, Self, GA>
where GA: Generator<4>,

Create a generator providing the results of the underlying generator after displacing the w-coordinate by the result of the provided generator. Read more
Source§

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> 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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V