查找 2 个多边形之间的碰撞

Find collision between 2 polygons

这是书中的问题:

"Computational Geometry: Algorithms and Applications", Springer-Verlag.

给定两个简单且不相交的多边形 P 和 Q,其中 P 严格位于 Q 的左侧,如果 P 沿正 x 方向水平平移,则计算多边形上将发生碰撞的第一个点,或者确定他们不会发生碰撞。

我有一个二次解,但它应该是 O((n+m) log(n+m))

可能不是您正在寻找的答案,但简单、快速且易于开发的解决方案是绘制多边形、填充它们并执行按位掩码和函数以确定位图上重叠的位。

在 x 尺度上以 1 位的增量循环并在每次迭代中执行 AND 掩蔽测试可为您提供以精确像素为单位的完美接触点。

pixel perfect collision detection

从上到下对两个多边形进行排序并实施扫掠线过程。顶点是事件点。扫的时候,P的最右边和Q的最左边留一条痕迹,中间可以画横线,留最短的一条。