1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//! A helper that maps a range of values to and from the normalized
//! range `[0.0, 1.0]` using various gradients, useful for DSP applications.
//!
//! (currently in beta)
//!
//! ## Installation
//! Add `normal_map` as a dependency in your `Cargo.toml`:
//! ```text
//! normal_map = 0.2
//! ```
//!
//! ## Example
//! ```
//! // Import normal mappers that use internal f32 values.
//! // (f64 is available as well)
//! use normal_map::f32::*;
//!
//! // Linear mapper
//! let lin_map = LinearMap::new(-50.0, 50.0, Unit::Generic);
//!
//! assert!((lin_map.normalize(25.0) - 0.75).abs() <= 0.0001);
//! assert!((lin_map.denormalize(0.25) - (-25.0)).abs() <= 0.0001);
//!
//! // Efficiently map an array/slice of values.
//! let in_normals = [0.0f32, 1.0, 0.25, -0.25];
//! let mut out_values = [0.0f32; 4];
//!
//! lin_map.denormalize_array(&in_normals, &mut out_values);
//!
//! // Generic type for any mapper
//! let normal_map = NormalMap::discrete::<isize>(-5, 5);
//!
//! assert!((normal_map.normalize(3 as f32) - 0.8).abs() <= 0.0001);
//! ```

#[cfg(test)]
mod tests;

pub mod f32;
pub mod f64;