obtainTouchDistance function
对应 Kotlin SpringMath.obtainTouchDistance,把阻尼位移还原为触摸位移。
还原公式为 range - range^(2/3) * (range - 3*offset)^(1/3)。
Implementation
double obtainTouchDistance(double currentPixelOffset, double range) {
var absoluteOffset = currentPixelOffset.abs();
final maximumOffset = obtainDampingDistance(1, range).abs();
if (absoluteOffset <= 0) return 0;
if (absoluteOffset >= maximumOffset) absoluteOffset = maximumOffset;
final base = range - 3 * absoluteOffset;
final signedCubeRoot = base.sign * math.pow(base.abs(), 1 / 3);
final part2 = math.pow(range, 2 / 3) * signedCubeRoot;
return range - part2;
}