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