8 个版本
0.3.4 | 2021年2月1日 |
---|---|
0.3.3 | 2020年3月31日 |
0.3.0 | 2020年1月22日 |
0.2.0 | 2020年1月15日 |
0.1.1 | 2019年12月18日 |
#1059 在 算法
37 每月下载量
用于 osmgraphing
21KB
446 代码行
任意维度三角剖分
此库提供了与 CGAL 库的接口,用于创建和遍历任意维度的三角剖分。其功能集相当有限,因为它是为一个非常特定的研究目的编写的。然而,我愿意考虑集成新功能,当然也接受拉取请求。
示例
可以通过向其中添加顶点来增量地创建三角剖分
let mut tri = Triangulation::new(3); // We are doing a 3 dimensional triangulation
// Everything that can be referenced as a slice can be added to the Triangulation
tri.add_vertex(&[1.0, 1.0, 1.0]).unwrap(); // Add point doesn't work for points in the wrong dimension
tri.add_vertex(&[2.0, 4.1, -2.3]).unwrap();
tri.add_vertex(&[44.2, 45.4, 12.6]).unwrap();
tri.add_vertex(&[-23.2, 24.7, 17.9]).unwrap();
之后,我们可以遍历所有凸包单元及其相应的点
for ch_cell in tri.convex_hull_cells() {
for p in ch_cell.vertices() {
println!("{:?} is on the boundary of the convex hull", p);
}
}
依赖关系
此包使用 cpp 包与 C++ 和 CGAL 进行交互。这意味着要使用和编译此包,您需要安装 g++ 以及 CGAL 和 eigen3。
限制
目前,此包的功能相当有限。它提供了我研究中需要的功能,并且可以在我需要的环境中编译(目前是 archlinux)。然而,如果其他人想使用此包并需要其他功能或环境,我愿意改进这种情况。只需提交一个包含您用例的问题。此外,我不是 rust-c++-interop 的专家。因此,我不能也不能保证没有内存泄漏或未定义的行为。我会尽力的;)。
依赖关系
~1–2MB
~38K SLoC