0

我试图用 boost::geometry::difference 从另一个多边形中减去一个多边形。

首先,我创建了 2 个多边形,我们称它们为红色和蓝色。我知道多边形是正确创建的,因为 y 绘制了它们。

现在,如果我像这样计算这些多边形之间的差异:

    boost::geometry::difference( blue, red,green);

绿色应该是减法的结果。

然后我使用 green.outer() 从绿色中获取点(我知道绿色实际上是一个容器,但鉴于我知道我只会得到一个多边形,因此我想简化我的示例)并绘制它们。

这是我得到的结果:

在此处输入图像描述

那不是我想要得到的结果。我怎样才能让 boost 返回蓝色多边形减去红色多边形?像这样:

在此处输入图像描述

编辑:我尝试计算这些多边形之间的交集,我得到了我想要的。那很奇怪。不知道是我做错了什么,还是提高了不懂数学的人。

4

1 回答 1

1

我有一个非常相似的问题。我发现我的一些差异操作正常工作,而另一些则没有。

就我而言,这是由于Adam在评论中建议的不正确的顶点缠绕。我使用boost::geometry::correct()修复了它。

于 2017-08-22T14:21:11.387 回答