C3.06.2Inertial deceleration curve设计研究

减速曲线决定可预期的停止位置

别名: 摩擦曲线 · coast curve · 惯性衰减

概念解释

初速定了以后,内容还要停下来。减速曲线(摩擦力模型、衰减函数)决定从 v0 到静止会走多远、用多久。人能预期“这次甩大概会停在那一带”,靠的不是看代码,而是每次同一力度对应同一段行程。曲线换了,同一肌肉记忆全部失效。

机制

常用近似是与速度成正比的阻尼,位置呈指数逼近终点;也有分段线性或带最小速度切断的曲线。指数衰减的好处是快滑先猛后软,远处细节在停前变慢,方便扫视。若衰减过慢,列表像在冰上,停点被推到很远,预期被拉断;过快则快滑退化成跟手松手即停。曲线还必须在不同刷新率和掉帧下积分稳定:用帧数当时间会让 60 Hz 与 120 Hz 上“同一甩”走不同的距离。边界处的减速还要接到回弹,否则会在最后一像素用惯性公式硬撞墙。

怎么研究

固定 v0,只换衰减参数,让人预估停止位置(在滚动前用手指指出),再量预测误差和重复性。自变量包括时间常数、是否按帧积分、列表长度。因变量为绝对误差、方向性偏差(总是估短或估长)、以及“还能不能靠甩去大致定位”的主观评分。把曲线做成不可重复的(每帧随机阻尼)作为对照,可以发现预期完全依赖稳定性,而不是依赖某一条特定公式。

边界

可预期不等于可精确:曲线再稳,也只把停点收到“那一带”,不能替代慢慢对准某一行。分页吸附会在减速中途把曲线掐掉,改成向最近档位插值,这时人预期的是档位而不是自由停点。可变帧率游戏或网页在主线程卡顿时,再漂亮的曲线也会在某一帧跳一大截,预期当场破产。

怎么落地

  • 用真实时间积分阻尼,不要用帧计数;在 60 与 120 Hz、以及故意掉帧的构建里用同一 v0 核对总行程。
  • 把时间常数调到:中等力度的甩大约走两到四屏并在停前明显变慢,而不是匀速滑出视野。
  • 请熟练用户先甩一次,再闭上眼睛凭感觉甩第二次去“大概同一个地方”。两次停点应落在相近区域。若第二次总是冲过头或总是不够,先查曲线是否按帧积分,再查 v0 估计。

延伸

  • 同组C3.06.1 抬手速度决定惯性初速 · C3.06.3 再次触摸应立即制动 · C3.06.4 惯性滚动的位置不可预测,不适合精确定位
  • 相邻C3.07 平移 · C1.11 滚轮与惯性滚动
  • 站内检索deceleration curve · friction scrolling · coast distance

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C3.06.2