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

可以通过3点使用分段二次曲线 –
Dodgson, Quadratic Interpolation for Image Resampling.
你真的想做什么?

上一篇:批量改变图片像素


下一篇:如何使用python pandas从Docker容器访问CSV文件(位于pc hdd中)?