Delangunay triangulation library ที่เร็วที่สุดสำหรับชุดคะแนน 3D


26

ไลบรารีใดที่เร็วที่สุดสำหรับการแสดงชุดสามเหลี่ยมโดยใช้เดลยูเนย์เป็นล้านหากคะแนน 3D มีรุ่น GPU ด้วยหรือไม่ จากอีกด้านหนึ่งการมี voronoi tessellation ของชุดคะแนนเดียวกันจะช่วย (ในแง่ของประสิทธิภาพ) สำหรับการรับ delaunay triangulation หรือไม่?


คุณลองใช้งานโปรแกรม CGAL และ TRIANGLE แล้วหรือยัง? ทั้งสองรวมถึงอัลกอริทึมซึ่งเป็น (ในทางทฤษฎี) ที่เร็วที่สุดที่มีอยู่ (แม้ว่าจะไม่ขนาน) O(nlog(n))
พอล

Jonathan Shewchuk ยังมีเวอร์ชั่นสตรีมมิ่งสำหรับ 2D ที่สามารถจัดการชุดข้อมูลขนาดใหญ่ที่น่าขันได้หากคุณสามารถเพิ่มข้อมูลพิเศษลงในสตรีมของคุณได้ คุณใช้สิ่งนี้เพื่ออะไร
Victor Liu

คำตอบ:


13

สำหรับการคำนวณแบบสามเหลี่ยมสามมิติ Delaunay (tetrahedralizations จริง ๆ ) TetGenเป็นห้องสมุดที่ใช้กันทั่วไป

เพื่อความสะดวกของคุณนี่คือเกณฑ์มาตรฐานเล็กน้อยเกี่ยวกับระยะเวลาที่ใช้ในการคำนวณคะแนนการสุ่มคะแนนจากคิวบ์หน่วย สำหรับ 100,000 คะแนนจะใช้เวลา 4.5 วินาทีใน Pentium M เก่า

กราฟิกทางคณิตศาสตร์

(สิ่งนี้ทำกับส่วนต่อประสาน TetGen ของ Mathematica ฉันไม่ทราบว่าค่าใช้จ่ายดังกล่าวสูงแค่ไหน)

เกี่ยวกับคำถามอื่น ๆ ของคุณ: ถ้าคุณมี tessellation Voronoi แล้วได้รับสมเนย์คือการเปลี่ยนแปลงที่ค่อนข้างง่าย


10

gStar4Dเป็นอัลกอริทึม 3D Delaunay ที่รวดเร็วและมีประสิทธิภาพสำหรับ GPU มันถูกนำมาใช้โดยใช้ CUDA และทำงานบน NVIDIA GPUs

คล้ายกับGPU-DTอัลกอริทึมนี้สร้างไดอะแกรม Voronoi ดิจิทัล 3D เป็นอันดับแรก อย่างไรก็ตามใน 3D สิ่งนี้ไม่สามารถทำให้เป็นสามเหลี่ยมได้เนื่องจากการทอพอโลยีและปัญหาเชิงเรขาคณิต ในทางกลับกัน gStar4D ใช้ข้อมูลย่านใกล้เคียงจากแผนภาพนี้เพื่อสร้างดาวยกระดับเป็น 4D และทำการดาวกระจายบน GPU อย่างมีประสิทธิภาพ โดยการแยกฮัลล์ด้านล่างออกจากนี้จะได้การหาสมการ 3D Delaunay

การติดตั้ง 3D Delaunay ที่เร็วที่สุดคือgDel3Dซึ่งเป็นอัลกอริธึม GPU-CPU ไฮบริด

มันทำการแทรกแบบขนานและพลิกบน GPU ผลลัพธ์ใกล้กับ Delaunay จากนั้นแก้ไขผลลัพธ์นี้โดยใช้วิธีการกระจายดาวฤกษ์บนซีพียู

วิธีการทั้งสองนี้มีประสิทธิภาพดังนั้นจึงสามารถจัดการอินพุตที่เสื่อมสภาพได้ทุกชนิด พวกเขาสามารถจัดการกับจุดนับล้านถ้าคุณมีหน่วยความจำ GPU ที่ใหญ่พอที่จะเก็บโครงสร้างข้อมูลกลาง

การเปิดเผยข้อมูล: ฉันเป็นผู้เขียนอัลกอริทึมและการใช้งานเหล่านี้ :)


ยินดีต้อนรับสู่ SciComp.Se, Ashwin! เพื่อประโยชน์ในการเปิดเผยแบบเต็มคุณควรเพิ่มว่าคุณเป็นผู้เขียนซอฟต์แวร์นี้ (ดูmeta.scicomp.stackexchange.com/a/342/1804 )
Christian Clason

3

ฉันจะแนะนำให้ลองใช้ CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 ตามที่ Paul แนะนำไว้ข้างต้น CGAL เป็นห้องสมุดที่แข็งแกร่งและได้รับการสนับสนุนที่ดีมาโดยตลอด ฉันเคยใช้มันอย่างมีความสุขในอดีตแม้ในจุดที่มีจุดร่วมเชิงเส้นและร่วมภาพถ่ายระนาบ ฉันไม่รู้ว่ามันเร็วที่สุดในวันนี้หรือไม่ แต่เป็นจุดเริ่มต้นที่ดีแน่นอน

ลิงค์ด้านบนยังมีหมายเลขประสิทธิภาพบางส่วน: สามารถทำคะแนนได้หนึ่งล้านคะแนนในเวลาประมาณ 10 วินาทีและ 10 ล้านในเวลาประมาณ 1.5 นาที


นอกจากนี้คุณสามารถขยายเหตุผลที่คุณแนะนำได้หรือไม่ คุณมีประสบการณ์กับมันหรือไม่?
Godric Seer

1

หากคุณมีไดอะแกรม voronoi ของชุดของคะแนนแล้วการคำนวณสมการ Delaunay จะนำคุณ O (n) เท่านั้น เท่ากันเมื่อกำหนดจุด voronoi คุณสามารถรับสามเหลี่ยม Delaunay ใน O (1) พวกเขาเป็นคู่ดังนั้นลองใช้ประโยชน์จากสถานการณ์นี้เมื่อใดก็ตามที่เป็นไปได้


1

คุณสามารถลองใช้ซอฟต์แวร์ geogram ที่ฉันพัฒนาได้: http://alice.loria.fr/software/geogram/doc/html/index.html

มีอัลกอริทึมแบบขนานที่คำนวณ DT ของ 14 ล้านยอดในเวลาน้อยกว่า 19 วินาทีใน Intel Core I7 (สำหรับยอด 1 ล้านจุดใช้เวลาประมาณ 0.8 วินาที)


ยินดีต้อนรับสู่ SciComp.SE! เพื่อประโยชน์ในการเปิดเผยอย่างเต็มรูปแบบ (และเพื่อแสดงว่าคุณรู้ว่าคุณกำลังพูดถึงเรื่องอะไร) คุณควรระบุว่าคุณเป็นผู้พัฒนาซอฟต์แวร์นี้
Christian Clason
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.