matlab 里catmull rom,Catmull-Rom splines在python中

在python中有一个库或函数来从三个点计算Catmull-Rom样条曲线吗?

我最终需要的是沿着样条曲线的点的x,y坐标,只要它们沿着样条曲线始终等于给定量t(例如,样条曲线长度为3个单位,我想要x,y坐标样条长度为0,1,2和3)

没什么好激动的.我是自己写的,但是如果你发现了一些不错的东西,那么测试(或节省时间)会很棒

解决方法:

3点? Catmull-Rom定义为4个点,比如p_1 p0 p1 p2;

立方曲线从p0到p1,外点p_1和p2确定p0和p1处的斜率.

要绘制数组P中某些点的曲线,请执行以下操作:

for j in range( 1, len(P)-2 ): # skip the ends

for t in range( 10 ): # t: 0 .1 .2 .. .9

p = spline_4p( t/10, P[j-1], P[j], P[j+1], P[j+2] )

# draw p

def spline_4p( t, p_1, p0, p1, p2 ):

""" Catmull-Rom

(Ps can be numpy vectors or arrays too: colors, curves ...)

"""

# wikipedia Catmull-Rom -> Cubic_Hermite_spline

# 0 -> p0, 1 -> p1, 1/2 -> (- p_1 + 9 p0 + 9 p1 - p2) / 16

# assert 0 <= t <= 1

return (

t*((2-t)*t - 1) * p_1

+ (t*t*(3*t - 5) + 2) * p0

+ t*((4 - 3*t)*t + 1) * p1

+ (t-1)*t*t * p2 ) / 2

标签:python,math,spline

来源: https://codeday.me/bug/20190717/1485305.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值