Bibliotecas de triangulação mais rápidas do Delaunay para conjuntos de pontos 3D

26

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?

Abra o caminho
fonte
Você já experimentou as implementações nos softwares CGAL e TRIANGLE? Ambos incluem algoritmos , que são (teoricamente) os mais rápidos disponíveis (embora não em paralelo). O(nlog(n))
Paul
Jonathan Shewchuk também possui uma versão de streaming para 2D que pode lidar com conjuntos de dados ridiculamente grandes se você puder adicionar alguns dados extras ao seu fluxo. Para que você está usando isso?
Victor Liu

Respostas:

13

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.

Gráficos do Mathematica

(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 .

Szabolcs
fonte
10

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 :)

Ashwin Nanjappa
fonte
Bem-vindo ao SciComp.Se, Ashwin! No interesse da divulgação completa, você deve adicionar o autor deste software (consulte meta.scicomp.stackexchange.com/a/342/1804 ).
Christian Clason
3

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.

extravagantemente
fonte
Além disso, você poderia expandir por que o recomenda? Você tem experiência com isso?
Godric Seer
1

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.

labotsirc
fonte
1

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)

BrunoLevy
fonte
Bem-vindo ao SciComp.SE! No interesse da divulgação completa (e para mostrar que você sabe do que está falando), você deve mencionar que é o desenvolvedor deste software.
Christian Clason