我最近遇到了需要一个库或一组库来处理2D多边形的操作。我需要能够执行布尔/裁剪操作(差异和联合)和三角测量。
到目前为止,我找到的图书馆是poly2tri,CGAL和GPC。 Poly2tri看起来很适合三角测量,但我仍然留有布尔运算,我不确定它的成熟度。
如果我自己的项目是免费的,CGAL和GPC是免费的。我的特定项目不是商业项目,因此我对付款或申请任何许可证犹豫不决。但我可能想将我的代码用于未来的商业项目,所以我对CGAL的开源许可证和GPC的免费软件限制犹豫不决。似乎没有任何多边形裁剪库具有漂亮的BSD样式许可证。
哦,首选C / C ++。
答案 0 :(得分:11)
Clipper是一个开源免费软件多边形裁剪库(用Delphi和C ++编写)^,它完全符合您的要求(除了三角测量) - http://sourceforge.net/projects/polyclipping/
在我的测试中,Clipper比GPC明显更快且更不容易出错(请参阅此处更详细的比较 - http://www.angusj.com/delphi/clipper.php#features)。
Re:Anti-grain Geometry(AGG)图形库 - 它不进行多边形裁剪,而只是使用GPC(商业应用程序不能免费使用)。但是,Clipper确实有AGG单元在AGG中进行裁剪就像GPC一样简单。
^编辑:Clipper现在也用C#编写(与第三方编写的Perl,Ruby,Haskell和Flash模块一起)。
答案 1 :(得分:3)
PolygonLib是一个用С++编写的新多边形裁剪库,已在两个项目中使用。它具有数字稳健性,使用 double 坐标,并针对具有大量顶点的多边形进行了优化。有关GPC和PolyBoolean的性能和内存利用率的更多详细信息和比较,请参阅http://www.ulybin.de/products/polygonlib.php?lang=en。
该库的受限评估版本可免费用于非商业用途,并支持您需要的操作(三角测量除外)。
答案 2 :(得分:2)
提升怎么样? http://www.boost.org/doc/libs/1_47_0/libs/polygon/doc/index.htm
如果您对界面中大量使用仿制药很好,我怀疑这将很好地满足您的目的。我不确定它是否包含三角测量,但如果没有,你可以实现许多可用的三角测量算法之一。
答案 3 :(得分:0)
查看Liszt Scala DSL
答案 4 :(得分:0)
http://www.antigrain.com/license/index.html是我能找到的最接近的,你可能不得不花钱购买它,但你现在可以免费使用它,并在以后获得同意。