Skip to content

外缘旋转切页

外缘旋转切页 GIF

把物理表圈变成页面导航

指针在 r≥185 的外缘起手后,累计切向旋转每达到 45° 提交一个 detent。一次长拖可以跨多页,视觉弧保留未满一格的 residual。

捕获规则

  • 466×466 圆心为 (233,233)
  • r ≥ 185 可以开始 edge rotation;这给表圈内侧留出约 48 px 宽容区。
  • 起手后外缘事务优先于页面主动作,不因途中进入中心而退化成点击。
  • 总移动达到 12 px 后 tap 取消永久锁存。

Detent 累计

每个 pointer move 计算相邻极角的 signed delta,累加到 residual;达到 ±π/4 就提交一次页面切换并扣除一格,循环处理,所以单个样本也能跨多个 detent。

ts
while (abs(residual) >= PI / 4) {
  switchPage(sign(residual))
  residual -= sign(residual) * PI / 4
}

离环重入

离开有效 annulus 时把事务标记为 rebasePending。重新进入的第一个点只更新参考角,不施加 delta;否则穿过圆心或从屏外回来会被极角跳变解释成近 π 的旋转。

反馈

代码绘制蓝色结构弧、黄色当前 detent 与红色尾迹;每跨一格可以播放短音/触感(板上无振动马达,因此实体只保留音频与视觉)。不足一格的拖动只回弹,不执行页面主动作。