天天看點

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

              B-spline Curves: Important Properties

        B-樣條曲線有很多與貝塞爾曲線一樣的重要性質,因為前者是後者的推廣。而且,B-樣條曲線有比貝塞爾曲線更渴望的性質。下面列出B-樣條曲線一些最重要的性質。

  接下來我們假設一個由n + 1 控制點和一個節點向量U = { u0, u1, ...., um } 定義的 p次B-樣條曲線C(u),其中頭p+1個和最後 p+1個節點是 "clamped" (即,u0 = u1 = ... = up 和 um-p = um-p+1 = ... = um).

(1) 1.  B-樣條曲線是個逐段曲線,每個分量是p次曲線。

  如前頁提到的, C(u) 可看作是定義在每個節點區間的曲線段的聯合。在下圖中,其中n = 10, m = 14 和 p = 3, 頭四個節點和最後四個節點是clamped而中間7個節點上均勻分布的。有8個節點區間,每個對應于一個曲線段。在下面左圖,這些節點點以三角形标示。

  這個良好性質使得我們可以以更低次多項式來設計複雜形狀。例如,下面右圖顯示了相同控制點的貝塞爾曲線。即使在其次數達到10仍然不能很好逼近控制折線 (polyline)!

  

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

  一般,次數越低,B-樣條曲線越逼近它的控制折線(polyline)。下圖都使用相同的控制折線(polyline)且節點是 clamped且 均勻分布。 第一個圖是7次,中間的是5次而右圖是3次。是以,當次數減小,産生的B-樣條曲線越接近它的控制折線(polyline)。

  

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties
B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties
B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

(2) 等式 m = n + p + 1必須滿足。

  由于每個控制點需要一個基函數且基函數數目滿足 m = n + p + 1。

(3) Clamped B-樣條曲線C(u)通過首尾兩個控制點 P0 和Pn 。

  注意基函數N0,p(u) 是控制點 P0 的系數且在[u0,up+1)上非零因為對于一個clamped B-樣條曲線有 u0 = u1 = ... = up = 0, N0,0(u), N1,0(u), ...., Np-1,0(u)為零且隻有 Np,0(u)是非零(回憶三角計算格式) 是以,如果u = 0,那麼N0,p(0)是1且C(0) = P0。相似地可得到C(1) = Pn 。

(4) 樣條曲線包含在控制折線(ployline)的凸包内。更特别地,如果u 在節點區間[ui,ui+1)裡,那麼C(u)在控制點Pi-p, Pi-p+1, ..., Pi的凸包裡。

  如果u 在節點區間 [ui, ui+1)裡,那麼隻有p+1 個基函數(即,Ni,p(u), ... , Ni-p+1,p(u), Ni-p,p(u))在該節點區間非零。因為 Nk,p(u) 是控制點 Pk的系數,隻有 p+1個控制點 Pi, Pi-1, Pi-2, .., Pi-p 有非零系數。因為在該節點區間上的基函數非零且累加和為 1,它們的“權重”平均( "weighted" average), C(u), 必須位于由控制點 Pi, Pi-1, Pi-2, .., Pi-p定義的凸包内。 “強”的意思是當 C(u) 仍位于由所有控制點定義的凸包内,它位于更小的裡面。 

  

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties
B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

  上面兩個 B-樣條曲線有11個控制點(即,n = 10), 3次 (即, p=3)  及15 個節點 (m = 14),其中頭四個和最後四個節點 是 clamped。是以,節點區間的數目等于曲線段的數目。節點向量是

  

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

  左圖有u 在節點區間 [u4, u5) = [0.12,0.25)上且相應的點(即 C(u))在第二條曲線段上。是以,有p+1 = 4 個基函數在給節點區間(即,N4,3(u), N3,3(u), N2,3(u) 和 N1,3(u) )上非零且相應的控制點是P4, P3, P2 and P1。陰影部分是由這四個點定義的凸包。很清楚C(u) 位于凸包内。

  右圖的B-樣條曲線同樣方式定義。 但是,u 是在[u9, u10) = [0.75,0.87)上且非零基函數是N9,3(u), N8,3(u), N7,3(u) 和N6,3(u)。 相應的控制點是 P9, P8, P7 和 P6。

  是以,當  u 從 0移到1并越過一個節點時,一個基函數變為零而一個新的非零基函數開始有效。結果是,系數變為零的控制點會離開目前凸包的定義而被一個新的系數變為非零的控制點所代替。

