合并会让捏合缩放等双指手势在起始阶段失效
别名: 捏合失败 · 起始合并 · pinch onset
概念解释
捏合、旋转、两指滚动都要在手势起始几帧拿到两个稳定 id,才能记下基线距离或夹角。若两指落下时已经并成一个触点,识别器看见的是单指按下。等手指分开、斑块分裂,基线已经被污染:初始间距接近零,随后的任何分开都会被读成巨大的放大。地图、图片查看器里“刚下手就暴涨”往往是这个起始合并,不是缩放曲线写错。
机制
双指手势的第一件事是采样两指坐标、锁定变换原点。合并让这一步得不到第二坐标,识别器要么不进入捏合态,要么用单指位移去碰单击/拖动的阈值。用户的意图是缩放,系统的仲裁却把它当成拖动候选。等到分裂发生,第二 id 带着一个突然冒出来的坐标进入;若识别器此时才锁基线,基线短得不像两根手指。相对变化 Δd/d0 在 d0≈0 时爆炸,于是第一帧缩放因子离谱。有的实现选择“直到两 id 稳定 50 ms 才锁基线”,能避开爆炸,但用户会感觉捏合起手迟钝。
怎么研究
让被试从并拢落指再分开做捏合,对比从自然间距落下的控制组。自变量是起始指距、是否先接触后移动、以及识别器锁基线的策略(首帧 / 稳定窗口 / 最小间距门闩)。因变量是手势被识别为捏合还是拖动的比例、第一帧缩放因子、以及用户是否报告“一碰就放大”。把相机里的真实指距和事件里的 id 数对齐,才能证明失败发生在起始合并而不是后续跟踪丢失。
边界
已经稳定的两指再靠拢,是进行中的缩小,不是起始合并;那条路径有有效基线。系统级的辅助缩放(双击放大、按钮加减)不依赖双 id,合并伤不到它们。单指双击拖动缩放走另一套状态机,起始合并与它无关。非常大的目标上,用户习惯把两指分得很开,起始合并很少见;问题集中在手机单手捏合、儿童手、以及把缩放手势做在窄工具条里的界面。
怎么落地
- 捏合识别器设最小基线:两 id 间距低于本机合并临界的若干倍时,不锁缩放,也不把单指位移交给拖动,直到分开或超时取消。
- 给图片和地图提供加减按钮或双击放大,作为两指起始失败时的可见出路。
- 用“并拢落下再分开”作为手势 QA 的必测,而不只测从舒适间距开始的标准捏合。