Qual é a biblioteca mais rápida para realizar a triangulação de conjuntos com milhões se pontos 3D? Existem também versões de GPU disponíveis? Por outro lado, ter o mosaico voronoi do mesmo conjunto de pontos ajudaria (em termos de desempenho) a obter a triangulação delaunay?
computational-geometry
delaunay-triangulation
voronoi-diagrams
Abra o caminho
fonte
fonte
Respostas:
Para calcular triangulações tridimensionais de Delaunay (na verdade, tetraédricas), o TetGen é uma biblioteca comumente usada.
Para sua conveniência, aqui está uma pequena referência sobre quanto tempo leva para calcular a tereedreciação de vários pontos aleatórios do cubo unitário. Para 100.000 pontos, são necessários 4,5 segundos em um antigo Pentium M.
(Isso foi feito com a interface TetGen do Mathematica. Não sei quanta sobrecarga ela introduz.)
Em relação à sua outra pergunta: se você já possui o mosaico de Voronoi, obter a triangulação de Delaunay é uma transformação relativamente simples .
fonte
O gStar4D é um algoritmo 3D Delaunay rápido e robusto para a GPU. É implementado usando CUDA e funciona em GPUs NVIDIA.
Semelhante ao GPU-DT , esse algoritmo constrói o diagrama digital 3D de Voronoi primeiro. No entanto, em 3D, isso não pode ser dualizado com uma triangulação devido a problemas topológicos e geométricos. Em vez disso, o gStar4D usa as informações de vizinhança deste diagrama para criar estrelas elevadas para 4D e executa a exibição de estrelas com eficiência na GPU. Ao extrair o casco inferior, é obtida a triangulação 3D Delaunay.
A implementação mais rápida do Delaunay 3D é o gDel3D , que é um algoritmo híbrido de GPU-CPU.
Ele executa inserção paralela e inversão na GPU. O resultado está próximo de Delaunay. Em seguida, ele corrige esse resultado usando um método conservador de exibição em estrela na CPU.
Ambos os métodos são robustos, para que possam lidar com qualquer tipo de entrada degenerada. Eles podem lidar com milhões de pontos, se você tiver memória GPU grande o suficiente para armazenar as estruturas de dados intermediárias.
Divulgação: Eu sou o autor desses algoritmos e implementações :)
fonte
Eu recomendaria tentar o CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 , como sugeriu Paul acima. CGAL é uma biblioteca robusta e bem suportada que já existe há algum tempo. Eu o usei feliz no passado, mesmo em conjuntos de pontos com pontos co-lineares e co-planares. Não sei se é o mais rápido hoje, mas é certamente um bom lugar para começar.
O link acima também inclui alguns números de desempenho: ele pode fazer um milhão de pontos em cerca de 10 segundos e 10 milhões em cerca de 1,5 minutos.
fonte
Se você já possui o diagrama voronoi de um conjunto de pontos, o cálculo da triangulação de Delaunay levará apenas O (n). Equivalentemente, dado um ponto voronoi, você pode obter seu triângulo Delaunay em O (1). Eles são duplos, então tente explorar essa situação sempre que possível.
fonte
Você pode experimentar o software de geograma que estou desenvolvendo: http://alice.loria.fr/software/geogram/doc/html/index.html
Ele possui um algoritmo paralelo que calcula o DT de 14 milhões de vértices em menos de 19 segundos em um Intel Core I7 (para 1 milhão de vértices são necessários cerca de 0,8 s)
fonte