假设在一个平面(可能是 map )上有许多凸多边形。这些多边形可以相互碰撞并共享一条边,但不能重叠。

要测试两个多边形 P Q 是否重叠,首先,我可以测试 P 中的每个边,以查看其是否与 Q 中的任何边相交。如果发现相交,则声明 P Q 相交。如果没有相交,则必须测试 Q 是否完全包含 P ,反之亦然。接下来,存在 P == Q 的情况。最后,存在共享一些边缘但并非所有边缘的情况。 (可以将这后两种情况视为相同的一般情况,但这可能并不重要。)

我有一种算法可以检测两条线段相交的位置。如果两个线段是共线的,就我的目的而言,它们不相交。

我是否正确列举了案件?对这些情况进行测试有什么建议吗?

请注意,我并不是要查找作为交集的新凸多边形,我只是想知道是否存在交集。找到交集的算法很多,但是我不需要花费所有的精力。

最佳答案

您可以使用this collision algorithm:

关于geometry - 如何确定两个凸多边形是否相交?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/753140/

10-11 15:05