碰撞检测不规则形状

max*_*hud 11 javascript jquery html5 canvas collision-detection

我知道如何检查一个圆是否要与一个正方形碰撞,我知道如何检测一个正方形是否即将与一个正方形碰撞,但我如何检测一个多边形是否即将与一个正方形碰撞?

或者更好的是,当多边形即将与多边形碰撞时.

或者更好的是,当由不直的线组成的形状与另一个相似的形状,多边形或圆/矩形碰撞时

是否有任何方法可以获得像素的形状可能占用的像素和另一个形状的像素将占用并检查它们中的任何一个是否相同?

我希望有一些解决方案不需要大量的形状特定计算.

我使用javascript和html5 canvas来做到这一点.

Mat*_*tzi 3

这不是一件简单的事情。如果您满意一个函数可以判断两个多边形是否发生碰撞(并且您可以回滚它们),那么解决方案就不那么难了。您只需要检查多边形的任意两条边是否相互交叉。这可以通过一些数学来完成,对于大形状或大量多边形,它会削弱性能。为了解决这个问题,您可以使用空间分区和包围体。

更新:您可以根据 计算线的交点。然后你需要检查这个点是否在两个线段中。为此,您可以使用线段的端点,如果线段实际包含该点,则 ua 和 ub 变量将介于 0-1 之间。

  • 谢谢,但是什么样的数学?这并没有真正帮助我,因为你不可能“不做数学就能做到这一点” (4认同)