¿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?
computational-geometry
delaunay-triangulation
voronoi-diagrams
Abre el camino
fuente
fuente
Respuestas:
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.
(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 .
fuente
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 :)
fuente
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.
fuente
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.
fuente
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)
fuente