B样条基函数
B样条基函数的定义
由de Boor和Cox分别导出B样条基函数的递推定义,B样条基函数可以表示为
Ni,0(u)Ni,p(u)={1,ui⩽u<ui+10,其他=ui+p−uiu−uiNi,p−1(u)+ui+p+1−ui+1ui+p+1−uNi+1,p−1(u),p>0
并约定0/0=0。式中p表示B样条的幂次,u为节点,下标i为B样条的序号。
上式表明,任意p次B样条基函数可由两个相邻的p−1次B样条基函数的线性组合构成。
B样条基函数的性质
- 如果u∈/[ui,ui+p+1),则Ni,p(u)=0。
- 当u∈[ui,ui+1)时,j=i−p∑iNj,p(u)=1。
B样条基函数的导数
B样条基函数的求导公式为
Ni,p′(u)=ui+p−uipNi,p−1(u)−ui+p+1−ui+1pNi+1,p−1(u).
下面通过对p利用数学归纳法来证明求导公式。当p=1时,Ni,p−1(u) 和Ni+1,p−1(u) 在每个节点区间内或者为0,或者为1,因此Ni,p′(u) 等于ui+1−ui1或者−ui+2−ui+11。我们假设当p−1(p>1)时求导公式成立。根据求导法则(fg)′=f′g+fg′,对基函数
Ni,p(u)=ui+p−uiu−uiNi,p−1(u)+ui+p+1−ui+1ui+p+1−uNi+1,p−1(u)
求导,得到
Ni,p′(u)===ui+p−ui1Ni,p−1(u)+ui+p−uiu−uiNi,p−1′(u)−ui+p+1−ui+11Ni+1,p−1(u)+ui+p+1−ui+1ui+p+1−uNi+1,p−1′(u)ui+p−ui1Ni,p−1(u)−ui+p+1−ui+11Ni+1,p−1(u)+ui+p−uiu−ui(ui+p−1−uip−1Ni,p−2(u)−ui+p−ui+1p−1Ni+1,p−2(u))+ui+p+1−ui+1ui+p+1−u(ui+p−ui+1p−1Ni+1,p−2(u)−ui+p+1−ui+2p−1Ni+2,p−2(u))ui+p−ui1Ni,p−1(u)−ui+p+1−ui+11Ni+1,p−1(u)+ui+p−uip−1ui+p−1−uiu−uiNi,p−2(u)+ui+p−ui+1p−1(ui+p+1−ui+1ui+p+1−u−ui+p−uiu−ui)Ni+1,p−2(u)−ui+p+1−ui+1p−1ui+p+1−ui+2ui+p+1−uNi+2,p−2(u).
由于
ui+p+1−ui+1ui+p+1−u−ui+p−uiu−ui===−1+ui+p+1−ui+1ui+p+1−u+1−ui+p−uiu−ui−ui+p+1−ui+1ui+p+1−ui+1+ui+p+1−ui+1ui+p+1−u+ui+p−uiui+p−ui−ui+p−uiu−uiui+p−uiui+p−u−ui+p+1−ui+1u−ui+1.
于是得到
Ni,p′(u)===ui+p−ui1Ni,p−1(u)−ui+p+1−ui+11Ni+1,p−1(u)+ui+p−uip−1(ui+p−1−uiu−uiNi,p−2(u)+ui+p−ui+1ui+p−uNi+1,p−2(u))−ui+p+1−ui+1p−1(ui+p−ui+1u−ui+1Ni+1,p−2(u)+ui+p+1−ui+2ui+p+1−uNi+2,p−2(u))ui+p−ui1Ni,p−1(u)−ui+p+1−ui+11Ni+1,p−1(u)+ui+p−uip−1Ni,p−1(u)−ui+p+1−ui+1p−1Ni+1,p−1(u)ui+p−uipNi,p−1(u)−ui+p+1−ui+1pNi+1,p−1(u).
证毕。
B样条曲线曲面
B样条曲线的定义
p次B样条曲线的定义为
P(u)=i=0∑nNi,p(u)Vi,a⩽u⩽b
这里{Vi}是控制点,{Ni,p(u)}是定义在非周期(并且非均匀)节点矢量
U=⎩⎨⎧p+1a,⋯,a,up+1,⋯,um−p−1,p+1b,⋯,b⎭⎬⎫
(包含m+1个节点)上的p次B样条基函数。由{Vi}构成的多边形称为控制多边形。
有理B样条曲线曲面
NURBS曲线的定义
一条p次NURBS曲线的定义为
P(u)=i=0∑nNi,p(u)ωii=0∑nNi,p(u)ωiVi,a⩽u⩽b
这里{Vi}是控制点(它们形成控制多边形),{ωi}是权因子,{Ni,p(u)}是定义在非周期(并且非均匀)节点矢量U上的p次B样条基函数。其中
U=⎩⎨⎧p+1a,⋯,a,up+1,⋯,um−p−1,p+1b,⋯,b⎭⎬⎫