Java重力循环优化

标签 java loops

为什么物体在第二个循环示例中似乎损坏了,我正在尝试优化我的行星系统以支持更多物体。

for(Body body : bodies){
    PVector totalForce = new PVector();
    for(Body other : bodies){
        if(body != other){
            PVector fxy = body.attraction(other);
            totalForce.x += fxy.x;
            totalForce.y += fxy.y;
        }
    }

    body.vel.x += totalForce.x / body.mass * timestep;
    body.vel.y += totalForce.y / body.mass * timestep;
    body.pos.x += body.vel.x * timestep;
    body.pos.y += body.vel.y * timestep;
}

第二个循环,其中只有一个物体在移动,而且它向错误的方向移动

PVector totalForce = new PVector();
PVector fxy = new PVector();
for(int i = 0; i + 1 < bodies.size(); i++){
    Body body = bodies.get(i);
    Body other = bodies.get(i + 1);
    System.out.println(body + " " + other);
    fxy = body.attraction(other);
    totalForce.x += fxy.x;
    totalForce.y += fxy.y;
    body.vel.x += totalForce.x / body.mass * timestep;
    body.vel.y += totalForce.y / body.mass * timestep;
    body.pos.x += body.vel.x * timestep;
    body.pos.y += body.vel.y * timestep;
}

gravity example

最佳答案

在您的第一个样本中,您正在检查每一对可能的物体。

a,b,c - (a,b),(a,c),(b,c)

在您的第二个示例中,您正在检查每个相邻的物体。

a,b,c - (a,b),(b,c)

关于Java重力循环优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49316301/

相关文章:

php - 执行 PHP 循环直到数组结束或达到一定的迭代次数?

java - Android sqlite rawquery selection args问题

java - 绘制JFrame难度

驱动器的 C# 循环挂起

Java循环从用户输入重复过程?

r - 如何使循环在 R 中更高效?

java - 在具有换行符的字符串中的两个单词之间提取

java - 如何在 Spring Data 中的另一个实体更新后更新实体?

java - 使用 HTMLUnit 发送包含多个关键字作为参数的 POST 请求

javascript - Ajax函数进入循环