贝塞尔曲线与Matplotlib
你好,
我正在从这个网址开始学习:http://matplotlib.sourceforge.net/users/path_tutorial.html。我想找一个函数,可以以固定的采样率获取所有的贝塞尔曲线点。
我想要的功能大概是这样的:
interpolate(t, samplingrate)
这里的 t 是曲线的参数,范围在 0 到 1 之间,采样率就是返回的点的列表长度。
在手册页面 http://matplotlib.sourceforge.net/api/path_api.html?highlight=bezier 和通过一些 dir() 调用,我没有找到任何有用的东西。
有人能帮帮我吗?
1 个回答
3
Path对象并不保存贝塞尔曲线上的所有点,它只保存了它需要的最基本参数。自己写一个函数应该不难。可以参考一下维基百科上的公式,写个类似的。
def quadBrezPoints(P0, P2, P1, nSamples):
ans = numpy.zeros((nSamples,2))
for i in xrange(nSamples):
t = (i+0.0)/nSamples
ans[i,0] = (1-t)**2 * P0[0] + 2*(1-t)*P1[0] + t**2 * P2[0]
ans[i,1] = (1-t)**2 * P0[1] + 2*(1-t)*P1[1] + t**2 * P2[1]
return ans
如果你想要n阶贝塞尔曲线,只需要修改一下这个函数就可以了。