徐汇区中山西路2331号 17492213794 z6com@j9.com

集团新闻

快速移动的区间为何可能穿过而两端都不重叠:十组运动区间的连续接触时间·案例10

2026-11-02

只在一拍开始和结束检查相交,可能漏掉中途擦过的运动。用一维区间匀速移动的例子,可以求出整拍内的接触时间范围,再与端点检查作比较。

以下是一组可按记录复查的虚构游戏例子。它先固定输入、单位和执行顺序,再展示每一步结果。读者可以用纸笔挑出几步核对,不需要依赖具体游戏的后台数据。

明确规则与输入

两个闭区间沿一条轴匀速移动,时间从零到一。接触边界也算相交。用相对速度把问题变成一个区间相对另一个移动,求两条边界约束共同成立的时间区间;若没有共同时间则记为空。

十组独立的一维运动,时间统一从零到一,None表示这一拍没有接触。

完整计算过程

第1组甲区间[0, 2]速度18,乙[8, 10]速度0,相对速度18;整拍接触范围['1/3', '5/9'],开始检查False,结束检查False。仅检查两个端点会漏掉本组接触。

第2组甲区间[7, 9]速度5,乙[4, 6]速度5,相对速度0;整拍接触范围None,开始检查False,结束检查False。按完整时间范围解释接触状态。

第3组甲区间[-7, -2]速度0,乙[7, 12]速度1,相对速度-1;整拍接触范围None,开始检查False,结束检查False。按完整时间范围解释接触状态。

第4组甲区间[-4, -3]速度2,乙[3, 6]速度-10,相对速度12;整拍接触范围['1/2', '5/6'],开始检查False,结束检查False。仅检查两个端点会漏掉本组接触。

第5组甲区间[-1, 2]速度-8,乙[-2, 3]速度9,相对速度-17;整拍接触范围['0', '4/17'],开始检查True,结束检查False。按完整时间范围解释接触状态。

第6组甲区间[6, 9]速度-5,乙[2, 7]速度-10,相对速度5;整拍接触范围['0', '1/5'],开始检查True,结束检查False。按完整时间范围解释接触状态。

第7组甲区间[0, 4]速度2,乙[-1, 3]速度-5,相对速度7;整拍接触范围['0', '3/7'],开始检查True,结束检查False。按完整时间范围解释接触状态。

第8组甲区间[6, 10]速度0,乙[6, 7]速度-10,相对速度10;整拍接触范围['0', '1/10'],开始检查True,结束检查False。按完整时间范围解释接触状态。

第9组甲区间[-1, 1]速度11,乙[3, 6]速度-2,相对速度13;整拍接触范围['2/13', '7/13'],开始检查False,结束检查False。仅检查两个端点会漏掉本组接触。

第10组甲区间[-8, -3]速度-9,乙[-4, -3]速度10,相对速度-19;整拍接触范围['0', '1/19'],开始检查True,结束检查False。按完整时间范围解释接触状态。

十组中3组在开始和结束都未相交,却在中间接触。

独立核对与边界

在任何候选时刻,都可以直接代入两区间的左右端点,用较大左端不大于较小右端判相交。核对进入、离开时刻及区间中点,再检查区间外的测试点,不能只检验开始和结束。

这里只处理线性匀速的一维运动,没有旋转、加速度或碰撞后的反应。连续检测报告何时接触,不会自动决定弹开、停止还是穿透。两个端点均不相交也不能据此断言整拍都没有接触。

练习时只改变一个条件,先判断哪些中间步骤应当受影响,再重新计算。要把空状态、数值零和未能确定的结果分开。边界约定不同可能产生不同答案,复查的目标是确认输入、过程与规则一致,而不是只追求最后一个数字看起来相同。