valora 0.2.8

A brush for generative fine art.
Documentation
//! Noise sampling.

use crate::{P2, P3};
use noise::NoiseFn;

/// A trait for types which are sources of noise, samplable by type `P`.
pub trait NoiseSrc<P> {
    /// Samples noise.
    fn noise(&self, p: P) -> f32;
}

impl<N> NoiseSrc<P2> for N
where
    N: NoiseFn<[f64; 2]>,
{
    fn noise(&self, p: P2) -> f32 {
        self.get([p.x as f64, p.y as f64]) as f32
    }
}

impl<N> NoiseSrc<P3> for N
where
    N: NoiseFn<[f64; 3]>,
{
    fn noise(&self, p: P3) -> f32 {
        self.get([p.x as f64, p.y as f64, p.z as f64]) as f32
    }
}