1.概念介紹
1.1 樣條曲線的來源
樣條的英語單詞spline來源于可變形的樣條工具,那是一種在造船和工程制圖時用來畫出光滑形狀的工具:富有彈性的均勻細木條/金屬條/有機玻璃條,它圍繞著按指定位置放置的重物或者壓鐵做彈性彎曲,以獲得所需要的曲線,如下圖所示。在計算機科學的計算機輔助設計和計算機圖形學中,樣條通常是指分段定義的多項式參數曲線。
1.2 非均勻的含義
節點矢量分布不是均勻/準均勻的
1.3 節點重復度
樣條曲線按節點矢量中節點的分布情況不同。可以劃分為四種類型(假設曲線的次數為k,即:degree = k)。注意所有的節點矢量都應該滿足:節點序列非遞減。
1.4 有理的含義
指的是NURBS曲線是用有理多項式形式表達式來定義。有理函數是通過多項式的加減乘除得到的函數。在數學中,理性函數是可以由有理分數定義的任何函數,即代數分數,使得分子和分母都是多項式。
2.樣條函數分類
2.1 均勻B樣條曲線
節點矢量中節點沿參數方向均勻等距分布且重復度均為1,所有節點區間長度
? 2.2 準均勻B樣條曲線
其節點矢量中端節點具有重復度k+1,所有內節點均勻分布且重復度均為1。
就定義了一個二次(k=2)準均勻B樣條基函數。
??? 2.3 分段Bézier曲線
?? 2.4 非均勻B樣條曲線
對于端節點重復度為k+1的曲線,必定插值于控制多邊形的首尾控制頂點。GGP中的NURBS曲線都是該類型的曲線。
2.5 Bézier曲線
一條n次的Bézier曲線可以表示為:
將Bézier曲線方程展開:
當參數u從0變化到1,則得到如下所示的曲線。并且可以看出,Bézier曲線上的一點和所有控制頂點都有關系,移動任何一個控制頂點都會使曲線發生變化。這一點和之后講的B樣條曲線和NURBS曲線不同,這兩者具有局部修改性,即:修改任意一個控制頂點,只會影響與該控制頂點相關部分的曲線形狀。
2.6 有理Bézier曲線
為什么要用有理曲線:
盡管多項式曲線具有很多優點,但是又很多重要的曲線:如圓/橢圓/雙曲線(二次曲線)無法精確地用多項式表示。所有二次曲線均可以用有理函數(即兩個多項式相除)表示。為了統一表達,需要引入有理表示。
n次有理Bézier曲線的定義為:
2.7 B樣條曲線
為什么要使用分段多項式參數曲線
B樣條基函數定義:
是有理基函數。它和B樣條基函數有相似的性質(參考B樣條基函數的性質)。同樣,NURBS曲線和B樣條曲線有相似的性質(參考B樣條曲線的性質)。
B樣條基函數有多種定義方式,這里給出德布爾(de Boor)和考克斯(Cox)的遞推定義公式。B樣條基函數是定義在被稱為節點矢量的非遞減參數序列上的函數。
B樣條曲線:
p次B樣條曲線的定義為:
2.8 非均勻有理B樣條曲線(NURBS)
一條p次NURBS曲線定義為:
NURBS曲線/B樣條曲線/Bézier曲線的關系:
如果NURBS曲線中所有權因子均為1,那么這條NURBS退化為B樣條曲線。如果B樣條曲線只有一段,并且節點矢量(只有一段,只存在兩個不同的節點值)均為p+1重。那么這條B樣條曲線就是Bézier曲線。
3.樣條曲面
3.1 張量積曲面
曲線C(u)是單參數的矢量函數(一元函數),它是直線段到三維空間的映射。曲面是關于兩個參數u和v的矢量函數(二元函數)。它表示由uv平面上的二維區域R到三維空間的映射。因此曲面可以表示為S(u,v) = ((x(u,v), y(u,v), z(u,v)),uv屬于R。有多種表示曲面的形式,在幾何造型中應用最廣泛的是張量積曲面。
張量積的方法基本上是在兩個方向上均采用曲線的處理方式,它也采用基函數和對應幾何系數(控制頂點)的乘積的累加和的形式表示曲面。曲面的基函數是u,v的二元函數,它是由關于u的一元基函數和關于v的一元基函數的乘積來構造。幾何系數(在拓撲上)被安排為兩個方向的n*m的網格。因此張量積曲面具有如下形式:
3.2 B樣條曲面
B樣條曲面由兩個方向上的控制網格、兩個節點矢量和兩個單變量的B樣條基函數的乘積來定義:
3.3 NURBS曲面
一張在u方向為p次,在v方向為q次的NURBS曲面可以表示為:
?