1个不稳定版本

0.1.0 2021年6月25日

#9 in #delaunay

Download history 36/week @ 2024-02-27 42/week @ 2024-03-05 47/week @ 2024-03-12 30/week @ 2024-03-19 28/week @ 2024-03-26 44/week @ 2024-04-02 27/week @ 2024-04-09 131/week @ 2024-04-16 181/week @ 2024-04-23 132/week @ 2024-04-30 407/week @ 2024-05-07 280/week @ 2024-05-14 253/week @ 2024-05-21 243/week @ 2024-05-28 150/week @ 2024-06-04 161/week @ 2024-06-11

873 每月下载量
4 个crate中使用了 (直接使用 2 个)

MIT/Apache

105KB
1.5K SLoC

cdt

cdt 是一个用于计算 Delaunay约束Delaunay 三角剖分的库。

它通过使用精确的判定方法进行点在圆内和方向测试,以优化正确性和速度。


lib.rs:

cdt 是一个用于计算 Delaunay约束Delaunay 三角剖分的库。

它通过使用精确的判定方法进行点在圆内和方向测试,以优化正确性和速度。

示例

Delaunay三角剖分

这是对一个正方形内四个点的三角剖分

let pts = vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)];
let triangles = cdt::triangulate_points(&pts).unwrap();
assert!(triangles.len() == 2);
for t in triangles {
println!("{:?} {:?} {:?}", pts[t.0], pts[t.1], pts[t.2])
}

约束Delaunay三角剖分

这是对一个内正方形和外正方形的三角剖分

let pts = vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0),
(0.2, 0.2), (0.8, 0.2), (0.8, 0.8), (0.2, 0.8)];
let triangles = cdt::triangulate_contours(&pts,
&[vec![0, 1, 2, 3, 0], vec![4, 5, 6, 7, 4]])
.unwrap();
for t in triangles {
println!("{:?} {:?} {:?}", pts[t.0], pts[t.1], pts[t.2])
}

crate特性

默认情况下,该库使用 u32 索引作为内部数据结构的索引,以提高性能。如果您计划在一次遍历中对超过500M个点进行三角剖分,您应该启用 long-indexes 特性。

依赖项

~1.1–1.6MB
~38K SLoC