interpolateDiscrete function Value interpolation

Object? Function(num) interpolateDiscrete(
  1. List<Object?> values
)

Returns a discrete interpolator for the given list of values.

The returned interpolator maps t in [0, 1 / n) to values[0], t in [1 / n, 2 / n) to values[1], and so on, where n = values.length. In effect, this is a lightweight quantize scale with a fixed domain of [0, 1].

Implementation

Object? Function(num) interpolateDiscrete(List<Object?> values) {
  var n = values.length;
  return (t) {
    if (t.isNaN) return null;
    return values.elementAtOrNull(max(0, min(n - 1, (t * n).floor())));
  };
}