JimmyCushnie / BurstTriangulator

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

Home Page:https://andywiecko.github.io/BurstTriangulator/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Tests openupm

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
  • Support for Unity.Jobs pipeline
  • Input preprocessors
  • Input validation

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<float2>(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.

About

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

https://andywiecko.github.io/BurstTriangulator/

License:MIT License


Languages

Language:C# 99.9%Language:Makefile 0.1%