Librerie di triangolazione Delaunay più veloci per set di punti 3D


26

Qual è la libreria più veloce per eseguire la triangolazione delaunay di set con milioni se punti 3D? Sono disponibili anche versioni GPU? Dall'altro lato, avendo la tessellazione voronoi della stessa serie di punti, sarebbe d'aiuto (in termini di prestazioni) per ottenere la triangolazione delaunay?


Hai provato le implementazioni nei software CGAL e TRIANGLE? Entrambi includono algoritmi , che sono (teoricamente) i più veloci disponibili (anche se non in parallelo). O(nlog(n))
Paul

Jonathan Shewchuk ha anche una versione di streaming per 2D in grado di gestire insiemi di dati ridicolmente grandi se puoi aggiungere alcuni dati extra al tuo stream. Per cosa stai usando questo?
Victor Liu,

Risposte:


13

Per il calcolo delle triangolazioni tridimensionali di Delaunay (tetraedrici, in realtà), TetGen è una libreria di uso comune.

Per comodità, ecco un piccolo punto di riferimento su quanto tempo ci vuole per calcolare la tereedralizzazione di un numero di punti casuali dal cubo unità. Per 100.000 punti ci vogliono 4,5 secondi su un vecchio Pentium M.

Grafica Mathematica

(Ciò è stato fatto con l'interfaccia TetGen di Mathematica. Non so quanto sovraccarico introduca.)

Per quanto riguarda l'altra tua domanda: se hai già la tassellatura Voronoi, ottenere la triangolazione Delaunay è una trasformazione relativamente semplice .


10

gStar4D è un algoritmo 3D Delaunay veloce e robusto per la GPU. È implementato utilizzando CUDA e funziona su GPU NVIDIA.

Simile a GPU-DT , questo algoritmo costruisce per primo il diagramma Voronoi digitale 3D. Tuttavia, in 3D questo non può essere dualizzato in una triangolazione a causa di problemi topologici e geometrici. Invece, gStar4D utilizza le informazioni sul vicinato da questo diagramma per creare stelle sollevate a 4D ed eseguire lo splay di stelle su di esse in modo efficiente sulla GPU. Estraendo da questo lo scafo inferiore, si ottiene la triangolazione 3D Delaunay.

La più veloce implementazione 3D Delaunay è gDel3D , che è un algoritmo ibrido GPU-CPU.

Esegue l'inserimento e il lancio in parallelo sulla GPU. Il risultato è vicino a Delaunay. Quindi corregge questo risultato usando un metodo di splaying a stella conservativo sulla CPU.

Entrambi questi metodi sono robusti, quindi possono gestire qualsiasi tipo di input degenerato. Possono gestire milioni di punti, se si dispone di memoria GPU abbastanza grande da contenere le strutture di dati intermedi.

Divulgazione: sono l'autore di questi algoritmi e implementazioni :)


Benvenuti in SciComp.Se, Ashwin! Nell'interesse di una completa divulgazione, è necessario aggiungere di essere l'autore di questo software (consultare meta.scicomp.stackexchange.com/a/342/1804 ).
Christian Clason,

3

Consiglierei di provare CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 , come Paul ha suggerito sopra. CGAL è una libreria solida e ben supportata che esiste da un po 'di tempo. L'ho usato felicemente in passato, anche su set di punti con punti co-lineari e co-planari. Non so se oggi sia il più veloce, ma è sicuramente un buon punto di partenza.

Il link sopra include anche alcuni numeri di prestazione: può fare un milione di punti in circa 10 secondi e 10 milioni in circa 1,5 minuti.


Inoltre, potresti approfondire il motivo per cui lo raccomandi? Ne hai esperienza?
Godric Seer,

1

Se hai già il diagramma voronoi di un insieme di punti, calcolare la triangolazione di Delaunay ti porterà solo O (n). Equivalentemente, dato un punto voronoi, puoi ottenere il suo triangolo Delaunay in O (1). Sono doppi, quindi prova a sfruttare questa situazione ogni volta che è possibile.


1

Puoi provare il software di geogramma che sto sviluppando: http://alice.loria.fr/software/geogram/doc/html/index.html

Ha un algoritmo parallelo che calcola il DT di 14 milioni di vertici in meno di 19 secondi su un Intel Core I7 (per 1 milione di vertici ci vogliono circa 0,8 s)


Benvenuti su SciComp.SE! Nell'interesse della piena divulgazione (e per dimostrare che sai di cosa stai parlando), dovresti menzionare che sei lo sviluppatore di questo software.
Christian Clason,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.