界面移动若匀速启动和停止,速度会在两端突然改变。一条自定三次曲线可以让归一化进度仍从零走到一,同时使两端的变化率为零。
固定规则与输入
把时间除以总时长并限制到零至一,记为t。进度使用3t平方减2t立方,位置由起点加位移乘进度得到。区间外固定在端点,不继续外推。
起点11,终点-9,总时长3
逐步观察结果
时刻-1,限制后的归一化时间0,平滑进度0,位置11,对实际时间的变化率0。
时刻0,限制后的归一化时间0,平滑进度0,位置11,对实际时间的变化率0。
时刻3/4,限制后的归一化时间1/4,平滑进度5/32,位置63/8,对实际时间的变化率-15/2。
时刻3/2,限制后的归一化时间1/2,平滑进度1/2,位置1,对实际时间的变化率-10。
时刻9/4,限制后的归一化时间3/4,平滑进度27/32,位置-47/8,对实际时间的变化率-15/2。
时刻3,限制后的归一化时间1,平滑进度1,位置-9,对实际时间的变化率0。
时刻4,限制后的归一化时间1,平滑进度1,位置-9,对实际时间的变化率0。
时刻19/8,限制后的归一化时间19/24,平滑进度6137/6912,位置-11677/1728,对实际时间的变化率-475/72。
时刻21/8,限制后的归一化时间7/8,平滑进度245/256,位置-521/64,对实际时间的变化率-35/8。
时刻5/8,限制后的归一化时间5/24,平滑进度775/6912,位置15133/1728,对实际时间的变化率-475/72。
时刻19/8,限制后的归一化时间19/24,平滑进度6137/6912,位置-11677/1728,对实际时间的变化率-475/72。
负时刻与结束之后都固定在端点。位移为负时,位置变化率也相应为负,但归一化进度仍从零增加到一;方向与进度的单调性应分别理解。
独立复核
在有效区间,进度变化率为6t乘1减t;位置的时间变化率还要乘总位移并除以总时长。中点进度恰好一半,两端速度为零,但中间不是匀速运动。
复核时先保留本例输入,再自己写出中间状态。若结果不同,应从最早出现差异的位置检查,尤其留意边界是否包含、索引从哪里开始、取整何时发生,以及是否使用了尚未更新的旧状态。计算得到的结论仅适用于已经说明的规则,修改规则后需要重新验证。
适用范围
本例控制的是标量位置,不自动处理碰撞和路径拐弯。曲线在区间内单调,不会越过端点;若用于角度或循环坐标,还需要先明确插值方向与坐标的表示方式。
