【发布时间】:2020-07-15 11:49:02
【问题描述】:
这个问题比较简单,判断一个多边形是完全在里面,完全在外面,还是被另一个多边形切割,但是,多边形可能共享顶点或部分边。 首先,我想只检查多边形 A 中的每个顶点是否位于多边形 B 的内部/外部,一旦 B 切割 A,这就会失败,请参阅:
左:A 将被归类为 B 之外
正确:A 将被归类为 B 内部
下一个想法是,检查是否有交叉点,如果有,则将其归类为切割,如果没有,则检查 A 的任何点,如果它在 B 内。但是,如果这个检查点落在B 的边缘,它可以在里面,也可以在外面。
所以,只需检查 A 和 B 的所有点,直到找到一个不位于 B 边缘的点,但是,如果 A 的所有点都位于 B 的边缘,这也可能失败,见:
Left:A应该归类为inside
右:A应该归类为外
所以问题仍然存在,在这种情况下,您如何毫无疑问地确定多边形 A 位于多边形 B 内部还是外部,边和顶点是否可以共享。
【问题讨论】:
-
你已经尝试了什么?
-
好吧,所描述的算法不仅仅是想法,我实现了它们,并使用了它们,直到我发现它们在某些情况下失败了。但现在我不知道如何继续改进算法。
-
@OmG 你能解释一下这个链接与这个问题有什么关系吗?据我所见,该线程是关于获取两个多边形的交集,而不是确定多边形 A 是在多边形 B 内部还是外部。