用于多边形操作的库

时间:2010-06-13 20:09:35

标签: union polygon clipping triangulation

我最近遇到了需要一个库或一组库来处理2D多边形的操作。我需要能够执行布尔/裁剪操作(差异和联合)和三角测量。

到目前为止,我找到的图书馆是poly2triCGALGPC。 Poly2tri看起来很适合三角测量,但我仍然留有布尔运算,我不确定它的成熟度。

如果我自己的项目是免费的,CGAL和GPC是免费的。我的特定项目不是商业项目,因此我对付款或申请任何许可证犹豫不决。但我可能想将我的代码用于未来的商业项目,所以我对CGAL的开源许可证和GPC的免费软件限制犹豫不决。似乎没有任何多边形裁剪库具有漂亮的BSD样式许可证。

哦,首选C / C ++。

5 个答案:

答案 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是我能找到的最接近的,你可能不得不花钱购买它,但你现在可以免费使用它,并在以后获得同意。