Welches ist die schnellste Bibliothek für die Delaunay-Triangulation von Mengen mit Millionen von 3D-Punkten? Gibt es auch GPU-Versionen? Auf der anderen Seite würde es (in Bezug auf die Leistung) helfen, die Delaunay-Triangulation zu erhalten, wenn man die Voronoi-Tessellation derselben Punktemenge hat?
computational-geometry
delaunay-triangulation
voronoi-diagrams
Öffne den Weg
quelle
quelle
Antworten:
Für die Berechnung dreidimensionaler Delaunay-Triangulationen (Tetraeder) ist TetGen eine häufig verwendete Bibliothek.
Hier ist ein kleiner Vergleich, wie lange es dauert, die Terehedralisierung einer Reihe von zufälligen Punkten aus dem Einheitswürfel zu berechnen. Für 100.000 Punkte benötigt ein alter Pentium M 4,5 Sekunden.
(Dies geschah mit der TetGen-Oberfläche von Mathematica. Ich weiß nicht, wie viel Overhead damit verbunden ist.)
Zu Ihrer anderen Frage: Wenn Sie bereits die Voronoi-Tessellation haben, ist das Erhalten der Delaunay-Triangulation eine relativ einfache Transformation .
quelle
gStar4D ist ein schneller und robuster 3D-Delaunay-Algorithmus für die GPU. Es wird mit CUDA implementiert und funktioniert auf NVIDIA-GPUs.
Ähnlich wie GPU-DT erstellt dieser Algorithmus zuerst das digitale 3D-Voronoi-Diagramm. In 3D kann dies jedoch aufgrund topologischer und geometrischer Probleme nicht zu einer Triangulation verdoppelt werden. Stattdessen verwendet gStar4D die Nachbarschaftsinformationen aus diesem Diagramm, um Sterne zu erstellen, die auf 4D angehoben wurden, und führt auf der GPU eine effiziente Sternspaltung durch. Durch Extrahieren der unteren Hülle daraus wird die 3D-Delaunay-Triangulation erhalten.
Die schnellste 3D-Delaunay-Implementierung ist gDel3D , ein hybrider GPU-CPU-Algorithmus.
Die GPU wird parallel eingefügt und umgedreht. Das Ergebnis liegt in der Nähe von Delaunay. Dieses Ergebnis wird dann mithilfe einer konservativen Sternwiedergabemethode auf der CPU korrigiert.
Beide Methoden sind robust und können daher mit jeder Art von entarteter Eingabe umgehen. Sie können Millionen von Punkten verarbeiten, wenn der GPU-Speicher groß genug ist, um die dazwischen liegenden Datenstrukturen aufzunehmen.
Offenlegung: Ich bin der Autor dieser Algorithmen und Implementierungen :)
quelle
Ich würde CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 empfehlen , wie Paul oben vorgeschlagen hat. CGAL ist eine robuste und gut unterstützte Bibliothek, die es schon seit einiger Zeit gibt. Ich habe es in der Vergangenheit gerne verwendet, auch bei Punktmengen mit co-linearen und co-planaren Punkten. Ich weiß nicht, ob es heute die schnellste ist, aber es ist auf jeden Fall ein guter Anfang.
Der obige Link enthält auch einige Leistungszahlen: Er kann eine Million Punkte in etwa 10 Sekunden und 10 Millionen in etwa 1,5 Minuten erzielen.
quelle
Wenn Sie bereits das Voronoi-Diagramm für eine Reihe von Punkten haben, erhalten Sie für die Berechnung der Delaunay-Triangulation nur O (n). Genauso kann man mit einem Voronoi-Punkt sein Delaunay-Dreieck in O (1) erhalten. Sie sind dual, also versuchen Sie, diese Situation auszunutzen, wann immer dies möglich ist.
quelle
Sie können die von mir entwickelte Geogrammsoftware ausprobieren: http://alice.loria.fr/software/geogram/doc/html/index.html
Es verfügt über einen parallelen Algorithmus, der die DT von 14 Millionen Scheitelpunkten in weniger als 19 Sekunden auf einem Intel Core I7 berechnet (für 1 Million Scheitelpunkte werden ungefähr 0,8 Sekunden benötigt).
quelle