LINUX.ORG.RU

scipy интерполяция


0

1

Есть гладкая кривая на плоскости, заданная набором координат. Нужно выполнить глобальную интерполяцию этой кривой и получить новые координаты, разбивающие кривую на приблизительно равные по длине части. Кривая может быть и замкнутая и разомкнутая. Тоже самое нужно сделать в пространстве.

Чтобы не изобретать велосипед, пытаюсь найти решение в 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. Может какой-нить специализированный формум знаете.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.