自制轨道模拟无其他天体却出现轨道进动?求原因分析
轨道模拟器近心点移动问题
我制作了一个基础的轨道模拟器(我对此仍感到非常自豪)。卫星的第二次轨道运行轨迹与第一次并不相同,其近心点持续移动,类似轨道进动。我本以为这确实是轨道进动,但模拟中没有其他天体,卫星也不对地球施加反作用力。这是代码问题还是真实现象?
以下是负责轨道物理的代码:
public static float Gravity(Transform m2Loc, Rigidbody m1Mass, Rigidbody m2Mass, float gravityConstant) { float force = (m1Mass.mass * m2Mass.mass) / MathF.Pow(m2Loc.position.magnitude, 2) * gravityConstant; return force; } i.mass.AddForce(i.pos.position * -1 * Equations.Gravity(i.pos, planetMass, i.mass, gravity), ForceMode.Force);
粉色轨迹是卫星的运动轨迹。使用的引力公式为F=(G*M1*M2)/R²,其中G取值为1。地球质量为1000,飞船质量为10。在FixedUpdate()中每帧通过Rigidbody.AddForce()对飞船施加力。
补充观察
运行模拟一段时间后,发现轨道并非随机:
- 轨道高度始终在特定范围内:

- 轨道倾角从未发生偏移:

仍需解答该问题。
内容的提问来源于stack exchange,提问作者Privvet
相关产品推荐
相关产品推荐

