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