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

时间:2018-12-15 20:13:00

标签: algorithm computational-geometry

这是书中的问题:

  

Springer-Verlag的“计算几何:算法和应用程序”。

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

enter image description here

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

2 个答案:

答案 0 :(得分:0)

可能不是您要寻找的答案,但是简单,快速且易于开发的解决方案是绘制多边形,填充多边形并进行按位屏蔽AND功能,以确定位图上重叠的位。

在x刻度上以1位为增量进行循环,并在每次迭代中执行AND遮罩测试,从而以精确的像素为您提供了完美的接触点。

pixel perfect collision detection

答案 1 :(得分:0)

将两个多边形从上到下排序,并执行扫线过程。顶点是事件点。扫描时,请跟踪P的最右边和Q的最左边。您可以在它们之间绘制水平线段,并保持所有线段中的最短。

enter image description here