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