B样条曲线

文章介绍了B样条曲线作为对Bezier曲线局限性的改进,它允许更灵活的曲线构造和局部修改。B样条曲线通过分段连续多项式实现,具有独立于顶点数的阶数,并使用非递减的节点向量定义基函数。递推的deBoor-Cox公式用于构建不同阶数的B样条基函数,确保曲线的平滑连接。
摘要由CSDN通过智能技术生成

前序文章参考Bezier曲线_迦南木的博客-CSDN博客

1.背景

Bezier曲线的不足:

        1)特征多边形的顶点数(n+1)决定了曲线的阶次n

        2)Bezier曲线的拼接也是比较麻烦

        3)不能局部修改

1972年Gordon,Riesenfeld等人提出了B样条方法,在保留Bezier方法全部优点同时,克服了Bezier曲线的缺点

采用 --------样条(spline)----------分段连续多项式

整条曲线用一个完整的表达形式,但是内在的量是一段一段的,比如一堆的3次曲线拼过去,两条之间满足2次参数连续

有n+1个点,每两点之间构造一条多项式,n+1个点有n个小区间,每个小区间构造一条三次多项式,变成了n段的三次多项式拼接在一起,段与段之间要两次连续,这就是三次样条。

2.B样条曲线定义

P(u)=\sum_{i=0}^{n}P_iB_{i,k}(u) \ \ \ \ \ u\in [u_{k-1},u_{n+1}]

P_i(i=0,1,...,n)是控制多边形的顶点

差别:

        1)伯恩斯坦基函数B_{i,k}(u)的阶数与顶点数n无关

        2)参数u的取值范围不同

B_{i,k}(u)称为k阶(k-1次)B样条基函数,k是刻画次数的。对于Bezier曲线,阶数和次数是一样的,但是B样条,阶数是次数加1

B样条基函数是一个称为节点矢量的非递减的参数u的序列所决定的k阶分段多项式,这个序列称为节点向量

B样条基函数 

B样条基函数有多种定义方式,但是最广泛使用的是de Boor-Cox递推定义

原理是,只要是k阶(k-1次)的B样条基函数,构造一种递推的公式,由0次构造1次,1次构造2次,2次构造3次,以此类推。

B_{i,1}(u)=\left\{\begin{matrix} 1 \ \ \ u_i<u<u_{i+1}\\ 0 \ \ \ otherwise \ \ \ \end{matrix}\right.

B_{i,k}(u)=\frac{(u-u_i)}{u_{i+k-1}-u_i}B_{i,k-1}(u)+\frac{u_{i+k}-u}{u_{i+k}-u_{i+1}}B_{i+1,k-1}(u)

并约定:\frac{0}{0}=0

改递推公式表明:若确定第i个k阶B样条B_{i,k}(u),需要用到u_i,u_{i+1},...,u_{i+k}共k+1个节点,称区间[u_i,u_{i+k}]B_{i,k}(u)的支撑区间

u 就是参数Bezier曲线的参数t

B_{i,1}(u)是1阶0次多项式

 B_{i,2}(u)是二阶1次多项式

B_{i,2}(u)=\frac{(u-u_i)}{u_{i+1}-u_i}B_{i,1}(u)+\frac{u_{i+2}-u}{u_{i+2}-u_{i+1}}B_{i+1,1}(u) \ \ \ \ \ \ B_{i,1}(u)=\left\{\begin{matrix} 1 \ \ \ u_i<u<u_{i+1}\\ 0 \ \ \ otherwise \ \ \ \end{matrix}\right.

 B_{i+1,1}(u)=\left\{\begin{matrix} 1 \ \ \ u_{i+1}<u<u_{i+2}\\ 0 \ \ \ otherwise \ \ \ \end{matrix}\right.

B_{i,2}(u)=\left\{\begin{matrix} \frac{u-u_i}{u_{i+1}-u_i} & u_i\leq u\leq u_{i+1}\\ \frac{u_{i+2}-u}{u_{i+2}-u_{i+1}} & u_{i+1}\leq u\leq u_{i+2}\\ 0 & otherwise \end{matrix}\right.

 一次B样条B_{i,2}(u)可由两个0次B样条B_{i,1}(u)B_{i+1,1}(u)递推得到,是他们的凸线性组合

再有两个一次B样条B_{i,2}(u)B_{i+1,2}(u)递推得到二次B样条B_{i,3}(u)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值