查找 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 掩蔽测试可为您提供以精确像素为单位的完美接触点。
从上到下对两个多边形进行排序并实施扫掠线过程。顶点是事件点。扫的时候,P的最右边和Q的最左边留一条痕迹,中间可以画横线,留最短的一条。
这是书中的问题:
"Computational Geometry: Algorithms and Applications", Springer-Verlag.
给定两个简单且不相交的多边形 P 和 Q,其中 P 严格位于 Q 的左侧,如果 P 沿正 x 方向水平平移,则计算多边形上将发生碰撞的第一个点,或者确定他们不会发生碰撞。
我有一个二次解,但它应该是 O((n+m) log(n+m))
可能不是您正在寻找的答案,但简单、快速且易于开发的解决方案是绘制多边形、填充它们并执行按位掩码和函数以确定位图上重叠的位。
在 x 尺度上以 1 位的增量循环并在每次迭代中执行 AND 掩蔽测试可为您提供以精确像素为单位的完美接触点。
从上到下对两个多边形进行排序并实施扫掠线过程。顶点是事件点。扫的时候,P的最右边和Q的最左边留一条痕迹,中间可以画横线,留最短的一条。