在Java处理3(2D)中碰撞检测的更好算法?

问题描述:

我的程序包含越来越多的对象“n”,每个对象都有自定义形状和坐标。 为了检测每个物体的碰撞,我检查它与所有其他物体之间的距离,以检查它是否足够接近碰撞。然而,这会使复杂度n ^(n-1)太高。 什么是更好的碰撞检测算法: - 简单的2D对象,如圆形和三角形? -costume对象由顶点和PShape?在Java处理3(2D)中碰撞检测的更好算法?

+2

你看过[Box2D](https://github.com/erincatto/Box2D)吗? – teppic

简短的回答:将你的世界空间分割成空间,然后只检查在同一空间中的对象。这样想一下:如果你有一个位于左上角的物体,你不必检查右下角的物体。只是在左上角的其他物体。

有很多方法可以实现这一点。最常见的方法之一是数据结构,称为quadtree

另一种方法是使用物理库,为您做所有的碰撞检测。

如果你只是做一些简单的事情,上述两种方法可能会矫枉过正,因此完全取决于你。