我需要對許多凸多邊形(高達數萬個)應用布爾或運算(a.k.a聯合),每個多邊形的頂點少於100個。我嘗試了Boost.Geometry(boost :: geometry :: union_()函數),它需要大約200ms來聯合1500多邊形。聯合許多凸多邊形的快速算法或庫
我已經實現了一個簡單的優化:
- 多邊形分成兩組,
- 遞歸工會兩組分爲兩個多邊形集合,
- 聯盟最後兩個多邊形集合。
這種優化比將多邊形逐個聯合起來要快10倍左右。
我需要一個算法或C/C++庫來在大約10ms內完成這些操作。
有什麼建議嗎?
==== ====編輯
我已經取代Boost.Geometry與快船(http://www.angusj.com/delphi/clipper.php),它滿足我的要求。 Clipper可以在一個操作中合併多個多邊形(Boost.Geometry一次只能合併兩個),這可能是它比Boost.Geometry快得多的原因。
您是否已經對算法進行了並行化? –
@NicoSchertler試圖並行化算法,改進可以忽略不計 – user416983
你確定嗎?你是如何實現它的? –