/BurstTriangulator

2d Delaunay triangulation with mesh refinement for Unity with Burst compiler

Primary LanguageC#MIT LicenseMIT

Build Tests openupm

A single-file package which provides Delaunay triangulation of the given set of points with constraints and mesh refinement.

✨ Supported Features

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.

lake-preview-light lake-preview-dark

⏱️ 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.

Delaunay Benchmark

🚀 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

Required:

Optional:

🤝 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.

⚖️ License

  • The code in this repository is licensed under the MIT License.
  • The documentation in this repository is licensed under the CC BY 4.0 License.