带弧的多边形内的多边形

Polygon inside polygon with arcs

我 运行 陷入另一个算法问题,我需要确定完成此问题的最佳方法。

为了简化视图,我有 2 个多边形(多边形 A 和 B),可以是凸面或非凸面(凹面?),它们是 "simple"。多边形将由直线或圆弧组成,但多边形不会自行循环。我需要确定 A 是否完全包含 B。

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

在其中一个答案中,您会看到一张图片,说明什么会导致误报。答案还包含 link 一个可能的解决方案: Check if polygon is inside a polygon

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

所以,我想问社区是否有另一种更简单的方法来确定多边形 A 是否完全包含多边形 B,如果是这样,他们是否可以 post 一些关于如何构建所述算法的资源?

编辑:

圆弧用圆弧表示

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

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


注意也可以预先使用扫掠线法,将圆弧分解成单调的部分。无论如何要当心,两条不在交叉配置中的单调弧线无论如何都可能相交。