C#XNA模拟重力

RoR*_*RoR 1 c# xna physics

我有一个关于使用原始形状和模拟圆形自由落体的问题.我该怎么做?我是否使用重力公式?

Sim*_*ens 13

这取决于你想要多么详细.牛顿引力定律决定了两个物体之间具有平方关系的力与它们的距离.

替代文字

  • F是两点质量之间的引力的大小,
  • G是引力常数,
  • m 1是第一点质量的质量,
  • m 2是第二点质量的质量,并且
  • r是两点质量之间的距离.

因此,如果您要模拟大型物体(比如行星系统),则需要在每对物体之间施加重力.

显然,一旦你知道了力量,你可以应用牛顿第二定律(力=质量*加速度)来计算你应该应用于每个身体的加速度.

在简单刻度的另一端,如果你有一个相对于一个非常大的身体(地面)和多个小物体的固定参考框架,你真正需要做的就是向地面施加恒定的加速度.在这种情况下,(在真空中)地球上的重力对所有物体施加9.81m/s 2的恒定加速度.CodeInChaos提供了一个很好的代码示例.


(当然我们现在知道牛顿引力不是很正确,它会在非常大和非常小的范围内发生故障.但这有点超出了这个答案)


Cod*_*aos 8

重力只是不断向下加速.

伪代码:

const Vector3D Gravity=(0, 0, -9.8 m/s^2);
Vector3D Acceleration=Gravity;//insert other forces here
Vector3D Position+=Speed*DeltaT+0.5*Acceleration*DeltaT*DeltaT.
Vector3D Speed+=Acceleration*DeltaT;
Run Code Online (Sandbox Code Playgroud)