当使用列表将X坐标放置到其中并遍历它们时,这是一个相当琐碎的问题,但我需要一种高效的方法来做到这一点,因为即使火车以高速行驶,它也需要非常精确。有很多关于2D碰撞检测的教程,但我不确定如何处理这个独特的1D场景。
显然,对于我的数据有一些混淆。
我正在模拟一个站点,而不是整个区域。火车的长度可以是任意的,具有不同类型的车辆,但只有一个火车。我的火车数据是以
{48,96,508,556,626,674,...}
的形式表示,表示从火车前端(0
)到轴心的距离。(火车数据更可能以有序列表的形式出现,每个对象都有一个长度和表示轴距离的整数列表,但它们都被聚合成一个单一的列表,因为对我来说所有的轴都是相同的。)
我的开关都在几百英尺内,通常会完全被火车覆盖。开关可以在数百英尺至几英寸之间的任何间隔处,并且与火车相同:
{0,8,512,520,...}
,表示从站点开始到开关中心的距离。最后,我知道车轮激活开关的距离,单位为英寸。
例如,使用上面的示例数据和8英寸的激活距离,X=0处的第一个开关将在火车达到X=40时激活,这意味着火车已经进入了40英寸的站点。当火车达到X=48时,X=8处的开关也被激活。当X=56时,第一个开关关闭,当X=64时,第二个开关也关闭。不同的轴正在跨越站点时打开和关闭不同的开关。
火车通常以低于10英里/小时的速度行驶,但可以更快。 (现在我们的模拟速度限制在30英里/小时,但更高的速度会更好。)