interpolate method
Implementation
@override
List? interpolate(int i1, num t0, num t, num t1) {
final result = resultBuffer,
values = sampleValues,
stride = valueSize,
o1 = i1 * stride,
o0 = o1 - stride,
oP = _offsetPrev.toInt(),
oN = _offsetNext.toInt(),
wP = _weightPrev,
wN = _weightNext,
p = (t - t0) / (t1 - t0),
pp = p * p,
ppp = pp * p;
// evaluate polynomials
final sP = -wP * ppp + 2 * wP * pp - wP * p;
final s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1;
final s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p;
final sN = wN * ppp - wN * pp;
// combine data linearly
for (int i = 0; i != stride; ++i) {
result?[i] = sP * values[oP + i] +
s0 * values[o0 + i] +
s1 * values[o1 + i] +
sN * values[oN + i];
}
return result;
}