爲了保留bezier方法的優點,B樣條曲線的方程定義爲:
與bezier曲線的最顯著的區別:
- B樣條的基函數爲k階,也就是說多項式的次數與控制多邊形頂點數沒有關係
- 參數的取值是 u(k-1) 到 u(n+1)
k是刻畫次數的,其中k可以2到控制點個數n+1之間的任意整數
(對bezier曲線來說階數和次數一樣,但對於B樣條,階數是次數+1)
B樣條的基函數實際上就是一個多項式,得到這個基函數有多種定義方法,常用的是de Boor-Cox遞推公式
de Boor-Cox
原理:只要是k階的B樣條基函數,構造一種遞推的公式,由0次構造1次,1次構造2次,2次構造3次,,依次類推
即:
(爲避免出現分子分母都爲0的情況,約定 0/0 = 0 )
1階的B樣條基函數是0次多項式(一個常數)
2階B樣條是由兩個1階的基函數線性組合而成的:
一次B樣條可以由兩個0次B樣條和得到,是他們的凸線性組合,根據推導可知在不同的支撐區間內的取值是不同的:
3階B樣條是由兩個2階的基函數線性組合而成的:
形狀像拋物線,是個二次的多項式
…
每個pi都有一個與之匹配,存在n+1個,曲線的次數是k-1次,這條曲線的定義區間是一組向量:
因爲對於1階0次基函數,涉及一個區間兩個節點
所以對於由兩個1階基函數組成的2階基函數就涉及兩個區間三個節點,3階基函數涉及三個區間四個節點,涉及K個區間k+1個節點
因爲最多有n+1個控制點,所以涉及的對應向量有:
階數+頂點 = 節點向量的個數。同時,區間要合法,區間裏必須要有足夠的基函數和頂點配對。可以根據配對的情況來尋找有意義的區間(B樣條基函數嚴重依賴於節點向量的分佈)
B樣條曲線類型的劃分
曲線按照其首尾端點是否重合,分爲閉曲線和開曲線,閉曲線又分爲週期和非週期兩種,週期閉曲線與非週期閉曲線的區別是:前者在首末端點是C2連續的,而後者一般C2連續。非週期閉合曲線可以看成是開曲線的特例(按開曲線處理)
B樣條曲線按其節點矢量中節點的分佈情況可以劃分四種
1) 均勻B樣條曲線
節點矢量中節點爲沿參數軸均勻或等距分佈
2)準均勻B樣條曲線
與均勻B樣條曲線的差別在於兩端結點具有重複度k,這樣的節點矢量定義了準均勻B樣條基
3)分段bezier曲線
B樣條曲線用分段bezier曲線表示後,各曲線段擁有了想懟的獨立性,移動曲線段內的一個控制頂點指揮影響該曲線段的形狀而對其他曲線段的形狀沒有改變,並且bezier曲線的算法可以被使用
4)非均勻B樣條曲線
只要節點矢量在數學上成立,可以任意分佈