B樣條曲線曲面介紹

B樣條基函數

B樣條基函數的定義

由de Boor和Cox分別導出B樣條基函數的遞推定義,B樣條基函數可以表示爲
Ni,0(u)={1,uiu<ui+10,Ni,p(u)=uuiui+puiNi,p1(u)+ui+p+1uui+p+1ui+1Ni+1,p1(u),p>0 \begin{aligned} N_{i,0}(u) &= \begin{cases} 1 ,\quad u_i \leqslant u < u_{i+1} \\ 0 ,\quad 其他 \end{cases} \\ N_{i,p}(u) &= \dfrac{u-u_i}{u_{i+p}-u_i}N_{i,p-1}(u)+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) ,\quad p > 0 \end{aligned}
並約定0/0=00/0=0。式中pp表示B樣條的冪次,uu爲節點,下標ii爲B樣條的序號。

上式表明,任意pp次B樣條基函數可由兩個相鄰的p1p-1次B樣條基函數的線性組合構成。

B樣條基函數的性質

  • 如果u[ui,ui+p+1)u\notin\left[u_i,u_{i+p+1}\right),則Ni,p(u)=0N_{i,p}(u)=0
  • u[ui,ui+1)u\in\left[u_i,u_{i+1}\right)時,j=ipiNj,p(u)=1\sum\limits_{j=i-p}^{i}N_{j,p}(u)=1

B樣條基函數的導數

