1个不稳定版本
0.1.0 | 2021年6月25日 |
---|
#9 in #delaunay
873 每月下载量
在 4 个crate中使用了 (直接使用 2 个)
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