#delaunay-triangulation #voronoi-diagram #delaunay #diagram #voronoi #graphics

voronator

实现了点集的 Voronoi 图构造,作为 Delaunay 三角剖分的一种对偶,以及 Delaunay 三角剖分的质心镶嵌构造

4 个版本

0.2.1 2023年2月14日
0.2.0 2021年10月13日
0.1.2 2021年10月12日
0.1.0 2020年6月30日

#487 in 可视化

Download history 976/week @ 2024-03-13 486/week @ 2024-03-20 783/week @ 2024-03-27 576/week @ 2024-04-03 1178/week @ 2024-04-10 831/week @ 2024-04-17 731/week @ 2024-04-24 1134/week @ 2024-05-01 459/week @ 2024-05-08 230/week @ 2024-05-15 515/week @ 2024-05-22 440/week @ 2024-05-29 340/week @ 2024-06-05 519/week @ 2024-06-12 425/week @ 2024-06-19 353/week @ 2024-06-26

1,665 每月下载量
用于 3 crates

自定义许可

155KB
843

voronator

d3-delaunaydelaunator 库移植到 Rust。

此包实现了点集的 Voronoi 图构造,作为 Delaunay 三角剖分的一种对偶。它还实现了 Delaunay 三角剖分的质心镶嵌构造,灵感来源于 Red Blob Games

示例

extern crate voronator;
extern crate rand;

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

fn main() {
    let mut rng = rand::thread_rng();
    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::<Point>::from_tuple(&(0., 0.), &(100., 100.), &points).unwrap();
    
    for cell in diagram.cells() {
        let p: Vec<(f32, f32)> = cell.points().into_iter()
            .map(|x| (x.x as f32, x.y as f32))
            .collect();
        
        println!("{:?}", p);
    }
}

可能输出

Possible output

依赖项