voronator

Port of the d3-delaunay and delaunator libraries in Rust.

This package implements the Voronoi diagram construction as a dual of the Delaunay triangulation for a set of points. It also implements the construction of a centroidal tesselation of a Delaunay triangulation, inspired by Red Blob Games.

Examples

```rust extern crate voronator; extern crate rand;

use voronator::VoronoiDiagram; use rand::prelude::*; use rand::distributions::Uniform;

fn main() { let mut rng = rand::threadrng(); let range1 = Uniform::new(0., 100.); let range2 = Uniform::new(0., 100.); let mut points: Vec<(f64, f64)> = (0..10) .map(|| (rng.sample(&range1), rng.sample(&range2))) .collect();

let diagram = VoronoiDiagram::from_tuple(&(0., 0.), &(100., 100.), &points).unwrap();

for cell in diagram.cells {
    let p: Vec<(f32, f32)> = cell.into_iter()
        .map(|x| (x.x as f32, x.y as f32))
        .collect();

    println!("{:?}", p);
}

} ``` Possible output:

Possible output