项目期间,遇到计算机图形学中的布尔运算,项目是基于Web环境的,网上资源比较少,索性在网上找了相关资料,干脆自己写了一个,废话不多说,上代码。
unionPoly(polygons){//多个polygons
let island = [];
if(polygons.length !== 0){
for(let m = 0; m < polygons.length; m++){
for(let n = m+1; n < polygons.length; n++){
//判断是否相交
let isContInter = this.isContoursIntersect(polygons[m], polygons[n]);
if(isContInter){
//求交
let new_P = this.interPolygon(polygons[m], polygons[n]);
polygons.splice(m, 1, new_P[0]);
polygons.splice(n, 1);
if(new_P.length > 1){
new_P.splice(0, 1);
island = island.concat(new_P);
}
n = m;
}
}
}
}
return {polygons:polygons, island:island};
}