BurstTriangulator
BurstTriangulator copied to clipboard
2d Delaunay triangulation with mesh refinement for Unity with Burst compiler
A single-file package which provides Delaunay triangulation of the given set of points with constraints and mesh refinement.
Supported Features
- Delaunay triangulation
- Constrained triangulation
- Mesh refinement (angle and area parameters)
- Restoring boundary
- Holes (manual and auto)
-
Support for
Unity.Jobs
pipeline - Input preprocessors
- Input validation
- Generic coordinates
To view the documentation for the manual and scripting API access it online here or navigate to Documentation~/
and build this using docfx.json
.
Example results
As an illustrative example, we present the triangulation of Lake Superior with various refinement parameters. The top-left image shows the result without any refinement.
Benchmark
The package utilizes the Burst
compiler, which generates highly optimized native code using LLVM.
Below, you'll find a performance comparison for classic Delaunay triangulation (without refinement or constraints).
between this package and a few alternatives:
To see more benchmarks visit the documentation.
Quick start
Install the package and add using
in your code
using andywiecko.BurstTriangulator;
and to triangulate unit box $[(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;
Dependencies
Contributions
Found a bug? Please open an issue. You can find a list of known issues here. Interested in contributing to the project? Feel free to open an issue or submit a pull request. For updates on current and future work related to this package, check out the package project.