Достигается это следующим образом: между каждыми двумя точками функция интерполируется кубической параболой (то есть, полиномом третьей степени, вида P(x) = a*x^3+b*x^2+c*x+d), причем функция подбирается так, чтобы на концах отрезка (как раз в точках задания значений) совпадали с какими-то заранее заданными числами и сами значения функции, и значения производной. Совпадение самих значений функции требуется для непрерывности получаемой приближающей функции, а совпадение значений производной - для непрерывности производной, то есть для "гладкости" приближающей функции. Таким образом, результат интерполяции у нас получается составленным не из прямых, как при кусочно-линейной интерполяции, а из "сшитых" кусков разных кубических парабол. Причем эта кривая получается еще и гладкой, так как мы "сшиваем" не только сами значения функции, но и значения ее производной.
Пусть на концах отрезка "локального" времени [0,1] заданы значения функции p1, p2 и значения производной r1, r2. Приближающая функция - кубическая, то есть
f(t) = a*t^3 + b*t^2 + c*t + d,
f'(t) = 3*a*t^2 + 2*b*t + c,
откуда и получаем:
f(0) = p1,
f(1) = p2,
f'(0) = r1,
f'(1) = r2,
d = p1,
a + b + c + d = p2,
c = r1,
3*a + 2*b + c = r2.
Решив эту систему уравнений, получаем:
a = 2*p1 - 2*p2 + r1 + r2,
b = -3*p1 + 3*p2 - 2*r1 -r2,
c = r1,
d = p1,
отсюда
f(t) = (2*p1 - 2*p2 + r1 + r2) * t^3 +
(-3*p1 + 3*p2 - 2*r1 - r2) * t^2 + r1 * t + p1,
или, что равносильно,
f(t) = p1 * (2*t^3 - 3*t^2 + 1) + r1 * (t^3 - 2*t^2 + t) +
p2 * (-2*t^3 + 3*t^2) + r2 * (t^3 - t^2).
Подставляем сюда значения интерполируемой величины в начале и конце отрезка (p1 и p2), желаемые значения производных в начале и конце отрезка (r1 и r2), локальное время для отрезка интерполяции t, и получаем интерполированное значение функции в любой точке отрезка - кусок кубической параболы, который проходит через точки (0,p1), (1,p2) и имеет в точках t=0 и t=1 производные r1 и r2 соответственно.
Осталось выяснить, откуда брать значения производных r1, r2.