多边形内有弧形的多边形

时间:2018-03-19 16:27:22

标签: c++ algorithm computational-geometry

我遇到了另一个算法问题,我需要决定完成此问题的最佳方法。

对于一个简单的视图,我有2个多边形(多边形A和B),可以是凸面还是非凸面(凹面?),它们是“简单”。多边形将由线或弧组成,但多边形不会自行循环。我需要确定A是否完全包含B。

我目前用于确定Polygon A是否包含Polygon B的方法是查看B的边界框是否在A内。但是,我遇到了一些问题并得到误报。为了保存解释,我的问题与这个人遇到的问题相同:https://math.stackexchange.com/questions/2273108/polygon-in-polygon-testing

在其中一个答案中,您将看到会导致误报的图片。答案还包含一个可能解决方案的链接: Check if polygon is inside a polygon

我不太赞成线交叉方法,因为当我们处理弧时,事情会变得有点复杂。虽然,如果有人可以发布一个很好的答案,使得与弧线的交点变得简单,我仍然愿意继续进行线路交叉。

所以,我问社区是否有另一种更简单的方法来确定Polygon A是否完全包含Polygon B,如果是,他们是否可以发布一些关于如何构造所述算法的资源?

编辑:

弧由圆弧表示

1 个答案:

答案 0 :(得分:1)

在所有情况下都适用的合理方法是将曲线多边形展平,即将表示它们的平面多边形转换到某种程度的准确度。这可以通过递归细分来完成。

然后使用扫描线方法检测交叉点。

请注意,您也可以预先使用sweepline方法,并在单调的部分中分解弧。无论如何,请注意两个不交叉配置的单调弧可能会相交。