2010-06-13 34 views
6

Gần đây tôi đã gặp phải một thư viện hoặc một bộ thư viện để xử lý các hoạt động trên đa giác 2D. Tôi cần để có thể thực hiện các hoạt động boolean/clipping (sự khác biệt và công đoàn) và triangulation.Thư viện cho các hoạt động đa giác

Cho đến nay các thư viện tôi đã tìm thấy là poly2tri, CGALGPC. Poly2tri có vẻ tốt cho triangulation nhưng tôi vẫn còn lại với các hoạt động boolean, và tôi không chắc chắn về sự trưởng thành của nó.

CGAL và GPC chỉ miễn phí nếu dự án của riêng tôi hoàn toàn miễn phí. Dự án cụ thể của tôi không phải là thương mại, vì vậy tôi do dự phải trả tiền hoặc yêu cầu bất kỳ giấy phép nào. Nhưng tôi có thể muốn sử dụng mã của tôi cho một dự án thương mại trong tương lai, vì vậy tôi do dự về giấy phép nguồn mở của CGAL và hạn chế chỉ có phần mềm miễn phí của GPC. Dường như không có bất kỳ thư viện cắt đa giác nào với các giấy phép kiểu BSD đẹp.

Ồ, và C/C++ được ưu tiên.

Trả lời

11

Clipper là một mã nguồn mở miễn phí đa giác thư viện cắt (viết bằng Delphi và C++)^thực hiện chính xác những gì bạn đang yêu cầu (trừ triangulation) - http://sourceforge.net/projects/polyclipping/

Trong thử nghiệm của tôi, Clipper nhanh hơn và dễ bị lỗi hơn nhiều so với GPC (xem các so sánh chi tiết hơn tại đây - http://www.angusj.com/delphi/clipper.php#features).

Thư viện đồ họa chống hạt hình học (AGG) - nó không thực hiện cắt đa giác, nhưng chỉ sử dụng GPC (không miễn phí cho các ứng dụng thương mại). Tuy nhiên, Clipper có các đơn vị AGG để thực hiện việc cắt giảm AGG dễ dàng như GPC.

^Chỉnh sửa: Clipper hiện được viết bằng C# (cùng với các mô-đun Perl, Ruby, Haskell và Flash được viết bởi bên thứ ba).

+0

Thú vị. Bạn có dự án nào làm ví dụ sử dụng thư viện của bạn không. Không có hành vi phạm tội nếu nó mới, nhưng sự trưởng thành và ổn định là điều tôi đang tìm kiếm. – AJM

+1

Và không có hành vi phạm tội nào được thực hiện :). Tôi chỉ viết xong thư viện cốt lõi cách đây vài tuần, vì vậy tôi nghi ngờ rằng bất kỳ ai chưa có thời gian để đánh giá đầy đủ và tích hợp nó vào mã riêng của họ. –

+0

Clipper giới hạn bạn thành số nguyên. Có lý do gì không? GPC, ví dụ, không. – cape1232

0

http://www.antigrain.com/license/index.html là gần nhất tôi có thể tìm thấy, bạn có thể phải bỏ ra một khoản tiền nếu nó có hiệu quả, nhưng bạn có thể sử dụng miễn phí ngay bây giờ và nhận được sự chấp thuận sau này.

+0

Cảm ơn, mặc dù tôi chỉ đang tìm kiếm một thư viện hình học. Anti-Grain là một thư viện dựng hình đầy đủ. – AJM

2

Làm thế nào để tăng? http://www.boost.org/doc/libs/1_47_0/libs/polygon/doc/index.htm

Nếu bạn ổn với việc sử dụng nhiều chất generics trong giao diện, tôi nghi ngờ điều này sẽ phục vụ tốt mục đích của bạn. Tôi không chắc chắn nếu nó có chứa tam giác, nhưng bạn có thể thực hiện một trong nhiều thuật toán triangulation có sẵn nếu nó không.

3

PolygonLib là thư viện cắt đa giác mới được viết bằng chữ T ++ và đã được sử dụng trong hai dự án. Đó là số lượng mạnh mẽ, sử dụng các tọa độ đôi và được tối ưu hóa cho đa giác với số lượng lớn các đỉnh. Xem http://www.ulybin.de/products/polygonlib.php?lang=en để biết thêm chi tiết và so sánh hiệu suất và sử dụng bộ nhớ với GPC và PolyBoolean.

Phiên bản đánh giá giới hạn của thư viện là miễn phí để không sử dụng thương mại và hỗ trợ các hoạt động bạn cần (ngoại trừ triangulation).

+0

Câu trả lời thú vị ... bạn có liên quan đến bài kiểm tra này không? Nếu không, vui lòng nêu rõ;) – Stephan

+2

Tôi đã dẫn dắt sự phát triển của thư viện, phát triển các thuật toán, API và kiến ​​trúc của nó. – AKU

Các vấn đề liên quan