我有一个关于使用原始形状和模拟圆形自由落体的问题。我该怎么做?我是否使用重力公式?
答案 0 :(得分:13)
这取决于你想要多么详细。 Newtonian gravity laws指示两个物体之间具有平方关系的力与它们的距离。
因此,如果您要模拟大型物体(比如行星系统),则需要在每对物体之间施加重力。
显然,一旦你知道了力量,你可以应用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)
您可以使用物理引擎,如Farseer:
http://roy-t.nl/index.php/2010/09/10/xna-farseer-platformer-physics-tutorial/
答案 3 :(得分:0)
简单版本:如果你的圆圈有方向和速度,那么重力只是一个额外的方向和速度,指向你想要引力的方向。
更简单:只需向下移动圆圈的位置即可。
在此之后,只需对其进行微调,以适应加速和设定速度的目的。