朱 平 , 汪國昭
(1. 浙江大學(xué)數(shù)學(xué)系計算機(jī)圖像圖形研究所CAD&CG國家重點實驗室,浙江 杭州 310027; 2. 東南大學(xué)數(shù)學(xué)系科學(xué)計算實驗室,江蘇 南京 211189)
B-樣條具有表示設(shè)計自由型曲線曲面的強(qiáng)大功能,是幾何形狀描述的主流方法之一。升階是B-樣條曲線經(jīng)常遇到的問題。通過升階,可以增加B-樣條曲線的自由度。同時升階算法也在B-樣條曲線合并、構(gòu)造張量積曲面有著廣泛的應(yīng)用。尤其在表示和設(shè)計組合曲線,B-樣條曲線的升階是必不可少的手段之一。兩條或若干條不同次數(shù)的B-樣條曲線要順序連續(xù)成為一條組合B-樣條曲線,用一個統(tǒng)一的方程表示,必須對其升階,統(tǒng)一其次數(shù)。有鑒于此,很多國內(nèi)外學(xué)者都提出了B-樣條曲線的快速升階算法[1-5]。在CAGD 中,許多曲線曲面生成都可以解釋為割角的過程,這樣的好處是提供了一個很簡便的幾何構(gòu)造法[6-7]。但是,除文獻(xiàn)[8]外,所有升階算法都不能解釋為幾何割角的過程。文獻(xiàn)[8]通過提出雙次數(shù)B-樣條解決了這個問題,使得B-樣條的升階有了幾何意義,其方法就是不斷嵌入節(jié)點,生成雙次數(shù)B-樣條曲線。那么通過這種方式升階,其割角的控制多邊形是否像Bézier 曲線[9]那樣收斂到原始的B-樣條曲線呢?本文通過證明給出了答案。根據(jù)本文的結(jié)論,B-樣條曲線就可以像Bézier 曲線那樣割角生成。
B-樣條曲線的定義如下[10]:
其節(jié)點向量為
{ Pi}0是控制頂點,{ Ni,k(t )}是定義在T 上k 次 B-樣條基函數(shù)。
定義在jT 上的雙次數(shù)B-樣條定義如下[8]
這里 lj= z0+ z1+ … + zj+j 。
由雙次數(shù)B-樣條的變換公式[8],很容易將B-樣條升階解釋為一個幾何割角的過程。下面,通過定理說明通過這樣的割角形成的控制多邊形序列最終收斂到初始的B-樣條曲線。
根據(jù)文獻(xiàn)[8],將k 次B-樣條曲線 ( )tP 升階至k+ 1次是通過依次嵌入節(jié)點定義的雙次數(shù)B-樣條基函數(shù)變換實現(xiàn)的。同時,這個變換過程也是對控制多邊形割角的過程。下面證明對B-樣條初始曲線不斷地升階,其控制多邊形最終將收斂到初始B-樣條曲線。
為了敘述方便,引入一些記號:
(2) Ni,K( t )是升階后定義在 T ′上的K 次B-樣條基函數(shù)。 T ′是升階后的節(jié)點向量
(3) ( ti, ti+1)為節(jié)點區(qū)間,若 ti< ti+1,則 稱為非零節(jié)點區(qū)間。
看出 p′ (t )是完全定義在T 上。這樣,令Ni,k(t ) = p′ ( t)以及基函數(shù)的線性無關(guān)性,得到
根據(jù) Ni,k( t ) = p ′( t),知道 p( t ) = 0(t <)。則再由基函數(shù)的局部性和線性無關(guān)性, 得到p?1= …= pi?1=0。那么推得 取t=+∞,可知定理成立。
證明設(shè)B-樣條曲線
如果對 T ′的每個 ti(i = 0,… , n)分別嵌入一次節(jié)點,相當(dāng)于升階一次得到新的控制多邊形為 Γ3, 容易知道
以下為對B 樣條控制多邊形進(jìn)行升階各角得到的B 樣條曲線(見圖1~圖4)。
圖1 初始控制多邊形及B-樣條曲線
圖2 升階一次以后的控制多邊形
圖3 升階兩次以后的控制多邊形
圖4 升階五次以后的控制多邊形
文獻(xiàn)[8]通過插入節(jié)點將B-樣條曲線的升階解釋為割角的過程,使升階有了幾何意義。本文也可以看成是升階收斂的又一種證明方法,是對文獻(xiàn)[8]的一個補(bǔ)充,通過證明得出了升階最后逼近收斂的結(jié)論,這樣就可以像Bézier 曲線那樣對控制多邊形割角生成B-樣條曲線。
[1] HUANG Qixing, HU Shimin, Martin R. Fast degree elevation and knot insertion for B-spline curves [J]. Computer Aided Geometric Design, 2005, 22(2): 183-197.
[2] 孫景楠, 王仁宏. B-樣條曲線升階算法中問題及其解決辦法[J]. 大連理工大學(xué)學(xué)報, 2003, 43(4): 397-398.
[3] 于丕強(qiáng), 施錫泉. B-樣條曲線升階的新研究[J]. 應(yīng)用數(shù)學(xué), 2003, 16(1): 29-33.
[4] Liu W. A simple, efficient degree raising algorithm for B-spline curve [J]. Computer Aided Geometric Design 1997, 14(7): 693-698.
[5] Prautzsch H, Piper B. A fast algorithm to raising the degree of B-spline curves [J]. Computer Aided Geometric Design, 1991, 8(4): 253-266.
[6] de Boor C. Cutting corners always works [J]. Computer Aided Geometric Design, 1987, 4(2): 125-131.
[7] Paluszny M, Prautzsch H, Sch?fer M. A geometric look at corner cutting [J]. Computer Aided Geometric Design, 1997, 14(5): 421-447.
[8] WANG Guozhao, DENG Chongyang. On the degree elevation of B-spline curves and corner cutting [J]. Computer Aided Geometric Design, 2007, 24(2): 90-98.
[9] 王國瑾, 汪國昭, 鄭建民. 計算機(jī)輔助幾何設(shè)計[M]. 北京: 高教出版社; 海德堡: 施普林格出版社, 2001. 8-9, 28-29.
[10] Piegl L, Tiller W. The NURBS book (2nd ed.)[M]. Berlin: Spring, 1997. 81-82.