劉志平,曾燕璋
(淮海工學(xué)院 理學(xué)院,江蘇 連云港 222005)
在計算機圖形學(xué)和計算機輔助幾何設(shè)計領(lǐng)域,經(jīng)常會用到四邊貝齊爾曲面和三角貝齊爾曲面,在一些實用的計算機圖形系統(tǒng)中,兩種形式的曲面會同時存在.究其原因,是因為一般現(xiàn)實問題的參數(shù)域通常是復(fù)雜形狀,而對復(fù)雜形狀的處理方法一般是將參數(shù)域剖分為小的三角形或者四邊形,因此這就需要研究三角貝齊爾曲面和四邊貝齊爾曲面的繪制方法.四邊貝齊爾曲面實際上是兩個方向的貝齊爾曲線做張量積,容易用矩陣形式表示,繪制方法相對容易.而三角貝齊爾曲面本身不具備矩陣的表示形式,繪制方法要比四邊貝齊爾曲面困難,因此研究三角貝齊爾曲面的繪制方法就更有價值.
首先給四邊貝齊爾曲面和三角貝齊爾曲面的定義,兩種形式的貝齊爾曲面都是由控制頂點唯一確定的.
定義1[1]給定(n+1)×(m+1)個控制頂點Pi,j,i=0,1,2,…,n; j=0,1,2,…,m,n×m次四邊貝齊爾曲面定義為
定義2[1]給定個控制頂點Pi,j,ki=0,1,…n; j=0,1,…n-i; k=n-i-j,n次三角貝齊爾曲面定義為
當參數(shù)域是四邊形時,采用四邊貝齊爾曲面,為了方便程序?qū)崿F(xiàn),公式(1)經(jīng)常表示成矩陣乘積的形式[2]
其中UT=[1 u u2… un],VT=[1 v v2… vm],M是從伯恩斯坦基到多項式基的轉(zhuǎn)換矩陣,P是控制頂點陣.
當參數(shù)域為三角形的時候,一般采用三角貝齊爾曲面形式.比較常見的三角貝齊爾曲面繪制方法是把三角形看成退化的四邊形,即四邊形的一條邊退化為一個點,這樣三角貝齊爾曲面就變成有一條退化邊的四邊貝齊爾曲面[3].具體來說,如果原來的三角貝齊爾曲面的控制頂點為
為了將其表示為四邊貝齊爾曲面,上述控制頂點要修改為
即添加了很多重復(fù)的控制頂點,但是從繪制結(jié)果來看,這種繪制方法并不理想,如圖1所示,圖形的右下角很多條線匯聚在一起,形成數(shù)據(jù)冗余,影響繪制效果.
圖1 將三角貝齊爾曲面看成退化的四邊貝齊爾曲面
為了解決數(shù)據(jù)冗余的問題,三角貝齊爾曲面也可以采用Delauny三角剖分形式進行繪制,Delauny剖分的缺點是數(shù)據(jù)結(jié)構(gòu)復(fù)雜,不容易理解.那么,有沒有一種簡單的三角貝齊爾曲面繪制方法呢?仔細考慮四邊貝齊爾曲面的繪制過程,發(fā)現(xiàn)雖然有四條邊,但其實質(zhì)是兩個不同方向的貝齊爾曲線進行交叉.三角貝齊爾曲面沒有辦法看成兩個方向的交叉,那么它能否看成是三個方向的貝齊爾曲線進行交叉?基于這樣的想法,在本文中,采用了一種新的三角貝齊爾曲面繪制方法,將三角貝齊爾曲面看成是三簇貝齊爾曲線的交叉,即u-向貝齊爾曲線,v-向貝齊爾曲線和w-向貝齊爾曲線的交叉.如圖2所示,繪制過程中的難點是點的連接關(guān)系,下面將詳細介紹具體的繪制過程.
圖2 三角貝齊爾曲面參數(shù)域示意圖
圖2所示的三角貝齊爾曲面是3次的,現(xiàn)實問題里,可能需要考慮繪制任意次數(shù)的貝齊爾曲面.假定次數(shù)為n,可以看到,第一行有1個控制頂點,第二行有2個,……,如此類推.因為n次三角貝齊爾曲面共有n+1行控制頂點,所以總的控制頂點個數(shù)為將控制頂點按行進行存儲,即P0,n,0的存儲序號為1,P0,n-1,1的存儲序號為2,P1,n-1,0的存儲序號為3,…….由等差數(shù)列的性質(zhì)可得,第i 行的存儲序號為由此可以得到三簇貝齊爾曲線的連接關(guān)系.
首先,考慮u-向的第i 行貝齊爾曲線,其控制頂點的存儲序號為
其次,考慮v-向貝齊爾曲線,最右邊的v-向貝齊爾曲線其控制頂點的存儲序號為
從右上方往左下方進行,每進行一次,去掉最左邊的存儲序號,其它序號各自減1,即第2條v-向貝齊爾控制頂點的存儲序號為第3條控制頂點的存儲序號為最后一條v-向貝齊爾的存儲序號為
最后考慮w-向貝齊爾曲線,最左邊的w-向貝齊爾曲線其控制頂點的存儲序號為從左上方往右下方進行,每進行一次,去掉最左邊的存儲序號,其它序號各自加1,即第2 條w-向貝齊爾曲線的存儲序號為第3 條的存儲序號為最后一條w-向貝齊爾曲線的存儲序號為
有了點的連接關(guān)系,就可以使用畫折線函數(shù)分別繪制三簇不同方向的貝齊爾曲線,它們再進行交叉就會得到最終的三角貝齊爾曲面.本文中,使用MATLAB軟件采用上面的方法進行了繪制,繪制結(jié)果如圖3和圖4所示.圖3和圖4是同一個曲面從兩個不同方向觀察到的結(jié)果,從中可以清晰地看到,已經(jīng)不存在數(shù)據(jù)冗余,繪制效果良好.
圖3 采用本文方法繪制的三角貝齊爾曲面
圖4 從不同角度觀察圖3的結(jié)果
本文根據(jù)三角貝齊爾曲面自身的特點,采用三個不同方向的貝齊爾曲線交叉形成曲面.與已有的繪制方法相比,比傳統(tǒng)方法數(shù)據(jù)冗余少,繪制效果好.此外,本文的方法比采用Delauny三角剖分方法更容易理解.
[1]施法中.計算機輔助幾何設(shè)計和非均勻有理B樣條[M].北京:高等教育出版社,2001.
[2]FARIN G.Curves and Surface for CAGD:A Practical Guide[M].San Diego:Academic Press,2002.
[3]HU Shi-min.Conversion between triangluar and rectangular Bezier patches [J].Computer Aided Geometry Desigin,2001,18(7):667-671.