我需要对许多凸多边形(高达数万个)应用布尔或运算(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
你确定吗?你是如何实现它的? –