圆圈碰撞有什么问题?

时间:2012-09-02 04:54:36

标签: java physics collision

我有一个简单的java应用程序,用于测试4个墙壁上的碰撞以及10个球中的每一个...我已经弄清楚了墙壁,但是圆圈到圆圈似乎对我不起作用。当我和节目的其余部分一起运行这个片段时,我会得到10个非常摇晃的圆圈(看起来与它们相撞)并且它们根本不会移动很多。如果我拿出这个片段,我会得到10个圆圈,它们可以顺畅地移动并从4个墙壁上移开。有人能告诉我可能导致问题的原因吗?致谢

for (int j = 0; j < ballnum; ++j) {
    for (int k = 0; k < ballnum; ++k) {
        if (Math.sqrt((Math.pow(balls[j].givebackpoint().x - balls[k].givebackpoint().x, 2))
            + (Math.sqrt(Math.pow(balls[j].givebackpoint().y - balls[k].givebackpoint().y, 2)))) <= 2 * RADIUS) {
            if (balls[j].givebackangle() >= 180) {
                balls[j].setangle(balls[j].givebackangle()-180);
                                        }
            else{
                balls[j].setangle(360-balls[j].givebackangle());
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

除非我错过了,否则你似乎没有跳过j == k。所以他们是正确的,他们正在与自己发生冲突。

答案 1 :(得分:2)

你正在检查每个球本身。

你需要在j == k时跳过运行测试,在你的内部for循环顶部有这样的一行:

if (j == k)
    continue;