计算哪些圆碰撞的最佳方法



我有一个大约200个圆圈的列表。

圆有X坐标和y坐标。所有的圆都有相同的半径。坐标范围为800 × 400。

现在所有的圆都被移动了(X和Y坐标改变)。

我必须检查两个圆是否相互接触。我可以计算两个圆之间的距离如果这个小于它们碰撞的双半径。但是如果我为200个圆圈做这个,就会花费太多时间…

有没有更有效的方法来找出哪些圆是接触的?

有一个算法(碰撞检测)。

基本思想是避免将所有的圆与其他的进行比较。

所以:把你的空间分成两半:两个400 x 400的区域,那么你可能只需要进行[n/2]^2次比较。

然后做更小的桶,它会变得更好!在每个桶中包括那些在该区域边缘的"半径"内的圆。

from mod([x,y], resolution) =>圆圈列表。然后处理映射中的每个[小]列表项。

参见:用于2D碰撞检测的技术资源?

相关内容

最新更新