长期聆听者,第一次来电者。我正在 XNA 中制作一个小游戏,关于太空中的运输船,类似于海上的集装箱船。我需要能够在受限的 2D 环境中预测船与行星/卫星引力影响范围之间的相遇。船和行星/月球的位置,简称体,由开普勒轨道元素确定。Ship 和 Body 都围绕同一个吸引中心运行。
到目前为止,我设计的方法是首先对远点和近点(距吸引力中心最远和最近的点)进行一些初步检查,看看是否有可能相遇。在这样的检查之间,如果船舶的轨道是开放的(双曲线,我将抛物线情况近似为双曲线),它可以排除许多不可能遇到的情况。
如果这些检查确定可能发生相遇,我将确定船舶有资格发生相遇的距吸引力中心的最小和最大距离。然后我得到船舶轨道与由最小值和最大值定义的两个圆的交点。这会在飞船的轨道上产生零个、两个或四个点,定义零个、一个或两个周期,在这些点上它可能会遇到身体的球体。在这一点上,如果有零个交叉点,则整个船舶轨道可能都在相遇区,这可能是一个不常见的极端情况,但需要被覆盖。
我可以得到船将通过其轨道上的这些点的时间,给一两个时间窗口来检查相遇,但从那里我最好的解决方案是通过将时间跨度划分为步骤来搜索时间跨度,计算身体的位置那些时候,然后测试遇到。
这种方法的问题在于知道有效找到相遇的步骤的大小。及时获取 Body 的位置有点贵,所以我宁愿尽量少做,但步数太大可能会错过遭遇。
共焦圆锥形状是否有任何特性可以帮助减少搜索空间?或者是否有其他方法可以预测沿圆锥路径移动的点和沿共享焦点的椭圆移动的圆之间的相遇/碰撞。