Las bibliotecas de triangulación de Delaunay más rápidas para conjuntos de puntos 3D

26

¿Cuál es la biblioteca más rápida para realizar la triangulación delaunay de conjuntos con millones si tiene puntos 3D? ¿También hay versiones de GPU disponibles? Desde el otro lado, tener la teselación de voronoi del mismo conjunto de puntos, ¿ayudaría (en términos de rendimiento) a obtener la triangulación de delaunay?

Abre el camino
fuente
¿Has probado las implementaciones en los softwares CGAL y TRIANGLE? Ambos incluyen algoritmos , que son (teóricamente) los más rápidos disponibles (aunque no en paralelo). O(nortelosol(norte))
Paul
Jonathan Shewchuk también tiene una versión de transmisión en 2D que puede manejar conjuntos de datos ridículamente grandes si puede agregar algunos datos adicionales a su transmisión. ¿Para qué estás usando esto?
Victor Liu

Respuestas:

13

Para calcular triangulaciones de Delaunay tridimensionales (tetraédricas, en realidad), TetGen es una biblioteca de uso común.

Para su conveniencia, aquí hay un pequeño punto de referencia sobre cuánto tiempo lleva calcular la tereredización de varios puntos aleatorios del cubo de la unidad. Por 100,000 puntos, toma 4.5 segundos en un viejo Pentium M.

Gráficos de Mathematica

(Esto se hizo con la interfaz TetGen de Mathematica. No sé cuánto sobrecarga introduce).

Con respecto a su otra pregunta: si ya tiene la teselación de Voronoi, entonces obtener la triangulación de Delaunay es una transformación relativamente simple .

Szabolcs
fuente
10

gStar4D es un algoritmo 3D Delaunay rápido y robusto para la GPU. Se implementa utilizando CUDA y funciona en GPU NVIDIA.

Similar a GPU-DT , este algoritmo construye primero el diagrama Voronoi digital 3D. Sin embargo, en 3D esto no puede ser dualizado a una triangulación debido a problemas topológicos y geométricos. En cambio, gStar4D usa la información del vecindario de este diagrama para crear estrellas elevadas a 4D y realiza la reproducción de estrellas sobre ellas de manera eficiente en la GPU. Al extraer el casco inferior de esto, se obtiene la triangulación 3D de Delaunay.

La implementación más rápida de 3D Delaunay es gDel3D , que es un algoritmo híbrido GPU-CPU.

Realiza una inserción paralela y voltea la GPU. El resultado está cerca de Delaunay. Luego corrige este resultado utilizando un método conservador de estrella en la CPU.

Ambos métodos son robustos, por lo que pueden manejar cualquier tipo de entrada degenerada. Pueden manejar millones de puntos, si tiene una memoria GPU lo suficientemente grande como para contener las estructuras de datos intermedias.

Divulgación: soy el autor de estos algoritmos e implementaciones :)

Ashwin Nanjappa
fuente
¡Bienvenido a SciComp.Se, Ashwin! En aras de la divulgación completa, debe agregar que usted es el autor de este software (consulte meta.scicomp.stackexchange.com/a/342/1804 ).
Christian Clason
3

Recomendaría probar CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 , como Paul sugirió anteriormente. CGAL es una biblioteca robusta y bien soportada que ha existido desde hace bastante tiempo. Lo he usado felizmente en el pasado, incluso en conjuntos de puntos con puntos co-lineales y co-planos. No sé si es el más rápido hoy, pero sin duda es un buen lugar para comenzar.

El enlace anterior también incluye algunos números de rendimiento: puede hacer un millón de puntos en aproximadamente 10 segundos y 10 millones en aproximadamente 1.5 minutos.

chalado
fuente
Además, ¿podría explicar por qué lo recomienda? ¿Tienes experiencia con eso?
Godric Seer
1

Si ya tiene el diagrama voronoi de un conjunto de puntos, entonces calcular la triangulación de Delaunay solo lo llevará a O (n). De manera equivalente, dado un punto voronoi, puede obtener su triángulo de Delaunay en O (1). Son duales, así que intenta explotar esta situación siempre que sea posible.

labotsirc
fuente
1

Puede probar el software de geograma que estoy desarrollando: http://alice.loria.fr/software/geogram/doc/html/index.html

Tiene un algoritmo paralelo que calcula el DT de 14 millones de vértices en menos de 19 segundos en un Intel Core I7 (para 1 millón de vértices tarda alrededor de 0,8 s)

BrunoLevy
fuente
Bienvenido a SciComp.SE! En aras de la divulgación completa (y para demostrar que sabe de lo que está hablando), debe mencionar que usted es el desarrollador de este software.
Christian Clason