我有一个简单的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());
}
}
}
}
最佳答案
您正在对照自己检查每个球。
当j == k时,您需要跳过运行测试,并在内部for循环的顶部添加如下代码:
if (j == k)
continue;