实现3D运动力量

时间:2012-10-20 14:52:56

标签: objective-c math 3d

我有一个3D物体在移动,我需要能够对它施加力,例如重力。在2D中,我只是将其移动存储在dx和dy中,但由于这是3D,我使用的是Vector3D directionfloat speed。如何通过使用applyForce(Vector3D force)

之类的内容来确定旋转方向和更改速度的程度

1 个答案:

答案 0 :(得分:1)

牛顿第二定律给出了加速度与施加的力成比例。因此,一种非常简单的方法是前向整合,例如, (紧凑的伪代码)

class Object {
   Vector3D position;
   Vector3D velocity;
   float mass;

   updatePhysics(Vector3D force, float dt) {
      velocity += (1.0/mass) * force * dt;
      position += velocity * dt;
   }
}

当然,在现实生活中存在例如数字不稳定性和时间增量选择的问题。如果您尝试执行一次性计算,或者这是用于3D游戏,我从您的问题中无法理解。如果是后者,我建议您查看物理库,例如Bullet Physics,您将免费获得很多。