Exact, parallel 2D Delaunay triangulation for int32 coordinates

github.com

76 points by oryx1729 6 days ago


animal531 - 9 hours ago

Very nice results. For my Unity C# code I use Andy's package: https://github.com/andywiecko/BurstTriangulator

Looking at his performance graph it looks like he does about 1 million points in around 320ms or so (if I managed to read his graph correctly), albeit for float2 values and using Unity Burst which does SIMD+multiple threads.

DennisL123 - 16 hours ago

Nice work. Getting DT edge cases right can be quite some work.

Shameless plug: My own DT for int32 coordinates in Rust, and compiled to wasm with a bit of visualization. Click to add and remove sites, hit animate for a bit of lava lamp like vibes.

https://hermes.leytron.de/delauney/

Remnant44 - 15 hours ago

Looks very promising - I've been looking for a good delaunay library that supports constrained delaunay.

It looks like their performance benchmark is including multithreading, which although a useful feature, makes performance comparisons more difficult - would love to see a baseline single threaded performance as well.

fp64 - 16 hours ago

Can you compare with what used to be, to the best of my knowlege, by far the fastest implementation, https://www.cs.cmu.edu/~quake/triangle.html ? It's not int specific though, but I would still be curious

hingler36 - a day ago

Great project!

Are vertex insertion and deletion also supported/accelerated?

What compromises are keeping this constrained to 32-bit? It seems like you could cut back on quantization error by increasing bits, but if you're doing some manual SIMD magic to get this performance I can understand sticking with 32 bits.

rezaprima - 18 hours ago

from the site

> For large point sets, Delaunay32 is over 10× faster than delaunator-cpp and around 4× faster than Fade2D.

ur-whale - 13 hours ago

Impressive work.

@author : I'm trying to wrap my head around the following question: are there any situations where the "int32 constraint" would be an issue?

My gut feeling says that fine a grid (4B steps) is likely to generate a good enough approximation to the exact answer for general problem (64 bit float) for most cases.

Am I wrong?

Also: can the algorithm easily be extended to int64 ?

MattCruikshank - 18 hours ago

Neat, now do a 3D Delaunay tetrahedrization! :)

tug2024 - 19 hours ago

[dead]