这是一个单文件包,提供给定点集的Delaunay三角剖分,包括约束和网格细化功能。
✨ 支持的功能
- Delaunay三角剖分 文档↗
- 约束三角剖分 文档↗
- 网格细化(角度和面积参数) 文档↗
- 孔洞和边界恢复(手动和自动) 文档↗
- 支持
Unity.Jobs
管线 文档↗ - 输入预处理器 文档↗
- 输入验证 文档↗
- 通用坐标(
float2
,double2
) 文档↗ - 原生支持(低级API) 文档↗
- 托管输入支持 文档↗
要查看手册和脚本API文档,请在线访问这里或导航到Documentation~/
并使用docfx.json
进行构建。
📐 示例结果
作为说明性示例,我们展示了不同细化参数下的苏必利尔湖三角剖分结果。左上角的图像显示了没有任何细化的结果。
⏱️ 基准测试
该包利用Burst
编译器生成高度优化的原生代码,使用LLVM。
下面是这个包与其他几个替代方案在经典 Delaunay三角剖分(没有细化或约束)方面的性能比较:
要查看更多基准测试,请访问文档。
🚀 快速开始
安装包并在你的代码中添加using
using andywiecko.BurstTriangulator;
然后对单位正方形$[(0, 0), (1, 0), (1, 1), (0, 1)]$进行三角剖分:
using var positions = new NativeArray<double2>(new[]
{
new(0, 0), new(1, 0), new(1, 1), new(0, 1)
}, Allocator.Persistent);
using var triangulator = new Triangulator(Allocator.Persistent)
{
Input = { Positions = positions }
};
triangulator.Run();
var triangles = triangulator.Output.Triangles;
📦 依赖项
🤝 贡献
发现bug?请提交issue。你可以在这里找到已知问题列表。有兴趣为项目做出贡献?欢迎提出issue或提交pull request。要了解与此包相关的当前和未来工作的更新,请查看包的项目。