B樣條基函數的求導公式爲
Ni,p(u)=pui+puiNi,p1(u)pui+p+1ui+1Ni+1,p1(u). N^{'}_{i,p}(u)=\dfrac{p}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{p}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u).
下面通過對pp利用數學歸納法來證明求導公式。當p=1p=1時,Ni,p1(u)N_{i,p-1}(u)Ni+1,p1(u)N_{i+1,p-1}(u) 在每個節點區間內或者爲00,或者爲11,因此Ni,p(u)N^{'}_{i,p}(u) 等於1ui+1ui\dfrac{1}{u_{i+1}-u_i}或者1ui+2ui+1-\dfrac{1}{u_{i+2}-u_{i+1}}。我們假設當p1(p>1)p-1(p>1)時求導公式成立。根據求導法則(fg)=fg+fg(fg)^{'}=f^{'}g+fg^{'},對基函數
Ni,p(u)=uuiui+puiNi,p1(u)+ui+p+1uui+p+1ui+1Ni+1,p1(u) N_{i,p}(u)=\dfrac{u-u_i}{u_{i+p}-u_i}N_{i,p-1}(u)+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u)
求導,得到
Ni,p(u)=1ui+puiNi,p1(u)+uuiui+puiNi,p1(u)1ui+p+1ui+1Ni+1,p1(u)+ui+p+1uui+p+1ui+1Ni+1,p1(u)=1ui+puiNi,p1(u)1ui+p+1ui+1Ni+1,p1(u)+uuiui+pui(p1ui+p1uiNi,p2(u)p1ui+pui+1Ni+1,p2(u))+ui+p+1uui+p+1ui+1(p1ui+pui+1Ni+1,p2(u)p1ui+p+1ui+2Ni+2,p2(u))=1ui+puiNi,p1(u)1ui+p+1ui+1Ni+1,p1(u)+p1ui+puiuuiui+p1uiNi,p2(u)+p1ui+pui+1(ui+p+1uui+p+1ui+1uuiui+pui)Ni+1,p2(u)p1ui+p+1ui+1ui+p+1uui+p+1ui+2Ni+2,p2(u). \begin{aligned} N^{'}_{i,p}(u)=& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)+\dfrac{u-u_i}{u_{i+p}-u_i}N^{'}_{i,p-1}(u) \\ &-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u)+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}N^{'}_{i+1,p-1}(u) \\ =& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ &+\dfrac{u-u_i}{u_{i+p}-u_i}\left(\dfrac{p-1}{u_{i+p-1}-u_i}N_{i,p-2}(u)-\dfrac{p-1}{u_{i+p}-u_{i+1}}N_{i+1,p-2}(u)\right) \\ &+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}\left(\dfrac{p-1}{u_{i+p}-u_{i+1}}N_{i+1,p-2}(u)-\dfrac{p-1}{u_{i+p+1}-u_{i+2}}N_{i+2,p-2}(u)\right) \\ =& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ &+\dfrac{p-1}{u_{i+p}-u_i}\dfrac{u-u_i}{u_{i+p-1}-u_i}N_{i,p-2}(u) \\ &+\dfrac{p-1}{u_{i+p}-u_{i+1}}\left(\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}-\dfrac{u-u_i}{u_{i+p}-u_i}\right)N_{i+1,p-2}(u) \\ &-\dfrac{p-1}{u_{i+p+1}-u_{i+1}}\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+2}}N_{i+2,p-2}(u). \end{aligned}
由於
ui+p+1uui+p+1ui+1uuiui+pui=1+ui+p+1uui+p+1ui+1+1uuiui+pui=ui+p+1ui+1ui+p+1ui+1+ui+p+1uui+p+1ui+1+ui+puiui+puiuuiui+pui=ui+puui+puiuui+1ui+p+1ui+1. \begin{aligned} \dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}-\dfrac{u-u_i}{u_{i+p}-u_i}=& -1+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}+1-\dfrac{u-u_i}{u_{i+p}-u_i} \\ =& -\dfrac{u_{i+p+1}-u_{i+1}}{u_{i+p+1}-u_{i+1}}+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}} \\ & +\dfrac{u_{i+p}-u_i}{u_{i+p}-u_i}-\dfrac{u-u_i}{u_{i+p}-u_i} \\ =&\dfrac{u_{i+p}-u}{u_{i+p}-u_i}-\dfrac{u-u_{i+1}}{u_{i+p+1}-u_{i+1}}. \end{aligned}
於是得到
Ni,p(u)=1ui+puiNi,p1(u)1ui+p+1ui+1Ni+1,p1(u)+p1ui+pui(uuiui+p1uiNi,p2(u)+ui+puui+pui+1Ni+1,p2(u))p1ui+p+1ui+1(uui+1ui+pui+1Ni+1,p2(u)+ui+p+1uui+p+1ui+2Ni+2,p2(u))=1ui+puiNi,p1(u)1ui+p+1ui+1Ni+1,p1(u)+p1ui+puiNi,p1(u)p1ui+p+1ui+1Ni+1,p1(u)=pui+puiNi,p1(u)pui+p+1ui+1Ni+1,p1(u). \begin{aligned} N^{'}_{i,p}(u)=& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ &+\dfrac{p-1}{u_{i+p}-u_i}\left(\dfrac{u-u_i}{u_{i+p-1}-u_i}N_{i,p-2}(u)+\dfrac{u_{i+p}-u}{u_{i+p}-u_{i+1}}N_{i+1,p-2}(u)\right) \\ &-\dfrac{p-1}{u_{i+p+1}-u_{i+1}}\left(\dfrac{u-u_{i+1}}{u_{i+p}-u_{i+1}}N_{i+1,p-2}(u)+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+2}}N_{i+2,p-2}(u)\right) \\ =& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ &+\dfrac{p-1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{p-1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ =& \dfrac{p}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{p}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u). \end{aligned}
證畢。

B樣條曲線曲面

B樣條曲線的定義

pp次B樣條曲線的定義爲
P(u)=i=0nNi,p(u)Vi,aub P\left(u\right)=\sum\limits_{i=0}^{n}N_{i,p}(u)V_i,\quad a\leqslant u\leqslant b
這裏{Vi}\left\{V_i\right\}是控制點,{Ni,p(u)}\left\{N_{i,p}(u)\right\}是定義在非週期(並且非均勻)節點矢量
U={a,,ap+1,up+1,,ump1,b,,bp+1} U = \left\{ \underbrace{a,\cdots,a}_{p+1}, u_{p+1},\cdots,u_{m-p-1}, \underbrace{b,\cdots,b}_{p+1} \right\}
(包含m+1m+1個節點)上的pp次B樣條基函數。由{Vi}\left\{V_i\right\}構成的多邊形稱爲控制多邊形。

有理B樣條曲線曲面

NURBS曲線的定義

一條pp次NURBS曲線的定義爲
P(u)=i=0nNi,p(u)ωiVii=0nNi,p(u)ωi,aub P\left(u\right)=\dfrac{\sum\limits_{i=0}^{n}N_{i,p}(u)\omega_iV_i}{\sum\limits_{i=0}^{n}N_{i,p}(u)\omega_i},\quad a\leqslant u\leqslant b
這裏{Vi}\left\{V_i\right\}是控制點(它們形成控制多邊形),{ωi}\left\{\omega_i\right\}是權因子,{Ni,p(u)}\left\{N_{i,p}(u)\right\}是定義在非週期(並且非均勻)節點矢量UU上的pp次B樣條基函數。其中
U={a,,ap+1,up+1,,ump1,b,,bp+1} U = \left\{ \underbrace{a,\cdots,a}_{p+1}, u_{p+1},\cdots,u_{m-p-1}, \underbrace{b,\cdots,b}_{p+1} \right\}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章