在具有提升几何中的共享边的多边形上执行联合运算时出现问题

时间:2016-04-10 11:57:59

标签: c++ boost polygons boost-geometry

我正在尝试使用增强几何来构建具有自交叉计算的恒定宽度的车辆持续路径。面对多边形上布尔运算结果的问题(更准确地说是多边形)。

这是我的路径mpolygon的一些步骤: enter image description here

在每一步中,我使用两个点x,y(浮子) - 从当前车辆位置向左和向右偏离一半恒定宽度。我们将x-y线称为段。

当车辆的位置更新时,我使用旧的x,y点和新的构造附加的mpolygon(确实更正)和union_它与路径mpolygon(因此路径mpolygon变长)。

有时(特别是对于足够大的宽度值),可能会有新段与之前的交集。在那种情况下,我使用计算的交点来构造附加的mpolygon作为两个多边形,其中bg ::两个段的交集:oldx-oldy line和x-y line。 enter image description here 当我使用路径mpolygon联合时,首先出现问题: enter image description here 结果是mpolygon中的两个多边形,而不是我预期的那个。它似乎并不总是,但经常。

下一步,再次将新段与之前的段相交,并再次在附加的mpolygon中构造两个多边形 enter image description here

联合结果 - mpolygon中的一个多边形: enter image description here

最后一步 enter image description here

那些几乎为零的区域可以显示为一个多边形的外环的“部分”,或者作为另一个最大的多边形中的单独多边形(制动mpolygon模型的规则)。

我认为这是在最后一次开始导致覆盖无效输入异常(我得到)在下一步中使用这样的mpolygon执行交集或union_时。

认为问题是浮点不准确(可能在执行union_时计算略有不同的多边形交叉点与共享边缘),我甚至试图通过在当前路径多边形的外环中插入段的交点来解决这个问题做union_。它在执行交集或union_时略微减少了覆盖无效输入异常,但没有完全解决问题。

有没有人遇到过那种问题?如果有这样的问题的解决方案?也许在其他一些几何库中?

很抱歉有详细说明。 非常感谢您提前寻求帮助。

0 个答案:

没有答案