B-spline Basis Functions: Computation Examples
本博客轉自前人的博客的翻譯版本,前幾章節是原來博主的翻譯內容,但是后續章節博主不在提供翻譯,后續章節我在完成相關的翻譯學習。
(原來博客網址:http://blog.csdn.net/tuqu/article/details/4749586)
原來的博主翻譯還是很好的,所以前幾章節直接借鑒參考原博主的內容。
1. 簡單節點(Simple Knots )
假設節點向量是U = { 0, 0.25, 0.5, 0.75, 1 }. 因此, m = 4 和u0 = 0, u1 = 0.25, u2 = 0.5, u3 = 0.75 及 u4 = 1。0次(degree)基函數很簡單。 它們分別是定義在節點跨度 [0,0.25,), [0.25,0.5), [0.5,0.75) 和 [0.75,1)上的N0,0(u), N1,0(u), N2,0(u)和N3,0(u) ,如下圖所示。
下表給出了所有的Ni,1(u):
接着展示這些基函數的圖形。因為內節點0.25, 0.5和0.75都是簡單的(即, k = 1) 且p = 1,有p - k + 1 = 1非零基函數和三個節點。 而且, N0,1(u), N1,1(u) 和 N2,1(u)在節點0.25, 0.5 和 0.75分別是C0 連續的。
從Ni,1(u)可計算2次基函數。因此m = 4, p = 2, 和 m = n + p + 1,我們有n = 1所以只有兩個2次基函數:N0,2(u)和 N1,2(u). 結果見下表:
下圖顯示了兩個基函數。三條垂直藍線表示節點位置。注意每個基函數是三個2次曲線段的組合曲線。例如, N0,2(u) 是綠色曲線,其是定義在[0,0.25), [0.25, 0.5) 和 [0.5,0.75)上的三個拋物線的聯合。這些曲線段連接在一起形成一個光滑的鍾形。請驗證 N0,2(u,) (resp., N1,2(u)) 在節點 0.25 和 0.5 (resp., 0.5 和 0.75)是 C1 連續的。如前頁所提到的,在節點處,這個復合曲線是C1 連續的。
2. 帶正重復度的節點
如果一個節點向量包含有正重復度的節點,我們會遇到 0/0的情況,后面會遇到。因此我們定義 0/0 等於0。 幸運的是,這只用於手工計算的情況。對計算機實現,有個有效的算法,不受這個問題影響。如果ui 是重復度 k 的節點(即ui = ui+1 = ... = ui+k-1), 那么節點區間[ui,ui+1), [ui+1,ui+2), ..., [ui+k-2,ui+k-1) 不存在,結果是,Ni,0(u), Ni+1,0(u), ..., Ni+k-1,0(u) 都是零函數。
考慮節點向量 U = { 0, 0, 0, 0.3, 0.5, 0.5, 0.6, 1, 1, 1 }. 因此,0 和1 是重復度3 (即, 0(3)和 1(3)) 而 0.5 是重復度2 (即, 0.5(2)). 結果是, m = 9而節點分配是
現在計算 Ni,0(u)。 注意因為 m = 9 且 p = 0 ( 0 次基函數), 我們有n = m - p - 1 = 8。如下表所示,只有四個0次非零基函數: N2,0(u), N3,0(u), N5,0(u) 和 N6,0(u).
然后,我們繼續計算1次基函數。因為 p 為 1, n = m - p - 1 = 7. 下表顯示了結果:
下圖顯示了這些基函數的圖形。
讓我們看一個特別的計算,比如N1,1(u). 。它使用下式計算的:
將u1 = u2 = 0 和 u3 = 0.3 代入這個方程產生下式:
因為 N1,0(u) 到處為零,第一項是0/0 因此被定義為零。因而,只有第二項對結果有影響。因為 N2,0(u) 在 [0,0.3)上是1, N1,1(u) 在 [0,0.3)上是1 - (10/3)u 。
接着,讓我們計算所有的Ni,2(u)。因為 p = 2, 我們有 n = m - p - 1 = 6。下表包含了所有的Ni,2(u):
下圖顯示了所有2次基函數。
讓我們選一個典型的計算作為例子,如N3,2(u)。計算式是下式:
代入 u3 = 0.3, u4 = u5 = 0.5 和 u6 = 0.6得到
因為 N3,1(u) 在 [0.3, 0.5)上非零且等於5u - 1.5,(5u - 1.5)2 是N3,2(u) 在[0.3, 0.5)上的非零部分。因為N4,1(u) 在 [0.5, 0.6)上非零且等於6 - 10u, (6 - 10u)2 是 N3,2(u) 在[0.5, 0.6)上的非零部分。
讓我們研究在節點0.5(2)處的連續問題。因為它的重復度是2 且這些基函數的次數是 2, 基函數 N3,2(u) 在0.5(2)處是C0 連續的。這就是為什么N3,2(u) 在0.5(2)處有個尖銳的角。對不在兩個端點處的節點,例如 0.3,保持了 C1 連續性因為它們都是簡單節點。
和N3,0(u) ,如下圖所示。