Crates.io | fuss |
lib.rs | fuss |
version | 0.2.2 |
source | src |
created_at | 2017-11-18 05:11:14.231457 |
updated_at | 2018-11-12 17:28:31.318573 |
description | Small, lightweight simplex noise generator for Rust |
homepage | http://surrsur.us/fuss/fuss/index.html |
repository | https://github.com/surrsurus/fuss |
max_upload_size | |
id | 39760 |
size | 3,977,946 |
Fuss - Small, lightweight simplex noise generator for Rust.
This library only provides functionality for generating 2D and 3D simplex noise, as well as the ability to normalize the noise through sum octaves (fractal Brownian motion).
Add fuss to your Cargo.toml
:
[dependencies]
# Get the current stable
fuss = "0.2.1"
All fuss interactions happen through the Simplex
struct.
Here's how you get one:
extern crate fuss;
use fuss::Simplex;
let sn = Simplex::new();
Simplex
lets you generate 2D and 3D noise.
let sn = Simplex::new();
sn.noise_2d(1.0, -1.0);
sn.noise_3d(1.0, -1.0, 0.0);
Which lets you generate noise for large sets of points:
let sn = Simplex::new();
let mut map = Vec::<Vec<Vec<f32>>>::new();
for x in 0..10 {
map.push(Vec::<Vec<f32>>::new());
for y in 0..10 {
map[x as usize].push(Vec::<f32>::new());
for z in 0..10 {
map[x as usize][y as usize].push(sn.noise_3d(x as f32, y as f32, z as f32));
}
}
}
Simplex
generates it's own permutation table based on the rust RNG, however you can apply your own seed to get a Simplex
as such:
let sn = Simplex::from_seed(vec![0, 1, 2, 3, 4, 5]);
let other_sn = Simplex::from_seed(vec![0, 1, 2, 3, 4, 5]);
// The two simplexes will generate the same noise for the same points
// if given the same RNG seed
assert_eq!(sn.noise_2d(0.0, 0.0), other_sn.noise_2d(0.0, 0.0));
Simplex
uses the same type of seeds that SeedableRng
does, being a slice of usize
s, however to make this easier Simplex
will accept a Vec<usize>
instead.
Run
$ cargo test
to run all unit tests and doc tests.
fuss follows cargo's rules of Semantic Versioning:
This project is licensed under the MPPL 2.0 License - See the LICENSE.md file for details