physics - 使用Box2D模拟 "Newton'万有引力定律

标签 physics simulation box2d gravity

我想使用Box2D模拟Newton's law of universal gravitation

我仔细阅读了手册,但找不到解决方法。

基本上,我想做的是在空间(零重力)中放置几个​​对象并模拟运动。

有小费吗?

最佳答案

这很容易实现:

for ( int i = 0; i < numBodies; i++ ) {

    b2Body* bi = bodies[i];
    b2Vec2 pi = bi->GetWorldCenter();
    float mi = bi->GetMass();

    for ( int k = i; k < numBodies; k++ ) {

        b2Body* bk = bodies[k];
        b2Vec2 pk = bk->GetWorldCenter();
        float mk = bk->GetMass();

        b2Vec2 delta = pk - pi;
        float r = delta.Length();
        float force = G * mi * mk / (r*r);

        delta.Normalize();
        bi->ApplyForce(  force * delta, pi );
        bk->ApplyForce( -force * delta, pk );
    }
}

关于physics - 使用Box2D模拟 "Newton'万有引力定律,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6758060/

相关文章:

java - 在 AndEngine 中变换主体时崩溃

Iphone GUI 物理代码

fortran - 使用 FFTW3 库评估 FORTRAN 中高斯函数的快速傅里叶变换

math - 打砖 block 物理(射弹物理模拟)

r - R中多个二项式随机数的模拟

java - 如何使用 box2d 创建用户数据

java - 快速多体重力算法?

simulation - 您使用程序技术制作/看过哪些内容

python - pip无法卸载这个包

c++ - 不可能从这个对象继承?