2011-09-05 36 views
33

Tôi đang tìm một triển khai .NET để xây dựng Triangulation Delaunay từ tập hợp các điểm.Triangulation Delaunay hiệu quả

Tôi đã thử nghiệm một vài triển khai nhưng tất cả đều chỉ hoạt động với một số lượng nhỏ điểm (tối đa 20.000).

Tôi cần một thứ có thể xử lý 500.000 điểm trong thời gian hợp lý.

+0

thật lạ là nó chỉ có thể xử lý 20.000 điểm; nó chỉ có thời gian chạy O (n * log (n)) – Simone

+7

Bạn đã thử triển khai C# tại http://www.s-hull.org/? Thuật toán nó sử dụng được cho là nhanh. – CodesInChaos

+0

Tôi đã sử dụng địa chỉ s-hull.org. Hiệu suất giảm đáng kể khi bạn nhận được đến 100.000 điểm hoặc cao hơn, do số lượng các cuộc truy tìm đang diễn ra trong mã. Không chắc chắn làm thế nào để đánh bại nó. Tôi nghe nói có một bản ngã khác ở đó làm giảm sự đệ quy của mã, không chắc nó được gọi là gì (có thể là De Wall hay gì đó). – code4life

Trả lời

1

Các bạn đã thử NetTopologySuite

+0

Đây là trình bao bọc cho JTS - dường như không hỗ trợ 3D - http://tsusiatsoftware.net/jts/jts-faq/jts-faq.html – JumpingJezza

11

tôi đang tìm kiếm điều tương tự và tôi tìm thấy một thư viện C# 4.0 được gọi là MIConvexHull:

"Thuật toán thân và lồi cho các kích thước 2D, 3D và cao hơn. Mã này cũng có thể được sử dụng để tính toán các tam giác Delaunay và các mắt Voronoi của dữ liệu đầu vào. 4 và chiều cao mã tam giác là ngang bằng hoặc tốt hơn so với giải pháp được cung cấp bởi thư viện C++ CGAL. ​​"

http://miconvexhull.codeplex.com/

Cập nhật Sep/2016:

thư viện này đã chuyển sang Github và có vẻ như nó bây giờ được phát hành theo giấy phép MIT (một số trong những ví dụ là GPL). Bạn có thể tìm thấy phiên bản mới nhất tại đây:

https://github.com/DesignEngrLab/MIConvexHull

Các tài liệu thực sự là trong mã nguồn và nó là đơn giản để sử dụng. Dưới đây là file nguồn có liên quan cho Delaunay triangulation:

https://github.com/DesignEngrLab/MIConvexHull/blob/master/MIConvexHull/Triangulation.cs

Nếu bạn muốn xem phiên bản gốc từ năm 2012. Hãy xem ở đây:

http://miconvexhull.codeplex.com/SourceControl/changeset/view/e1b26677eb1a#MIConvexHull/Triangulation/Triangulation.cs

+0

Vẫn thực hiện thủ thuật. Nó thiết lập sơ đồ điểm 500K chỉ trong vài giây. – OzrenTkalcecKrznaric

+0

Không có tài nguyên đã tải xuống, không có tài liệu. Tải trang tự hào nói rằng bạn không thể downlod nó, và thay vào đó bạn được yêu cầu để giải thích các định dạng dự án độc quyền, đoán theo cách của bạn cho đến khi bạn tìm thấy một số ví dụ nguồn, và đảo ngược kỹ sư hướng dẫn. Và đó là GPLv3, quy tắc sử dụng rất nhiều. Không phải là một thư viện tuyệt vời! – Adam

+0

Nếu bạn nhìn vào repo Github, bạn sẽ thấy rằng mã nguồn được ghi lại và nó được cấp phép theo MIT. – Pablo

1

Có một giải pháp gọi là G# .

Đô thị này có các hình tam giác Delaunay (cũng với đường viền). Từ biểu đồ hiệu suất trên trang web của họ, bạn sẽ có thể triangulate 500k điểm trong khoảng 30s.

+0

khung không tốt và không miễn phí –

15

Nếu bạn muốn xây dựng tam giác 2D Delaunay, hãy sử dụng Triangle.Net. Nó là một cổng C# trực tiếp của chương trình Triangle nổi tiếng của Shewchuk.

+0

bạn thật tuyệt vời :). Tôi đã tìm kiếm chính xác tương tự: D – Flamy

+2

Dường như Triangle.Net được cấp phép theo giấy phép MIT, nhưng dường như đó là một cổng thẳng của Tam giác đến C#, và Triangle không được cấp phép theo MIT. Tôi nghi ngờ đó là tính hợp pháp. –

+0

Tôi đã kết thúc bằng cách sử dụng Triangle.NET bản thân mình. Sử dụng nó cho Unity 5, chỉ phải sửa hai thứ nhỏ để có được .Net 4.5 để làm việc với sự thống nhất. –