长期听众,第一次来电。我正在使用XNA制作一个小型休闲游戏,它涉及到太空中的运输船,类比于海上的集装箱船。我需要能够在限制的二维环境中预测船和星球/卫星引力势区之间的相遇。船和行星/卫星,简称为物体,的位置是根据开普勒轨道要素确定的。船和物体都绕着同一个引力中心运动。
到目前为止,我想出的方法是首先对近地点和远地点(距离引力中心最远和最近的点)进行一些初步检查,以查看是否可能发生相遇。在这样的检查和如果船的轨道是开放的(双曲线的情况下,我将把抛物线近似为双曲线),可以排除许多不可能有相遇的情况。
如果这些检查确定可能发生相遇,我会确定飞船与引力中心的最小和最大距离,然后获取飞船轨道与由该最小和最大定义的两个圆的交点。这将在飞船轨道上定义零、一个或两个时期,其中它可能会遇到该天体的球体,从而得到零、两个或四个点。此时,如果没有交点,则可能整个飞船轨道都在相遇区域内,这可能是一种不常见的极端情况,但需要进行处理。
我可以获得飞船通过其轨道上的那些点的时间,为相遇检查提供一个或两个时间窗口,但从那里开始,我最好的解决方案是将时间跨度划分为步骤进行搜索,计算那些时间点上的天体位置,然后测试是否相遇。
这种方法的问题在于,知道要采取多大的步骤才能有效地找到相遇。获取时间点上的天体位置有些昂贵,因此我希望尽可能少地执行此操作,但步长过大可能会错过相遇。
有关共焦圆锥形状的任何属性可以帮助减少搜索空间吗?或者是否有其他方法来预测实际上沿着圆锥路径移动的点与沿着共享焦点的椭圆形移动的圆之间的相遇/碰撞?
到目前为止,我想出的方法是首先对近地点和远地点(距离引力中心最远和最近的点)进行一些初步检查,以查看是否可能发生相遇。在这样的检查和如果船的轨道是开放的(双曲线的情况下,我将把抛物线近似为双曲线),可以排除许多不可能有相遇的情况。
如果这些检查确定可能发生相遇,我会确定飞船与引力中心的最小和最大距离,然后获取飞船轨道与由该最小和最大定义的两个圆的交点。这将在飞船轨道上定义零、一个或两个时期,其中它可能会遇到该天体的球体,从而得到零、两个或四个点。此时,如果没有交点,则可能整个飞船轨道都在相遇区域内,这可能是一种不常见的极端情况,但需要进行处理。
我可以获得飞船通过其轨道上的那些点的时间,为相遇检查提供一个或两个时间窗口,但从那里开始,我最好的解决方案是将时间跨度划分为步骤进行搜索,计算那些时间点上的天体位置,然后测试是否相遇。
这种方法的问题在于,知道要采取多大的步骤才能有效地找到相遇。获取时间点上的天体位置有些昂贵,因此我希望尽可能少地执行此操作,但步长过大可能会错过相遇。
有关共焦圆锥形状的任何属性可以帮助减少搜索空间吗?或者是否有其他方法来预测实际上沿着圆锥路径移动的点与沿着共享焦点的椭圆形移动的圆之间的相遇/碰撞?