Contact splitting can produce a sudden coordinate jump
Aliases: contact split · coordinate jump · split discontinuity
What it is
During a merge the single id sits between the two fingers. When firmware tears the blob in two, the old id may be re-anchored onto one finger while a second id appears. The app sees the old trail translate by half a finger span in one frame, and a new trail materialize some distance away. That is a split jump. The fingers did not teleport; identifiers and centroids were reassigned at the segmentation instant.
Why it happens
When one connected component becomes two, the tracker must associate data: which new blob inherits the old id. A common rule is “nearest to last frame’s coordinate inherits,” so the old id leaps from the midpoint onto a fingertip. Velocity from consecutive-frame differencing reads that leap as a metres-per-second pulse, which kicks fling, inertia, and stroke width. The new id’s begin is not at a screen edge but beside the other finger, so code that hit-tests begin position lights a control the user never pressed. If association swaps heirs across frames, ids trade places and the two trails cross in an X.
Studying it
Open two probes slowly from a merged gap. Align high-speed video with per-frame id coordinates. Independent variables are opening speed, finger orientation relative to the screen, and old-id inheritance policy if logs reveal it. Dependent measures are old-id displacement on the split frame, where the new id appears, peak velocity pulse, and whether ids swap. Feed the same jump into a drawing app and a scrolling app to see whether ink spikes and whether a list inherits a ghost fling. Do not baseline on already-separated fingers—those have no split frame.
Where it stops holding
Fingers that stay far apart and then move have no merge phase and therefore no split jump. A stylus emerging from palm rejection is a different id assignment with a different jump shape. Some firmware cancels the old id and opens two new ones on split, so the app receives cancel plus two begins rather than a kinked trail; treating that as ordinary movement is worse. Predictive rendering that extrapolates from the split-frame velocity enlarges the spike into a streak of wrong ink; drawing the raw point for that frame only is safer.
Applying it
- Zero or discard speed and acceleration on the frame where id count goes from 1 to 2; do not feed split displacement into inertia or stroke width.
- If a new id’s begin sits next to a newly split old id, do not hit-test it as a button for a few milliseconds until it is clearly tracking a finger.
- Break a drawing stroke at the split frame (lift then land) so one path cannot sprout a spike; tag split frames in the log for replay.
Related
- Same group: C2.19.1 Nearby fingers can be merged into a single reported contact · C2.19.2 Merged contacts disable pinch gestures at onset · C2.19.4 Split thresholds depend on sensor precision and contact area
- Nearby: C2.16 Touch event models and cancel events · C3.06 Fling and inertia
- Search terms:
contact split·identity swap·velocity spike