Дайте мне посмотреть, понимаю ли я вас: вам нужна интерполяционная кривая Безье, проходящая через заданный набор точек P0 P1 ...
, но нарисованная в виде кривых Безье, с функцией, подобной
bezier4( nstep, Pj, Cj, Dj, Pj+1 ) -- control points Cj, Dj
То есть вы хотите получить две контрольные точки Безье Cj, Dj для каждой фигуры Pj - Pj + 1?
Один из способов получения таких контрольных точек - использовать полиномиальную основу Бернштейна
b0(t) = (1-t)^3
b1(t) = 3 (1-t)^2 t,
b2(t) = 3 (1-t) t^2
b3(t) = t^3
bezier4(t) = b0(t) P0 + b1(t) C0 + b2(t) D0 + b3(t) P1
= P0 at t=0, tangent --> C0
= P1 at t=1, tangent <-- D0
и найдите или извлеките интерполирующий сплайн Catmull-Rom, который проходит через P-1 P0 P1 P2:
b0(t) P0
+ b1(t) (P0 + (P1 - P-1) / 6)
+ b2(t) (P1 - (P2 - P0) / 6)
+ b3(t) P1
= P0 at t=0, P1 at t=1
Мы хотим, чтобы bezier4 (t) была точно такой же кривой, как CatmullRom(t), поэтому:
C0 = P0 + (P1 - P-1) / 6
D0 = P1 - (P2 - P0) / 6
Учитывая N точек P0 P1 ... (в 2d 3d ... anyd), берите их по 4 за раз;для каждых 4 эта формула дает вам 2 контрольные точки Cj, Dj для
bezier4( nstep, Pj, Cj, Dj, Pj+1 )
Имеет ли это смысл, это то, что вы хотите?
(Для награды я бы покачал немного Python /Numpy вместе.)