(5) Pi 隻影響在區間[ui, ui+p+1)上的曲線 C(u)。

  這是從B-樣條基函數的一個重要性質得到。回憶Ni,p(u) 在區間[ui, ui+p+1)上非零。. 如果u不在該區間, Ni,p(u)Pi 在計算computing C(u)時沒有作用因為 Ni,p(u)是零。另一方面,如果u是訓示的區間, Ni,p(u) 非零。如果 Pi 改變它的位置, Ni,p(u)Pi 被改變導緻C(u)被改變。

  

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties
B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

  上面B-樣條曲線以在前面凸包例子一樣的參數定義。我們想移動控制點P2 。控制點的系數是N2,3(u) 且有非零系數在其上的區間是 [u2, u2+3+1) = [u2, u6) = [0,0.37)。因為 u2 = u3 = 0,隻有三段被影響,分别是對應 u3, u4) 的(第一個曲線段的定義域), [u4, u5) (第二個曲線段的定義域) 和[u5,u6) (第三個曲線段的定義域) 。右圖顯示的是移動 P2 到右下角的結果。正如你看到的,隻有第一,第二和第三曲線段改變了形狀而剩餘其他曲線段保持在原來位置沒有改變。

  局部修改方案對曲線設計非常重要,因為我們可以局部修改曲線而不需全局改變形狀。這将在moeing control point 頁詳細說明。而且,如果需要更精細調整曲線形狀,可以插入更多節點(因而更多控制點)以至于被影響的區域被限制在很窄區域。以後我們會談到節點插入。

(6) C(u) 在重複度 k 的節點上是Cp-k 連續的

  如果 u 不是一個節點, C(u) 是p 次曲線段的中部因而是無限可微的。如果 u 是在 Ni,p(u)的非零定義域中的一個節點,既然後者是Cp-k 連續的,C(u)也一樣。

  

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

  上圖B-樣條曲線有18個控制點 (即, n = 17),  4次(degree),clamped節點向量如下

  

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

  是以, u6 是一個雙重節點, u9是一個三重節點而u13 是一個四重節點。是以, C(u) 在不是節點的任何點是 C4 連續的,在所有簡單節點處 C3 連續的,在 u6是C2 連續的,在u9 是 C1連續的,在u13是 C0 連續的。

  在曲線上與節點相對應的所有點用小三角标記。那些對應于多重節點的點用圓和重複度标記。要可視化 C4, C 3 和甚至C2 連續性之間的差别是很困難的。對 C1 情況,相應的點位于一條邊(leg)上,而 C0 情況迫使曲線通過一個控制點。我們會在後面讨論修改節點時傳回這個問題。

(7) 變分減小性質

  變分減小性質度對B-樣條曲線也成立。如果曲線在平面(resp., 空間)上,這意味着沒有直線(resp., 平面) 與 B-樣條曲線相交的次數多于它與曲線控制折線(polyline)相交的次數。

  

B-spline Curves 學習之B樣條曲線性質(5)              B-spline Curves: Important Properties

  在上圖中,藍線與控制折線(polyline)和B-樣條曲線都相交6次,而黃線也與控制折線和B-樣條曲線相交5次。但是,橘黃線與控制折線相交 6次和曲線相交4次。

(8) 貝塞爾曲線是B-樣條曲線的特例

  如果 n = p (即,B-樣條曲線的次數是n, 控制點的數目減1有 2(p + 1) = 2(n + 1)個節點,其中 p + 1個在端(end)處clamped,這個B-樣條曲線退化到貝塞爾曲線。

(9) 仿射不變性

  仿射不變性對B-樣條曲線也成立。如果一個仿射變換應用于B-樣條曲線,得到的結果可以從它的控制點的仿射像(images)建構得到。這是一個好性質。當我們要對B-樣條曲線應用一個幾何或仿射變換,這條性質說明我們可以對控制點進行變換,而這相當容易,而且一旦獲得了這些變換後的控制點,變換B-樣條曲線就是這些新點定義的。是以,我們不需要對曲線進行變換。

2. 使用B-樣條曲線的優點

  B-樣條曲線比貝塞爾曲線需要更多資訊(即,曲線的次數和一個節點向量 )和更複雜的理論。但是它有更多優點來彌補這個缺點。

(1) 一個B-樣條曲線可以是一個貝塞爾曲線。

(2) B-樣條曲線滿足貝塞爾曲線有的所有重要性質。

(3) B-樣條曲線提供了比貝塞爾曲線更靈活的控制。

  例如,一個B-樣條曲線的次數與控制點數目是分開的。更準确地說,我們可以使用更低次曲線而仍然保持很多控制點。我們可以改變一個控制點位置而不會全局地改變整個曲線形狀(局部修改性質)。因為B-樣條曲線滿足強凸包性質,它們可以進行更精細的形狀控制。而且,還有其他設計和編輯形狀的技術比如改變節點。

  但是,記住B-樣條曲線仍然是多項式曲線而多項式曲線不能表示許多有用的簡單的曲線比如圓和橢圓。是以,需要B-樣條的一個推廣,NURBS。後面會讨論 NURBS 。