#delaunay-triangulation #hilbert-curve #2d-3d #triangle #points #graph #algorithm

simple_delaunay_lib

在 Rust 中实现 2D 和 3D Delaunay 算法

2 个不稳定版本

0.2.0 2024 年 2 月 2 日
0.1.0 2024 年 1 月 10 日

893算法

MIT 许可证

110KB
2.5K SLoC

Rust 中的 Delaunay 三角化和四面体化

此软件是 Delaunay 2D 和 3D 算法的实现,用于编程练习。它并未完全优化,但至少应该能正确工作。

Delaunay 2D

一组 2D 点沿着 Hilbert 曲线排序。

插入一个第一个(非平面)三角形,然后逐个插入下一个点。

对于每个点,在 Delaunay 图中进行一次遍历,直到找到包含该点的三角形。点被插入到三角形内,然后进行一系列边翻转,直到图完全 Delaunay。

Delaunay 3D

一组 3D 点沿着 Hilbert 曲线排序。

插入一个第一个(非平面)四面体,然后逐个插入下一个点。

对于每个点,在 Delaunay 图中进行一次遍历,直到找到包含该点的三角形。然后,删除包含该点的球面内的每个相邻四面体。然后插入一个新的四面体集来替换图中的洞(Bowyer-Watson 算法)。

来源

Olivier Devilliers, Delauany 三角化,理论与实践, EuroCG12 链接

David F. Watson, 使用 Delaunay 网格计算 n 维 Delaunay 网格并应用于 Voronoi 多面体, 计算机杂志,第 24 卷,第 2 期,1981 年,第 167-172 页

Adrian Bowyer, 计算 Dirichlet 网格,计算机杂志, 第 24 卷,第 2 期,1981 年,第 162-166 页

SI, Hang, TetGen,一个基于 Delaunay 的优质四面体网格生成器, ACM 数学软件事务,2015 年,第 41 卷,第 2 期,第 11 页. (此仓库不是 TetGen 的实现)

Gavrilova, Marina, Ratschek, Helmut, et Rokne, Jon G. 精确计算 Delaunay 和幂三角化, 可靠计算,2000 年,第 6 卷,第 39-60 页. (本仓库未实现)

Hilbert 曲线

依赖项

~695KB