#三角剖分 #维度 #顶点 #维度 #接口 #单元 #cgal

nd-triangulation

使用 CGAL 进行任意维度三角剖分

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

GPL-3.0-or-later

21KB
446 代码行

Documentation

任意维度三角剖分

此库提供了与 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