B-Spline曲线拟合 – Python实现
1.曲线定义
定义曲线为p阶样条曲线
给定n+1个控制点 P0,P1,...Pn
节点向量 U = {u0,u1....um},且m = n+p+1
B-Spline曲线定义如下:
N(i,p)为样条基函数
P(i)为控制顶点
参数u为参数节点,一般取0 ≤ u ≤ 1
上式为样条基函数的递推公式
2.De Boor 算法
参考文章:
https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/single-insertion.html
根据链接中的描述,B-Spline公式可以简化为以下公式:
Pi为控制顶点
ai为比例系数,由当前节点t和节点u(i) u(i+p) 计算得到
3.算法实现流程 – 3次B-Spline曲线
第一步:设置曲线次数为p=3,读取控制顶点P0,P1,...Pn,根据控制顶点得到节点向量U = {u0,u1..