interpolate<T extends num> function

List<List<T>> interpolate<T extends num>(
  1. List<num> temperatures,
  2. List<T> start,
  3. List<T> end
)

Returns a sequence of vectors by interpolating between start and end.

The resulting sequence is linearly related to temperatures.

Implementation

List<List<T>> interpolate<T extends num>(
  List<num> temperatures,
  List<T> start,
  List<T> end,
) {
  final a = (start - end) / (temperatures.first - temperatures.last);
  final b = start -
      (start - end) *
          (temperatures.first / (temperatures.first - temperatures.last));
  return List<List<T>>.generate(
      temperatures.length,
      (i) => T == int
          ? (a * temperatures[i]).plus(b).toListOfInt() as List<T>
          : (a * temperatures[i]).plus(b) as List<T>);
}