double snap(double v) { if (v.abs() < _snapEpsilon) return 0.0; final nv = v * _snapMultiplier; final r = nv.roundToDouble(); if ((nv - r).abs() < _snapEpsilon) return r / _snapMultiplier; return v; }