样条贝塞尔插值

时间:2016-06-01 17:40:33

标签: graphics interpolation linear-algebra spline bezier

如何使用贝塞尔样条函数插入一组给定的 n 点及其导数?

目前我正在使用一个具有函数bezierRGBA()的库(SDL_gfx),该函数根据其控制点绘制贝塞尔曲线。

我在网上搜索过,但我并不清楚如何从一组给定的点及其衍生物中获取贝塞尔控制点。

2 个答案:

答案 0 :(得分:2)

如果在每个点都有位置矢量和一阶导数矢量,则可以在两个连续点之间轻松创建三次贝塞尔曲线。将两个点表示为P0和P1,将一阶导数表示为P'0和P'1,则可以将三次贝塞尔曲线的控制点Qi(i = 0~3)表示为

Q0=P0
Q1=P'0/3 + P0
Q2=P1-P'1/3
Q3=P1

对数据点的每两个连续点(和一阶导数)重复此过程,您将得到一系列以C1方式连接的三次贝塞尔曲线。

答案 1 :(得分:0)

在贝塞尔曲线中,您有一组控制点u,它们在参数{{1}}上定义的伯恩斯坦多项式中相乘。贝塞尔曲线上的点是Q(u)= sum(i从0到d)Pi * Bi,d其中d是控制点的数量并且也确定度数。您可以查看我的网站:http://pages.cpsc.ucalgary.ca/~amahdavi/pmwiki-2.2.8/uploads/Site/last1.pdf以查看实际公式。您可以找到切线的公式以及实现Bezier曲线的有效方法(de Casteljau算法)