3D 포인트 세트를위한 가장 빠른 들로네 삼각 분할 라이브러리


26

3D 포인트 인 경우 수백만 세트로 들로네 삼각 분할을 수행하기위한 가장 빠른 라이브러리는 무엇입니까? GPU 버전도 있습니까? 다른 쪽에서 같은 점 집합의 보로 노이 테셀레이션을 사용하면 들로네 삼각 분할 (Delaunay Triangulation)을 얻는 데 도움이 될까요?


CGAL 및 TRIANGLE 소프트웨어에서 구현을 시도 했습니까? 두 가지 모두 알고리즘을 포함하며,이 알고리즘은 (이론적으로는) 가장 빠른 (병렬은 아니지만) 가장 빠른 알고리즘입니다. 영형(영형())
Paul

Jonathan Shewchuk에는 스트림에 추가 데이터를 추가 할 수있는 경우 엄청나게 큰 데이터 세트를 처리 할 수있는 2D 용 스트리밍 버전도 있습니다. 이것을 위해 무엇을 사용하고 있습니까?
Victor Liu

답변:


13

3 차원 들로네 삼각 분할 (사면 체화 )을 계산하기 위해 TetGen 은 일반적으로 사용되는 라이브러리입니다.

편의를 위해 다음은 단위 큐브에서 다수의 임의 포인트의 테레 데 랄화를 계산하는 데 걸리는 시간에 대한 약간의 벤치 마크입니다. 오래된 Pentium M에서는 100,000 포인트가 4.5 초 걸립니다.

Mathematica 그래픽

(이것은 Mathematica의 TetGen 인터페이스로 수행되었습니다. 얼마나 많은 오버 헤드가 도입되는지는 알 수 없습니다.)

다른 질문과 관련하여 : 이미 보로 노이 테셀레이션이있는 경우 들로네 삼각 분할을 얻는 것은 비교적 간단한 변환 입니다.


10

gStar4D 는 GPU를위한 빠르고 강력한 3D 들로네 알고리즘입니다. CUDA를 사용하여 구현되며 NVIDIA GPU에서 작동합니다.

GPU-DT 와 유사 하게이 알고리즘은 3D 디지털 보로 노이 다이어그램을 먼저 구성합니다. 그러나 3D에서는 위상 및 기하학적 문제로 인해 삼각 측량으로 이중화 할 수 없습니다. 대신, gStar4D는이 다이어그램의 주변 정보를 사용하여 4D로 들어 올린 별을 생성하고 GPU에서 효율적으로 별을 재생합니다. 이것으로부터 하부 선체를 추출함으로써, 3D 들로네 삼각 분할이 얻어진다.

가장 빠른 3D Delaunay 구현은 하이브리드 GPU-CPU 알고리즘 인 gDel3D 입니다.

GPU에서 병렬 삽입 및 뒤집기를 수행합니다. 결과는 Delaunay에 가깝습니다. 그런 다음 CPU에서 보수적 인 스타 재생 방법을 사용하여이 결과를 수정합니다.

이 두 가지 방법 모두 견고하므로 모든 종류의 축퇴 입력을 처리 할 수 ​​있습니다. 중간 데이터 구조를 보유하기에 충분한 GPU 메모리가 있으면 수백만 포인트를 처리 할 수 ​​있습니다.

공개 : 나는이 알고리즘과 구현의 저자입니다 :)


Ashci에 SciComp.Se에 오신 것을 환영합니다! 전체 공개를 위해 귀하가이 소프트웨어의 저자임을 추가해야합니다 ( meta.scicomp.stackexchange.com/a/342/1804 참조 ).
Christian Clason

3

Paul이 위에서 제안한 것처럼 CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2를 사용해 보는 것이 좋습니다 . CGAL은 꽤 오래 전부터 강력하고 잘 지원되는 라이브러리입니다. 과거에는 동일 선상 및 동일 평면 점이있는 점 세트에서도 행복하게 사용했습니다. 오늘 가장 빠른지 모르겠지만 시작하기에 좋은 곳입니다.

위의 링크에는 몇 가지 성능 수치가 포함되어 있습니다. 약 10 초 동안 백만 포인트를 수행 할 수 있으며 약 1.5 분 동안 1000 만 포인트를 수행 할 수 있습니다.


또한 추천 이유를 확장 할 수 있습니까? 경험이 있습니까?
Godric Seer

1

이미 점 집합의 보로 노이 다이어그램을 가지고 있다면 들로네 삼각 분할 (Delaunay Triangulation)을 계산하면 O (n) 만 걸립니다. 마찬가지로, voronoi 포인트가 주어지면 O (1)에서 들로네 삼각형을 얻을 수 있습니다. 그것들은 이중이므로 가능할 때 마다이 상황을 악용하십시오.


1

내가 개발하고있는 지오 그램 소프트웨어를 사용해 볼 수 있습니다 : http://alice.loria.fr/software/geogram/doc/html/index.html

인텔 코어 I7에서 19 초 이내에 1,400 만 버텍스의 DT를 계산하는 병렬 알고리즘이 있습니다 (1 백만 버텍스의 경우 약 0.8 초 소요)


SciComp.SE에 오신 것을 환영합니다! 완전한 공개를 위해 (그리고 당신이 말하는 것을 알고 있음을 나타 내기 위해),이 소프트웨어의 개발자라는 것을 언급해야합니다.
Christian Clason
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.