Rust library for sampling a Poisson disk distribution in multiple dimensions.
The Poisson disk distribution produces samples of which no two samples are too close to each other. This results in a more uniform distribution than from pure random sampling.
This library is an implementation of the algorithm introduced by Robert Bridson [1] which is O(N) for producing N samples. That is, the sampling time increases linearly with the number of produced samples. For two-dimensional sampling, the sampling time increases with the area and for three-dimensional sampling with the volume.
Examples
See the documentation for more information about the library.
Set-up
Add the library as a dependency to your project in Cargo.toml:
[dependencies]
#
poisson-diskus = "1.0.0-pre.2"
Three dimensions
use bridson;
let box_size = ;
let rmin = 0.5;
let num_attempts = 30;
let coords = bridson.unwrap;
Larger number of dimensions
use bridson;
let box_size = ;
let rmin = 1.0;
let num_attempts = 30;
let coords = bridson.unwrap;
for coord in coords
Citations
[1] Bridson, R. (2007). Fast Poisson disk sampling in arbitrary dimensions. SIGGRAPH sketches, 10, 1.
License
This library is offered under the permissive Blue Oak license. See LICENSE.md for more details.