我有多边形集。在这个集合中,一些是外部多边形,一些可能(或可能不是)是孔。在这个阶段我不知道哪个是多边形孔。我想计算包含所有多边形的最终多边形,包括孔。
我想到了这种方法:
//'SomeLib' that has polygon boolean fucntions
var polygonSet = [poly1,poly2,...polyn];
var union, intersection;
var combinedPoly = SomeLib.XOR(polygonSet[0], polygonSet[1]);
for( var i=2; i<polygonSet.length ; i++) {
combinedPoly = SomeLib.XOR(combinedPoly, polygonSet[i]);
//or if XOR is not available
union = SomeLib.union(combinedPoly, polygonSet[i]);
intersection = SomeLib.intersection(combinedPoly, polygonSet[i]);
combinedPoly = union - intersection;
}
所以我对模块的要求是
我遇到的图书馆列表和我理解的一些要点:
在某些情况下,这些函数是大型库的一部分,其中包含其他函数或库,它们与SVG或地理空间环境一起使用,或者许多函数会添加到现有库中。
请为我的要求建议哪个图书馆合适?是否还有用于多边形布尔函数的javscript模块库?
答案 0 :(得分:2)
我使用自己的方法操作SVG凸多边形:
答案 1 :(得分:0)
我已开始实施Vatti polygon clipping algorithm,此处为the code repository。但我发现Greiner Hormann多边形裁剪算法要好得多。所以我现在不维护the code。
我建议在JavaScript中使用Greiner Hormann implementation进行多边形裁剪或其他布尔操作。