gpt4 book ai didi

二维轨道物理

转载 作者:行者123 更新时间:2023-12-03 20:48:10 27 4
gpt4 key购买 nike

我正在为游戏开发 2D 物理引擎。我有重力和质量,使用简单的迭代方法(我知道我最终必须升级);我可以手动插入群众,看着他们移动,一切都如我所料。

现在我正试图用一颗卫星在一个简单的环绕行星的圆形轨道上提前建立游戏世界。为此,我需要根据行星的质量和所需的距离来计算卫星的初始速度矢量;这应该是微不足道的,但我一生都无法让它正常工作。

标准物理教科书告诉我,一个物体在围绕质量 M 的圆形轨道上的轨道速度是:

v = sqrt( G * M / r )

然而,在应用适当的矢量后,卫星的速度不够快,并落入了一个尖锐的椭圆轨道。随机修补表明,在一种情况下,它的偏差约为 3 倍。

我的重力模拟代码使用的是传统的:
F = G M m / r^2

G 在我的宇宙中设置为 1。

有人可以向我确认这些方程在二维空间中仍然成立吗?我看不出任何原因,但此时我真的很想知道问题出在我的代码还是我的假设中......

更新:我的物理引擎的工作原理如下:
for each time step of length t:
reset cumulative forces on each object to 0.
for each unique pair of objects:
calculate force between them due to gravity.
accumulate force to the two objects.
for each object:
calculate velocity change dV for this timestep using Ft / m.
v = v + dV.
calculate position change dS using v * t.
s = s + dS.

(当然,在适当的地方使用向量。)

现在我每帧都做一个物理滴答,每秒发生大约 500-700 次。我知道这会很快积累错误,但它至少应该让我开始。

(顺便说一句,我找不到处理轨道力学的现成物理引擎——大多数 2D 物理引擎,如 Chipmunk 和 Box2D,而是更专注于刚性结构。有人能推荐一个我可以看看吗?)

最佳答案

您需要确保您的 delta t 迭代时间值足够小。您肯定必须修改常量以获得您期望的行为。在您的情况和大多数情况下,迭代模拟是一种集成形式,其中错误快速且不可预测地累积。

关于二维轨道物理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038554/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com