于雪濤,奚硯濤,朱金燦,牛坤,于書媛
(1.中國礦業(yè)大學(xué)資源與地球科學(xué)學(xué)院,江蘇徐州 221008; 2.航天星圖科技(北京)有限公司,北京 100029)
拋物樣條算法在等值線平滑中的應(yīng)用
于雪濤1?,奚硯濤1,朱金燦2,牛坤1,于書媛1
(1.中國礦業(yè)大學(xué)資源與地球科學(xué)學(xué)院,江蘇徐州 221008; 2.航天星圖科技(北京)有限公司,北京 100029)
在深入研究分段拋物樣條算法的基礎(chǔ)之上,采用Visual Basic.NET2005開發(fā)語言,最終設(shè)計并實現(xiàn)了基于該算法的閉合和不閉合的平滑拋物樣條曲線繪制方法。并將該算法應(yīng)用到雨量等值線的平滑中,取得了較為理想的效果。并采用均勻添加型值點的方式,使最終等值線的繪制更加科學(xué)化,避免相交情況的出現(xiàn)。
拋物樣條算法;等值線;閉曲線;開曲線
由于等值線圖用于表示三維空間或可以認(rèn)為是三維空間的現(xiàn)象,看起來非常直觀、形象,因此在天氣預(yù)報、氣候預(yù)測分析等方面用得非常多,已成為預(yù)報員不可缺少的工具之一。如各等壓面層的位勢高度圖、高空環(huán)流、溫度及降水分布圖等等[1,2]。
在追蹤等值線的過程中,一般都是得到一系列的點集,然后按順序連接這些點,生成閉合和不閉合的等值線。此時得到的等值線,如果不經(jīng)過平滑處理,則最終生成的每條等值線是由多段折線組成,雖然表達(dá)精確,然而并不美觀。尤其在雨量等值線的繪制過程中,習(xí)慣上在繪制雨量等值線圖時希望略微犧牲一些準(zhǔn)確性而保持曲線的光滑性[3]。
在等值線的平滑算法中,平滑的方法有T-N方法、Bezier方法、B樣條方法、三次樣條方法、拋物樣條方法以及最小二乘法等[4]。其中使用比較多的是B樣條曲線、Bezier曲線和三次樣條曲線方法,而對于拋物樣條曲線方法,研究和使用的還比較少。
拋物樣條算法的基本原理是選擇較為簡單的拋物線作為基本曲線,來擬合給定離散點所生成的曲線。設(shè)有不在同一直線上的3點:p1、p2和p3,則通過3點用矢量表達(dá)式表示的拋物曲線表達(dá)式為:p(t)=A1+A2t+A3t2(0≤t≤1),然后再設(shè)定3個獨立條件:
(1)拋物線段以p1點為始點,即當(dāng)參變量t=0時,曲線過p1點;
(2)拋物線段以p3點為終點,即當(dāng)參變量t=1時,曲線過p3點;
(3)當(dāng)參變量t=0.5時,拋物線過p2點,并且該點的切矢量等于p3-p1。
在這3個條件下,構(gòu)造的拋物線段如圖1所示。根據(jù)3個條件建立方程并聯(lián)立求解,計算得到3個系數(shù)A1、A2和A3并帶入拋物線的表達(dá)式最后得:
圖1 過三點定義拋物線
圖2 重疊區(qū)間
設(shè)有一離散型值點列Pi(i=1,2,…,n),每經(jīng)過相鄰3點做一段拋物線,由于有n個型值點,故可以做n-2條拋物線段。第i條拋物線段的表達(dá)式為:
同理,得第i+1條拋物線段Si+1(ti+1)。一般來說,每兩段曲線之間的重疊區(qū)間,兩條拋物線是不可能完全重合的,如圖2所示。為此,采用加權(quán)合成法讓兩條曲線按照一定的規(guī)則結(jié)合成一條曲線。設(shè)定共同區(qū)間的函數(shù)為:pi+1(t)=(1-T)?Si(ti)+T?Si+1(ti+1),其中1-T和T為具有互補性的一次權(quán)函數(shù),式中的3個參數(shù)T、ti和ti+1可以統(tǒng)一參變量為:T=2t,ti=0.5+t,ti+1=t(0≤t≤0.5),代入Si(ti)和Si+1(ti+1)的表達(dá)式,最終整理得到的函數(shù)表達(dá)式為:
從幾何意義上說,pi+1(t)表示的是圖2中的點Pi+1到點Pi+2之間的線段,這種方法只能從n個點中得到n-3段曲線,但是n個型值點應(yīng)有n-1段曲線,為了解決這個問題,采用添加輔助點方法。對于不閉合的曲線,可以添加兩個輔助點,即P0和Pn+1,令P0=P1和Pn+1=Pn。對于閉合曲線,可以添加三個輔助點,即P0、Pn+1和Pn+2,令P0=Pn、Pn+1=P1和Pn+2=P2。
通過這種方法,就為平滑閉合的和不閉合的等值線奠定了理論的基礎(chǔ)。通過驗證可知,這種方法可以保證達(dá)到C1連續(xù)。對于一般的應(yīng)用場合,達(dá)到C1連續(xù)就滿足了實際要求[5~7]。
作者在充分理解并分析上述算法的原理基礎(chǔ)之上,采用Visual Basic.NET 2005編程語言,最終很好地實現(xiàn)了該算法,完成了閉合和不閉合的拋物樣條曲線的繪制。以不閉合的拋物樣條曲線為例,其算法的偽代碼如下:
(1)定義存儲拋物樣條曲線上的點集 interList-Points和步長變量t=0.5/10,
(2)for(i=0 to 10)
①計算拋物樣條曲線的a、b、c和d四個參數(shù),四個參數(shù)的計算表達(dá)式如下:
②添加輔助點P0=Pn,以P0、P1、P2和P3四個點構(gòu)造拋物樣條曲線函數(shù),計算平滑點TmpPnt的坐標(biāo)。
③按先后順序添加TmpPnt點到interListPoints點集中。
①計算拋物樣條曲線的a、b、c和d四個參數(shù),計算方法同上。
②以Pi、Pi+1、Pi+2和Pi+3四個點構(gòu)造拋物樣條曲線函數(shù),計算平滑點TmpPnt的坐標(biāo)X和Y,方法同上。
③按先后順序添加TmpPnt點到interListPoints點集中。
(4)for(i=0 to 10)
①計算拋物樣條曲線的a、b、c和d四個參數(shù),計算方法同上。
②添加輔助點Pn+1=P1,以Pn-2、Pn-1、Pn和Pn+1四個點構(gòu)造拋物樣條曲線函數(shù),計算平滑點TmpPnt的坐標(biāo)X和Y,方法同上。
③按先后順序添加TmpPnt點到interListPoints點集中。
(5)返回interListPoints,得到拋物樣條曲線上的所有點。
閉合的拋物樣條曲線算法與其類似,所不同的是它須添加三個輔助點,即P0、Pn+1和Pn+2,其中P0=P1、Pn+1=Pn和Pn+2=P2,即需在兩端和兩端連接處各構(gòu)造一段拋物線。采用上述方法,生成的拋物樣條曲線如圖3和圖4所示,圖3為閉合的拋物樣條曲線,圖4為不閉合的拋物樣條曲線[5]。
圖3 閉合的拋物樣條曲線
圖4 不閉合的拋物樣條曲線
從以上可以看出,該算法計算簡單,容易編程實現(xiàn)。因為該算法只是保證了C1連續(xù),而三次樣條插值算法可以保證達(dá)到C2連續(xù),故其光滑性和柔性沒有三次樣條插值算法好,但其時間效率還是相當(dāng)高的,相比三次樣條插值算法而言[6]。將該算法應(yīng)用到等值線的平滑中,其平滑效果已經(jīng)能夠達(dá)到雨量等值線的繪制要求。在作者直接把該算法應(yīng)用到等值線的平滑中時,發(fā)現(xiàn):對于相對稀疏的等值線,其平滑效果比較美觀,但當(dāng)?shù)戎稻€相對稠密時,其平滑效果雖達(dá)到要求,但是有時會出現(xiàn)等值線相交的情況。對于此種情況,筆者的解決方法是對未經(jīng)平滑的型值點序列進行加密處理,處理的方法是:在兩點之間的1/5、2/5、3/5和4/5處,添加4個型值點,并按順序插入到等值點序列中。經(jīng)過上述方法處理,一般情況下是不會出現(xiàn)等值線相交的現(xiàn)象。如圖5和圖6所示,圖5為未經(jīng)過加點處理直接采用拋物樣條曲線算法生成的某市的雨量等值線圖,圖6為經(jīng)過加點處理后采用拋物樣條曲線算法生成的某市的雨量等值線圖。
圖5 未經(jīng)加點處理生成的雨量等值線圖
圖6 經(jīng)加點處理生成的雨量等值線圖
作者在深入研究拋物樣條插值算法的基礎(chǔ)上,設(shè)計并實現(xiàn)了拋物樣條算法,并將該算法用到雨量等值線的繪制中,解決了等值線的平滑問題,并且效果較為理想。該算法在應(yīng)用到等值線的平滑的過程中,也發(fā)現(xiàn)存在一些小的問題,即在拐點附近出現(xiàn)凸包現(xiàn)象,故該算法對于如何恰當(dāng)?shù)剡x擇輔助點、端點條件怎么確定以及在什么樣的情況下適用等問題還有待做進一步的研究。
[1]呂勇平,戴景茹.離散點插值方法,等值線的繪制及平滑技巧[J].廣東氣象,1998,(S2):69~71,73
[2]賈國憲,劉新江,陳勤勤.MapX下繪制等值線圖的一種簡易方法[J].北京測繪,2004,(2):35~39
[3]陳松喬,狄立勛.雨量等值線圖繪制的算法優(yōu)化及實現(xiàn)[J].湖南水利,1999(1):30~33
[4]孫桂茹,馬亮,路登平等.等值線生成與圖形填充算法[J].天津大學(xué)學(xué)報,2000,33(6):816~818
[5]朱金燦.拋物樣條曲線的原理說明及畫拋物曲線的一個類.http://blog.csdn.net/clever101/archive/2006/06/03/ 771160.aspx,2006-6-3
[6]張永利.分段二次拋物樣條插值法.中國科技論文在線(http://www.paper.edu.cn).2009.07.16
[7]陸潤民.計算機繪圖原理及應(yīng)用[M].北京:清華大學(xué)出版社,1996,142~150
Application of Parabola-Spline Algorithm in Smoothing Contour
Yu XueTao1,Xi YanTao1,Zhu JinCan2,Niu Kun1,Yu ShuYuan1
(1.School of Resources and Earth Science,China University of Mining&Technology,Xuzhou 221008,China;2.ImageInfo Company Limited,Beijing 100029,China)
Based on studying the parabola-spline Algorithm fully,this paper completed designing and releasing the algorithm of drawing close and unclose parabola-spline curves,by using Visual Basic.NET2005.This Algorithm has been applied to smooth rain-contour lines,and obtained the ideal effect.Besides,it made the contour-drawing more Scientific to add data points,avoiding the phenomenon that contour lines intersect with others.
parabola-spline algorithm;contours;close curve;unclose curve
1672-8262(2010)05-135-03
P209
B
2010—04—16
于雪濤(1984—),男,碩士研究生,從事地理信息系統(tǒng)理論及相關(guān)應(yīng)用研究。
中國礦業(yè)大學(xué)青年科研基金項目(A2006018)和中國礦業(yè)大學(xué)資源與地球科學(xué)學(xué)院科研基金項目資助。