Если вы хотите решить общую проблему, вы можете использовать оптимизацию levenberg-marquardt ( LM ).
Вы хотите определить кривую Безье с небольшим количеством точек.Вы используете LM для оптимизации параметров кривой (местоположения точек) путем минимизации квадрата расстояния до кривой для всех ваших точек.Это ваша целевая функция , сумма квадратов расстояний.
Хитрость заключается в вычислении градиента и гессиана для LM.Вы можете сделать это численно, не занимаясь математикой.Используйте численное дифференцирование , чтобы вычислить якобиан (J), который вы используете, чтобы найти градиент.(Якобиан также используется LM для аппроксимации гессиана.)
Матти упомянул GSL для сглаживания сплайнов.Я не знал о GSL, но оказалось, что в нем есть реализации LM и численного дифференцирования.