3B nokta setleri için en hızlı Delaunay nirengi kütüphaneleri


26

3B puanları varsa, setlerin milyonlarca ile üçgenleştirilmesinin gerçekleştirilmesinde en hızlı kütüphane hangisidir? GPU sürümleri de var mı? Diğer taraftan, aynı nokta kümesinin voronoi mozaiklemesine sahip olmak, gecikmeli üçgenlemeyi almak için (performans açısından) yardımcı olur mu?


CGAL ve TRIANGLE yazılımlarındaki uygulamaları denediniz mi? Her ikisi de dahil algoritmaları, ki bunlar (teorik olarak) hızlı kullanılabilir (olmasa da paralel olarak). O(nlog(n))
Paul

Jonathan Shewchuk, akışınıza fazladan veri ekleyebiliyorsanız gülünç büyük veri setlerini işleyebilen 2D için bir akış sürümüne de sahip. Bunu ne için kullanıyorsun?
Victor Liu,

Yanıtlar:


13

Üç boyutlu Delaunay üçgenlerini hesaplamak için (gerçekten de tetrahedralizasyonlar), TetGen yaygın olarak kullanılan bir kütüphanedir.

Size kolaylık sağlamak için, birim küpten birkaç rastgele noktanın terehedralizasyonunu hesaplamanın ne kadar sürdüğü hakkında bir değerlendirme. 100.000 puan için eski bir Pentium M'de 4.5 saniye sürüyor

Mathematica grafikleri

(Bu, Mathematica'nın TetGen arayüzü ile yapıldı. Ne kadar ek yük getirdiğini bilmiyorum.)

Diğer sorunuzla ilgili olarak: Zaten Voronoi mozaiklemesine sahipseniz, Delaunay üçgenlemesini almak nispeten basit bir dönüşümdür .


10

gStar4D , GPU için hızlı ve sağlam bir 3D Delaunay algoritmasıdır. CUDA kullanılarak uygulanır ve NVIDIA GPU'larda çalışır.

GPU-DT'ye benzer şekilde , bu algoritma önce 3D dijital Voronoi şemasını oluşturur. Bununla birlikte, 3B'de bu, topolojik ve geometrik problemlerden dolayı üçgenleşmeyle çiftleştirilemez. Bunun yerine, gStar4D, 4D'ye yükseltilmiş yıldızlar oluşturmak için bu diyagramdaki mahalle bilgilerini kullanır ve GPU'da verimli bir şekilde yıldızların yayılmasını sağlar. Alt gövdeyi bundan çıkartarak, 3D Delaunay üçgenlemesi elde edilir.

En hızlı 3D Delaunay uygulaması, hibrit bir GPU-CPU algoritması olan gDel3D'dir .

GPU'ya paralel ekleme ve çevirme işlemi gerçekleştirir. Sonuç Delaunay'a yakın. Ardından bu sonucu CPU'da muhafazakar bir yıldız yayma yöntemi kullanarak düzeltir.

Her iki yöntem de sağlamdır, bu nedenle her türlü yozlaşmış girişi ele alabilirler. Ara veri yapılarını tutacak kadar büyük GPU belleğiniz varsa, milyonlarca noktayla baş edebilirler.

Açıklama: Bu algoritmaların ve uygulamaların yazarıyım :)


SciComp.Se'ye Hoşgeldiniz Ashwin! Tam açıklama için bu yazılımın yazarı olduğunuzu eklemelisiniz (bkz. Meta.scicomp.stackexchange.com/a/342/1804 ).
Christian Clason

3

Paul'un önerdiği gibi CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 denenmesini tavsiye ederim . CGAL oldukça uzun zamandır devam eden sağlam ve iyi desteklenmiş bir kütüphanedir. Geçmişte mutlu bir şekilde kullandım, eş doğrusal ve eş düzlem noktalı nokta kümelerinde bile. Bugün çok hızlı olup olmadığını bilmiyorum, ama kesinlikle başlamak için iyi bir yer.

Yukarıdaki bağlantı aynı zamanda bazı performans numaralarını da içerir: yaklaşık 10 saniyede bir milyon puan, yaklaşık 1.5 dakikada 10 milyon puan yapabilir.


Ayrıca, neden tavsiye ettiğinizi genişletebilir misiniz? Bununla ilgili deneyimin var mı?
Godric Seer

1

Zaten bir nokta kümesinin voronoi şemasına sahipseniz, Delaunay üçgenlemesini hesaplamak yalnızca sizi O (n) alır. Aynı şekilde, bir voronoi noktası verilen, Delaunay üçgenini O (1) 'de elde edebilirsiniz. İkili oldukları için mümkün olduğunda bu durumu kullanmayı deneyin.


1

Geliştirdiğim coğrafi yazılımı deneyebilirsiniz: http://alice.loria.fr/software/geogram/doc/html/index.html

Intel Core I7'de 14 saniyenin tepe noktasını 19 saniyeden kısa bir sürede DT'yi hesaplayan paralel bir algoritmaya sahiptir (1 milyon tepe noktası için yaklaşık 0,8 saniye sürer)


SciComp.SE'ye Hoşgeldiniz! Tam açıklama için (ve neden bahsettiğinizi bildiğinizi göstermek için), bu yazılımın geliştiricisi olduğunuzu belirtmelisiniz.
Christian Clason
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.