1,多边形概念(Polygon Concept)
2,一个接一个求并,{p0, p1, p2, p3} => p0+p1=p01, p01+p2=p012,p012+p3=p0123。
代码实现
namespace bg = boost::geometry;
using point_d = bg::model::d2::point_xy<double>;
using polygon_d = bg::model::polygon<point_d>; //顺时针,闭合
using multi_polygon_d = bg::model::multi_polygon<polygon_d>;
multi_polygon_d polys; //需要求并的多多边形
multi_polygon_d outs; //求并后的输出
multi_polygon_d tmp;
for (const auto& poly : polys) {
boost::geometry::union_(outs, poly, tmp);
outs.swap(tmp);
tmp.clear();
}
3,中间结果输出可能无效,比如p01无效,做为下一次求并的输入就是无效的。
通过调用

本文围绕C++中多边形求并算法展开。介绍了逐个求并的方式,指出中间结果可能无效,原因包括尖刺和自相交,可通过相关函数修复部分问题,但仍可能存在无法修复的情况。还提到用整数表示多边形坐标更好,最后提及属性合并问题未研究清楚。
最低0.47元/天 解锁文章
961

被折叠的 条评论
为什么被折叠?



