假设在一个平面上有许多凸多边形,也许是一张地图。这些多边形可以相互碰撞并共享一条边,但不能重叠。
要测试两个多边形P和Q是否重叠,首先我可以测试P中的每条边,看看它是否与Q中的任何边相交。如果找到一个交点,我声明P和Q相交。如果没有相交,那么我必须测试P完全被Q包含的情况,反之亦然。接下来,存在P == Q的情况。最后,有些情况共享一些边缘,但不是全部。(这最后两种情况可能被认为是相同的一般情况,但这可能并不重要。)
我有一个算法可以检测两条线段相交的位置。如果这两个线段是共线的,则出于我的目的,它们不被视为相交。
我是否正确列举了这些案例?对这些案例的测试有什么建议吗?
请注意,我不是要找到作为交叉点的新凸多边形,我只想知道是否存在交叉点。有许多有据可查的算法可以找到交叉点,但我不需要付出所有努力。