小智 5
有四种情况。
首先:根据多边形检查矩形中的任意点(参见多边形中的点)。如果它在里面,你就完成了,因为它是第 3 种或第 2 种情况。如果它在外面,则排除第 3 种情况。
第二:根据 Rect 检查 Poly 的任意点以验证/排除情况 4。
第三:检查 Rect 与 Poly 的线是否相交以验证/排除情况 2。
这也应该适用于多边形与多边形(凸面和凹面),但这样更易读。
简单地查找是否存在交集,我认为您也许可以结合两种算法。
1)光线投射算法。使用每个多边形的顶点,确定其中一个顶点是否在另一个顶点中。假设您不担心实际的交叉区域,而只是担心它的存在。 http://en.wikipedia.org/wiki/Point_in_polygon
2)线相交。如果步骤 1 没有产生任何结果,请检查线相交。
我不确定这是否 100% 正确或最优。
如果您实际上需要确定交叉点的区域,那就更复杂了,请参阅前面的答案: