我发现了很多关于碰撞检测的问题,并且我创建了一个足够有效的方法来检测两个给定的对象对是否碰撞。问题是,当我将对象数量从 2 增加到 20 时,算法突然停止正常工作。例如,如果粒子 1 撞击粒子 10,那么粒子 10 会依次跳过其他对象并直接与墙壁碰撞。
其背后的原因是,当粒子 1 实际上与粒子 10 发生碰撞时,我的算法不是检查它们之间的碰撞,而是检查其他对。
根据我的解决方案,将同时为每一对运行碰撞检测方法。现在,我需要将粒子一和粒子二传递给每个线程,其中一和二是要检测碰撞的对象。
这是伪代码:
private double isColliding(Particle One, Particle Two) {
//Collision Detection Mechanism
//Returns 0 if no collision
//Otherwise returns a double between 0 and 1
//used to clip the velocity vector so that it stops right before collision
}
所以,我想知道如何将上述方法转换为在不同的线程上运行不同的对象对......
另外,有没有其他方法可以做到这一点......
注意....上述方法不会改变粒子一或二的任何值,因此可以异步使用....