Voronoice
A nice and fast way to construct 2D Voronoi diagrams written in Rust.
Voronoice builds Voronoi diagrams by first obtaining its Delaunay triangulation, through the really fast delaunator crate and then extracting its dual Voronoi diagram.
Example
use *;
// voronoi sites
let sites = vec!;
// builds a voronoi diagram from the set of sites above, bounded by a square of size 4
let my_voronoi = default
.set_sites
.set_bounding_box
.set_lloyd_relaxation_iterations
.build
.unwrap;
// inspect cells through iterators
my_voronoi.iter_cells.for_each;
// or probe cells individually
let my_cell = my_voronoi.cell;
println!;
// or, for graphical applications, that benefit from index buffers
// you can access the raw, indexed data
let all_voronoi_cell_vertices = my_voronoi.vertices;
let indexed_voronoi_cells = my_voronoi.cells;
println!;
Documentation
On docs.rs.
Performance
Here are some generation times on a 3.5GHz Core i7 from 2012.
Number of points | Time |
---|---|
1,000 | 190 µs |
10,000 | 2 ms |
100,000 | 23 ms |
1,000,000 | 402 ms |
5,000,000 | 2.4 s |
10,000,000 | 5.1 s |
A comparison benchmark with other Rust Voronoi diagram generating libraries can be found here.