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?
computational-geometry
delaunay-triangulation
voronoi-diagrams
Ouvrez la voie
la source
la source
Réponses:
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.
(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 .
la source
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 :)
la source
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.
la source
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.
la source
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)
la source