C3.06.2Inertial deceleration curve设计研究
减速曲线决定可预期的停止位置
别名: 摩擦曲线 · coast curve · 惯性衰减
概念解释
初速定了以后,内容还要停下来。减速曲线(摩擦力模型、衰减函数)决定从 v0 到静止会走多远、用多久。人能预期“这次甩大概会停在那一带”,靠的不是看代码,而是每次同一力度对应同一段行程。曲线换了,同一肌肉记忆全部失效。
机制
常用近似是与速度成正比的阻尼,位置呈指数逼近终点;也有分段线性或带最小速度切断的曲线。指数衰减的好处是快滑先猛后软,远处细节在停前变慢,方便扫视。若衰减过慢,列表像在冰上,停点被推到很远,预期被拉断;过快则快滑退化成跟手松手即停。曲线还必须在不同刷新率和掉帧下积分稳定:用帧数当时间会让 60 Hz 与 120 Hz 上“同一甩”走不同的距离。边界处的减速还要接到回弹,否则会在最后一像素用惯性公式硬撞墙。
怎么研究
固定 v0,只换衰减参数,让人预估停止位置(在滚动前用手指指出),再量预测误差和重复性。自变量包括时间常数、是否按帧积分、列表长度。因变量为绝对误差、方向性偏差(总是估短或估长)、以及“还能不能靠甩去大致定位”的主观评分。把曲线做成不可重复的(每帧随机阻尼)作为对照,可以发现预期完全依赖稳定性,而不是依赖某一条特定公式。
边界
可预期不等于可精确:曲线再稳,也只把停点收到“那一带”,不能替代慢慢对准某一行。分页吸附会在减速中途把曲线掐掉,改成向最近档位插值,这时人预期的是档位而不是自由停点。可变帧率游戏或网页在主线程卡顿时,再漂亮的曲线也会在某一帧跳一大截,预期当场破产。
怎么落地
- 用真实时间积分阻尼,不要用帧计数;在 60 与 120 Hz、以及故意掉帧的构建里用同一
v0核对总行程。 - 把时间常数调到:中等力度的甩大约走两到四屏并在停前明显变慢,而不是匀速滑出视野。
- 请熟练用户先甩一次,再闭上眼睛凭感觉甩第二次去“大概同一个地方”。两次停点应落在相近区域。若第二次总是冲过头或总是不够,先查曲线是否按帧积分,再查
v0估计。