Bibliothèques de triangulation Delaunay les plus rapides pour les ensembles de points 3D

26

Quelle est la bibliothèque la plus rapide pour effectuer une triangulation delaunay d'ensembles avec des millions de points 3D? Existe-t-il également des versions GPU? De l'autre côté, avoir la tessellation voronoi du même ensemble de points, aiderait (en termes de performances) à obtenir la triangulation delaunay?

Ouvrez la voie
la source
Avez-vous essayé les implémentations des logiciels CGAL et TRIANGLE? Les deux comprennent des algorithmes , qui sont (théoriquement) les plus rapides disponibles (mais pas en parallèle). O(nlog(n))
Paul
Jonathan Shewchuk a également une version de streaming pour 2D qui peut gérer des ensembles de données ridiculement grands si vous pouvez ajouter des données supplémentaires à votre flux. Pourquoi utilisez-vous cela?
Victor Liu

Réponses:

13

Pour calculer les triangulations de Delaunay tridimensionnelles (tétraédriques, vraiment), TetGen est une bibliothèque couramment utilisée.

Pour votre commodité, voici un petit point de référence sur le temps qu'il faut pour calculer la térérédralisation d'un certain nombre de points aléatoires à partir du cube unitaire. Pour 100 000 points, il faut 4,5 secondes sur un vieux Pentium M.

Graphiques Mathematica

(Cela a été fait avec l'interface TetGen de Mathematica. Je ne sais pas combien de frais généraux cela introduit.)

Concernant votre autre question: si vous avez déjà la tessellation Voronoi, alors obtenir la triangulation de Delaunay est une transformation relativement simple .

Szabolcs
la source
10

gStar4D est un algorithme Delaunay 3D rapide et robuste pour le GPU. Il est implémenté à l'aide de CUDA et fonctionne sur les GPU NVIDIA.

Semblable à GPU-DT , cet algorithme construit d'abord le diagramme de Voronoi numérique 3D. Cependant, en 3D, cela ne peut pas être dualisé à une triangulation en raison de problèmes topologiques et géométriques. Au lieu de cela, gStar4D utilise les informations de voisinage de ce diagramme pour créer des étoiles élevées à 4D et effectue efficacement leur affichage sur le GPU. En extrayant la coque inférieure de celle-ci, la triangulation 3D Delaunay est obtenue.

L'implémentation 3D Delaunay la plus rapide est gDel3D , qui est un algorithme hybride GPU-CPU.

Il effectue l'insertion et le retournement parallèles sur le GPU. Le résultat est proche de Delaunay. Il corrige ensuite ce résultat en utilisant une méthode d'écrasement d'étoiles conservatrice sur le processeur.

Ces deux méthodes sont robustes, elles peuvent donc gérer tout type d'entrée dégénérée. Ils peuvent gérer des millions de points, si vous avez une mémoire GPU suffisamment grande pour contenir les structures de données intermédiaires.

Divulgation: je suis l'auteur de ces algorithmes et implémentations :)

Ashwin Nanjappa
la source
Bienvenue à SciComp.Se, Ashwin! Dans l'intérêt d'une divulgation complète, vous devez ajouter que vous êtes l'auteur de ce logiciel (voir meta.scicomp.stackexchange.com/a/342/1804 ).
Christian Clason
3

Je recommanderais d'essayer CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 , comme Paul l'a suggéré ci-dessus. CGAL est une bibliothèque robuste et bien prise en charge qui existe depuis un certain temps. Je l'ai utilisé avec plaisir dans le passé, même sur des ensembles de points avec des points colinéaires et coplanaires. Je ne sais pas si c'est le plus rapide aujourd'hui, mais c'est certainement un bon point de départ.

Le lien ci-dessus inclut également quelques chiffres de performances: il peut faire un million de points en 10 secondes environ et 10 millions en 1,5 minute environ.

batty
la source
Pouvez-vous également expliquer pourquoi vous le recommandez? En avez-vous l'expérience?
Godric Seer
1

Si vous avez déjà le diagramme de voronoi d'un ensemble de points, alors le calcul de la triangulation de Delaunay ne vous prendra que O (n). De manière équivalente, étant donné un point de voronoï, vous pouvez obtenir son triangle de Delaunay en O (1). Ils sont doubles, alors essayez d'exploiter cette situation chaque fois que cela est possible.

labotsirc
la source
1

Vous pouvez essayer le logiciel de géogramme que je développe: http://alice.loria.fr/software/geogram/doc/html/index.html

Il dispose d'un algorithme parallèle qui calcule le DT de 14 millions de sommets en moins de 19 secondes sur un Intel Core I7 (pour 1 million de sommets, il faut environ 0,8 s)

BrunoLevy
la source
Bienvenue sur SciComp.SE! Dans l'intérêt d'une divulgation complète (et pour montrer que vous savez de quoi vous parlez), vous devez mentionner que vous êtes le développeur de ce logiciel.
Christian Clason