只给起点终点并不能完全决定一段平滑过渡,还要指定两端的变化速度。某些端点斜率会让曲线在中途越过终值,即使两端数值本身都在正常范围内。
把时间规范为t从零到一,起终值为y0、y1,两端斜率为m0、m1。三次曲线系数为a等于2y0减2y1加m0加m1,b等于负3y0加3y1减2m0减m1,c等于m0,d等于y0,值为at三次方加bt平方加ct加d。
端点及斜率{'y0': -3, 'y1': 10, 'm0': 5, 'm1': -19},三次到常数的四个系数为[-40, 48, 5, -3]。
规范时间 | 曲线值 0 | -3 1/8 | -109/64 1/4 | 5/8 3/8 | 225/64 1/2 | 13/2 5/8 | 583/64 3/4 | 87/8 7/8 | 725/64 1 | 10 端点与内部极值时刻:[0.0, 0.8490731195102493, 1.0] 这些时刻的值:[-3.0, 11.365046328098693, 10.0] 真实值域:[-3.0, 11.365046328098693]
这里的编号只用来辨认本例中的对象,不能当成另一份记录里的固定身份。阅读表格时先找到输入,再顺着运算顺序对照输出;空列表、零值和不存在的结果有不同含义,不能混用。表中分数保留精确值,小数显示仅为阅读方便。
端点代入应精确得到给定值和斜率。寻找真实范围时,还要解导数3at平方加2bt加c等于零,检查零到一以内的极值点;仅检查几个均匀采样点可能漏掉很窄的越界峰。
表格比较若干时间样本并列出极值候选。试着保持端点不变,只放大一个斜率,观察中段变化。若最后用硬裁剪把越界值拉回范围,曲线的速度连续性可能被破坏,应把裁剪当成新的展示规则而非原曲线仍然不越界。
斜率是对规范时间的导数。如果实际时长为T,实际每秒速度须乘T再填入本例参数。曲线数学上连续平滑不代表视觉上一定合适,进度条等数值若不允许回退,仍需另外限制单调性。
本例是一套可复现的游戏机制练习,不依赖具体品牌或某个软件的默认设置。修改任何边界约定、输入参数或操作顺序后,应重新推演并保存中间状态。发现差异时先定位第一处不一致,再判断是规则不同还是计算错误,不要只把最终答案调整到看起来相同。