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