赞
踩
在学习本篇内容之前,大家可以通过下面链接的网站可视化操作一下B样条曲线,感受它的魅力:B样条可视化。也推荐大家去听中国农业大学赵明老师在计算机图形学中讲的这块内容:B样条曲线视频讲解。本篇文章有误的地方也欢迎大家批评指正!
1972年,Gordon,Riesenfeld等人提出了B样条方法,在保留贝塞尔方法全部优点的同时,克服了贝塞尔方法的弱点。 样条(spline)——分段连续多项式
B样条曲线整条曲线用一个完整的表达形式,但内在的量是一段一段的。比如一堆的3次曲线拼接,两条之间又满足2次连续。这样既克服了波动现象,曲线又是低次的。
现在有n+1个点,每两个点之间构造一条多项式,n+1个点就有n个小区间。每个小区间构造一条三次多项式,变成了n段的三次多项式拼接在一起,段与段之间要两次连续,这就是三次样条。
若有5个点,构造一个多项式,应该是一个四次多项式。现在采用样条方式构造四段曲线,每一段都是三次的,且段与段之间要满足二阶几何连续。
其中是控制多边形的顶点。
对比贝塞尔表达式:
Bi,k(u)称为k阶(k-1次)B样条基函数,k是刻画次数的。其中k可以是2到控制点个数n+1之间的任意整数。
eg:2阶的B样条基函数,就是一次多项式,即一个直线
B样条基函数是一个称为节点矢量的非递减的参数u的序列所决定的k阶分段多项式,这个序列称为节点向量。
B样条基函数实际上就是一个比较复杂的、有特点的多项式,如何得到这个B样条基函数?
B样条基函数可以有各种各样的定义方式,但是公认的最容易理解的是de Boor-Cox递推定义。
**原理:**只要是k阶(k-1次)的B样条基函数,构造一种递推的公式,由0次构造1次,1次构造2次,2次构造3次…依次类推
定义:
该递推公式表明:若确定第i个k阶B样条Bi,k(u),需要用到ui,ui+1,…,ui+k共k+1个节点,称区间[ui,ui+k]为Bi,k(u)的支撑区间(不为0的区间)。
eg:Bi,1(u)是一阶0次B样条,根据定义得出图像:
Bi,2(u)2阶1次B样条根据递推定义得:
由 和
代入计算可得结果:
(一定要自己手推一下,看着很复杂,其实自己代入定义计算一下特别简单且有利于理解!!!)
所以,2阶一次的B样条Bi,2(u)可以由两个1阶0次的B样条Bi,1(u)和Bi+1,1(u)递推得到。
同理反着推,有两个2阶一次的B样条Bi,2(u)和Bi+1,2(u)递推得到3阶2次B样条Bi,3(u)
由B样条曲线定义式可知每个控制点pi都有一个基函数Bi,k(u)与之匹配,一共有n+1个控制点就有n+1个基函数
Bi,k(u),曲线的次数是k-1次,问题是这条曲线的定义区间是什么?(贝塞尔曲线的定义区间[0,1])以及对n+1个顶点,k阶的B样条曲线需要多少个节点向量(ui)与之匹配?
根据de Boor-Cox递推式得:
对于Bi,1(u)(1阶0次基函数)来说,涉及到ui到ui+1一个区间,即一阶的多项式涉及一个区间的两个节点;
而Bi,2(u)是由Bi,1(u)和Bi+1,1(u)组成,因此涉及到2个区间([ui,ui+1]和[ui+1,ui+2])3个节点(有一个节点重叠);
Bi,3(u)涉及3个区间4个节点…,Bi,k(u)涉及k个区间k+1个节点
因为i取值范围为[0,n],所以根据递推式可以逐步推得出k阶B样条对应的节点向量为 :
以k=4(4阶),n=4(5个控制点)为例,根据上面得出k阶B样条对应节点向量数可知本例节点矢量为:
根据B样条曲线的定义式可知:
第一项为p0B0,4(u),涉及节点u0到u4;(解释:i∈[0,n]时,k阶B样条对应的节点向量为u0,u1…,un+k,可知涉及节点为u0到un+k=0+4,且由上述Bi,k(u)涉及k个区间k+1个节点这个结论可知B0,4(u)涉及5个节点符合结论)
第二项为p1B1,4(u),涉及节点u1到u5;······
第五项为p1B1,4(u),涉及节点u4到u8
箭头对应关系为:
阶数(k)+顶点(n)=节点向量个数,求函数的定义区间?
区间要合法,区间里必须要有足够的基函数与顶点配对。(例如取u0到u1为定义区间,但次区间只有第一项涉及到这个区间,其他基函数与此区间都不相关,所以区间不合法。由图像可知,u3到u5涉及的基函数最多)
上图区间是u3到u5(从uk-1到un+1),B样条基函数严重依赖于节点向量的分布。
曲线依据定义区间被分成两段:[u3,u4]和[u4,u5]。如果有5个顶点p0,p1,p2,p3,p4,B样条是一段段过渡过去的。
p0,p1,p2,p3在区间[u3,u4]有定义,p1,p2,p3,p4在区间[u4,u5]有定义,两端之间有三个顶点是一样的,这样就保证了两段拼接效果非常好。
局部支撑性:B样条曲线在参数范围内非零,其他区间为0,;而贝塞尔曲线在整个定义区间非0
反过来,对每一个区间(ui,ui+k),至多只有k个基函数在其上非零
权性:
Bi,k(u)在r重节点处的连续阶不低于k-1-r
分段参数多项式:Bi,k(u)在每个长度非零的区间[ui,ui+1)上都是次数不高于k-1的多项式,它在整个参数轴上是分段多项式
当节点沿参数轴均匀等距分布,即ui+1-ui=常数>0时,表示均匀B样条函数
eg:{0,1,2,3,4,5,6} {0,0.2,0.4,0.6,0.8,1}
均匀B样条的基函数呈周期性。即给定n和k,所有的基函数都有相同的形状。每个后续基函数仅仅是前面基函数在新位置上的重复:
其中,△u为相邻节点值的间距
与均匀B样条曲线的差别在于两端节点具有重复度k,这样的节点矢量定义了准均匀的B样条基函数。
eg: {0,0,0,1,2,3,4,5,5,5}
均匀B样条曲线没有保留贝塞尔曲线端点的几何性质(过特征多边形首尾两个端点),采用准均匀B样条曲线可以解决这个问题
节点矢量中两端节点具有重复度k,所有内节点重复度为k-1,这样的节点矢量定义了分段的伯恩斯坦基函数
优点:
缺点:
增加了定义曲线的数据,控制顶点数以及节点数
当节点沿参数轴的分布不等距,即ui+1-ui不等于常数时,表示非均匀B样条函数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。