我想使用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/