C#XNA模拟重力

时间:2010-10-19 07:39:29

标签: c# xna physics

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

4 个答案:

答案 0 :(得分:13)

这取决于你想要多么详细。 Newtonian gravity laws指示两个物体之间具有平方关系的力与它们的距离。

alt text

  • F是两点质量之间的重力的大小,
  • G是gravitational constant
  • m 1 是第一个点质量的质量,
  • m 2 是第二点质量的质量,
  • r是两个点质量之间的距离。

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

显然,一旦你知道了力量,你可以应用Newton's second law(力=质量*加速度)来计算你应该应用于每个身体的加速度。

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


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

答案 1 :(得分: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;

答案 2 :(得分:2)

答案 3 :(得分:0)

简单版本:如果你的圆圈有方向和速度,那么重力只是一个额外的方向和速度,指向你想要引力的方向。

更简单:只需向下移动圆圈的位置即可。

在此之后,只需对其进行微调,以适应加速和设定速度的目的。