Нет, извините, код вы напишете сами, однако соображения следующие. (Я туманно написал, это правда)
Будем задавать траекторию в виде
, где
--- это такой параметр. Будем считать, что точки у вас параметрические
, а вы знаете в них значения
. Попробуем построить пространственный сплайн покоординатным методом. Для этого мы рассмотрим отдельно, скажем, координату
.
Обозначим кубический полином, центрированный на
и проводимый через соседние две точки
и
, как
; он задается, как
Обозначим
,
(концы отрезка, соответствующие
-му полиному).
Наложим условия непрерывности на концах:
Такие же условия на производные -- ещё одно уравнение. Такие же условия на вторые производные (сиречь кривизны) -- третье уравнение.
В точке
, это четвёртое уравнение. Если сплайн, скажем, состоит из двух полиномов, то
в их общей точке три уравнения непрерывности это общие для них уравнения, условие интерполяции в ней это четвёртое, плюс ещё по два для внутренней точки каждого полинома, всего шесть уравнений (а коэффициентов восемь), так что придётся дописать ещё два уравнения для концов,
чтобы замкнуть систему уравнений для коэффициентов сплайна.
Это каноническое построение сплайна
вы используете для движения в поворотах. Когда вы выходите на длинный прямой участок, вам нужна аппроксимация, которая:
1) обеспечивает непрерывность между конечными точками сплайна;
2) обеспечивает непрерывность первых производных (скоростей по сути) (если вы аппроксимируете траекторию механического тела, то это естественное требование)
3) собственно, аппроксимирует данные.
Условие непрерывности на каждом конце два уравнения, непрерывности производных ещё по два, и остальные степени свободы в вашем распоряжении. Но непрерывность самой функции со сплайном вы, допустим, запишете легко (там понятно, чему должны быть равны сами функции).
Как быть с непрерывностью производных, ведь сплайн ещё не замкнут? С одной стороны, уравнение на непрерывность производных с обоих концов сплайна вы можете записать, тогда сплайн замкнётся. С другой стороны, сами значения производных вам станут известны только тогда, когда вы сделаете аппроксимацию. Один из возможных путей --- вы её сначала делаете, потом записываете на листочек значения производной в концах (допустим,
и
, потом накладываете это в качестве условия
,
) ну и т. д. Но это не единственный метод.
Подумайте об этом сначала; код это меньшая из проблем.