首页 文章

python:平滑插值

提问于
浏览
-2

我知道如何进行线性插值,这是我现在为它构建的:http://repl.it/BBL9

我没看到的是我将如何进行平滑插值 . 我正在编码一个网格变形器,由于入点和终点过渡是突然的,我有一个问题,效果会像图像顶部的线一样被切断 . 我希望它像底部的线一样平滑:

http://i.imgur.com/XCb928D.png

所以我想将浮点数从0.0传递到1.0并返回相应的平滑插值浮点值 .

如果我不能编码它,我正在考虑做我在节点编辑器中所做的事情:拥有2个1000个样本值的数组 . 第一个数组是从0.0到0.1的线性内插值,而第二个数组是从0.0到1.0的平滑内插值 .

所以我会在线性数组中找到最接近的值,并使用相应的索引从第二个数组中分配值 . 我相信这被称为LUT ...这意味着我可以生成任何曲线插值而不知道如何计算它,而可能不会非常准确 .

如果我不能编码计算,这最后一个想法是不好的做法吗?

2 回答

  • -1

    好吧,所以我记得我之前已经在节点中做过这样的事情,所以可能会给它一个代码 . 在这里,您可以从curveFilter函数调用多条曲线 .

    curve image

    所以我传递一个正常的空间浮点数,选择一条曲线,也许是一个控制值,它返回一个正常的空间浮点数但是尊重曲线形状 .

    谢谢

    行动守则:http://repl.it/BBTY

    在使用pylab的IDE中,您可以添加以下内容以查看正在绘制的曲线:

    size = 100
    lin = [i/float(size) for i in xrange(size+1)]
    smooth = [curveFilter(x,2,2) for x in lin]
    
    import pylab
    pylab.plot(lin, smooth)
    pylab.show()
    

    我不知道这是否是最好的方法,但它在某种程度上对我有用 . 也许有更好的曲线形状,更平坦,只有在 endpoints 更光滑?

  • -2

    好吧,至少我设法做LUT,使用导出的3d文件,它为我生成平滑列表如下:
    objfile
    然后我在下面的代码中使用它,我在Blend中设置的任何标准化值返回匹配的平滑位置 .

    http://repl.it/BBMM

    这样的曲线是贝塞尔曲线?这是我正在寻找的计算吗?

相关问题