Есть гладкая кривая на плоскости, заданная набором координат. Нужно выполнить глобальную интерполяцию этой кривой и получить новые координаты, разбивающие кривую на приблизительно равные по длине части. Кривая может быть и замкнутая и разомкнутая. Тоже самое нужно сделать в пространстве.
Чтобы не изобретать велосипед, пытаюсь найти решение в scipy. Есть интересная функция scipy.interpolate.splprep (как я понял находит B-сплайны для N-мерных кривых «Find the B-spline representation of an N-dimensional curve», т.е. и на плоскости и в пространстве будут работать) и удалось частично понять как сработать на плоскости
tt=numpy.linspace(numpy.pi,-numpy.pi,N+1,endpoint=True)
X[:,0]=numpy.cos(tt)
X[:,1]=numpy.sin(tt)
...
if is_interpolate:
tck,u = interpolate.splprep([X[:,0],X[:,1]],k=3,s=0)
unew=numpy.linspace(1.0,0.0,nt+1,endpoint=True)
out = interpolate.splev(unew,tck)
Но я застрял, возникло много вопросов. Как передать этой функции информацию о том что кривая замкнута, разомкнута и условия на концах? Можно ли от параметра unew=[1..0] перейти к длине дуги. Вообще, как быть с пространственной поверхностью (работать с кривыми или сразу с поверхностями)?
Прошу поделится опытом и может знаете какие-нибуть ссылки на статьи, книжки, которые помогут понять работу splprep. Может какой-нить специализированный формум знаете.