【发布时间】:2014-06-02 18:04:32
【问题描述】:
我正在尝试使用 boost::geometry::difference 从另一个多边形中减去一个多边形。
首先我创建了 2 个多边形,我们称它们为红色和蓝色。我知道多边形是正确创建的,因为您绘制了它们。
现在,如果我像这样计算这些多边形之间的差异:
boost::geometry::difference( blue, red,green);
绿色应该是减法的结果。
然后我使用 green.outer() 从绿色中获取点(我知道绿色实际上是一个容器,但鉴于我知道我只会得到一个多边形,因此我想简化我的示例)并绘制他们。
这是我得到的结果:
这不是我想要得到的结果。我怎样才能让 boost 返回蓝色多边形减去红色多边形?像这样:
编辑:我尝试计算这些多边形之间的交集,我得到了我想要的。那很奇怪。不知道是我做错了什么,还是让不懂数学的人提心吊胆。
【问题讨论】:
-
你为什么不推
green_container而不是green为vector<polygon>然后你让polygon green = green_container[0]; -
这就是我说的我做的,但没有写在这里,因为它更容易理解。有趣的是,如果我计算交集,我会得到我想要的
-
我的意思是蓝色“路径”的不同宽度向我表明它实际上不是多边形的 轮廓(轮廓),而是描述形状的闭合多边形它本身围绕着一个不属于多边形的“倒置空间”。 (另外,
rist* 在我之前的评论中应该是first) -
@user3013172 我从不否认它是 /a/ 多边形。我刚才说我们想看到多边形。我投票结束,因为没有足够的信息来重现这个问题。
-
如上所述,最后一个参数应该是Polygons的向量或MultiPolygon。此外,在没有看到实际数据的情况下,我只能说输入必须是有效的,即多边形的点顺序和闭合必须与多边形类型的特征定义的相同。例如。默认情况下,如果没有明确设置 bg::model::polygon 必须包含顺时针和闭合的多边形数据。如果您不确定顺序,您可以调用 bg::correct() 函数。
标签: c++ boost polygon boost-geometry