如何使用贝塞尔样条插入一组给定的n个点及其导数?
目前我正在使用一个库 (SDL_gfx),它有一个函数 bezierRGBA(),它根据其控制点绘制贝塞尔曲线。
我在网上搜索过,但我不清楚如何从一组给定的点及其衍生物中获取贝塞尔控制点。
如果每个点都有位置向量和一阶导数向量,则可以轻松地在两个连续点之间创建三次方贝塞尔曲线。将两个点表示为 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 方式连接的三次方贝塞尔曲线。
在贝塞尔曲线中,您有一组控制点P
这些控制点在参数 u
上定义的伯恩斯坦多项式中相乘。贝塞尔曲线上的一个点是 Q(u)=sum (i 从 0 到 d) Pi*Bi,d,其中 d 是控制点的数量,也决定了度数。您可以查看我的网站:http://pages.cpsc.ucalgary.ca/~amahdavi/pmwiki-2.2.8/uploads/Site/last1.pdf 以查看实际公式。您可以找到切线的公式以及实现贝塞尔曲线的有效方法(de Casteljau 算法)