沃羅諾伊圖(Voronoi Diagram,也稱作Dirichlet tessellation,狄利克雷鑲嵌)


沃羅諾伊圖(Voronoi Diagram,也稱作Dirichlet tessellation,狄利克雷鑲嵌)是由俄國數學家格奧爾吉·沃羅諾伊建立的空間分割算法。靈感來源於笛卡爾用凸域分割空間的思想。在幾何,晶體學建築學,地理學,氣象學,信息系統等許多領域有廣泛的應用。

泰森多邊形法,荷蘭氣候學家A·H·Thiessen提出了一種根據離散分布的氣象站的降雨量,來計算平均降雨量的方法,即將所有相鄰氣象站連成三角形,作這些三角形各邊的垂直平分線,將每個三角形的三條邊的垂直平分線的交點(也就是外接圓的圓心)連接起來得到一個多邊形。用這個多邊形內所包含的一個唯一氣象站的降雨強度來表示這個多邊形區域內的降雨強度,並稱這個多邊形為泰森多邊形。如圖,其中虛線構成的多邊形就是泰森多邊形。泰森多邊形每個頂點是每個三角形的外接圓圓心。泰森多邊形也稱為Voronoi圖,或dirichlet圖。

 

一、文檔目的
本文描述了在geomodel模塊中,生成泰森多邊形所使用的算法。
二、概述
GIS和地理分析中經常采用泰森多邊形進行快速插值,和分析地理實體的影響區域,是解決鄰接度問題的又一常用工具。

荷蘭氣候學家A·H·Thiessen提出了一種根據離散分布的氣象站的降雨量來計算平均降雨量的方法,即將所有相鄰氣象站連成三角形,作這些三角形各邊的垂直平分線,於是每個氣象站周圍的若干垂直平分線便圍成一個多邊形。用這個多邊形內所包含的一個唯一氣象站的降雨強度來表示這個多邊形區域內的降雨強度,並稱這個多邊形為泰森多邊形。如圖1,其中虛線構成的多邊形就是泰森多邊形。泰森多邊形每個頂點是每個三角形的外接圓圓心。泰森多邊形也稱為Voronoi圖,或dirichlet圖。

 

泰森多邊形的特性是:
1,每個泰森多邊形內僅含有一個離散點數據。
2,泰森多邊形內的點到相應離散點的距離最近。
3,位於泰森多邊形邊上的點到其兩邊的離散點的距離相等。
泰森多邊形可用於定性分析、統計分析、鄰近分析等。例如,可以用離散點的性質來描述泰森多邊形區域的性質;可用離散點的數據來計算泰森多邊形區域的數據;判斷一個離散點與其它哪些離散點相鄰時,可根據泰森多邊形直接得出,且若泰森多邊形是n邊形,則就與n個離散點相鄰;當某一數據點落入某一泰森多邊形中時,它與相應的離散點最鄰近,無需計算距離。
在泰森多邊形的構建中,首先要將離散點構成三角網。這種三角網稱為Delaunay三角網。


三、Delaulay三角形的構建
Delaunay三角網的構建也稱為不規則三角網的構建,就是由離散數據點構建三角網,如圖2,即確定哪三個數據點構成一個三角形,也稱為自動聯接三角網。即對於平面上n個離散點,其平面坐標為(xi,yi),i=1,2,…,n,將其中相近的三點構成最佳三角形,使每個離散點都成為三角形的頂點。

 

自動聯接三角網的結果為所有三角形的三個頂點的標號,如:1,2,8;2,8,3;3,8,7;……

為了獲得最佳三角形,在構三角網時,應盡可能使三角形的三內角均成銳角,即符合Delaunay三角形產生的准則:

1、任何一個Delaunay三角形的外接圓內不能包含任何其它離散點。

2、相鄰兩個Delaunay三角形構成凸四邊形,在交換凸四邊形的對角線之后,六個內角的最小者不再增大。該性質即為最小角最大准則。

 

 

下面介紹Tsai(1993)提出的在n維歐拉空間中構造Delaunay三角形的通用算法---凸包插值算法。

(一)、凸包生成

1、求出點集中滿足min(x-y)、min(x+y)、max(x-y)、max(x+y)的四個點,並按逆時針方向組成一個點的鏈表。這4個點是離散點中與包含離散點的外接矩形的4個角點最近的點。這4個點構成的多邊形作為初始凸包。

2、對於每個凸包上的點I,設它的后續點為J,計算矢量線段IJ右側的所有點到IJ的距離,求出距離最大的點K。

3、將K插入I、J之間,並將K賦給J。

4、重復2、3步,直到點集中沒有在線段IJ右側的點為止。

5、將J賦給I,J取其后續點,重復2、3、4步。

6、當凸包中任意相鄰兩點連線的右側不存在離散點時,結束點集凸包求取過程。

完成這一步后,形成了包含所有離散點的多邊形(凸包),如圖3所示。

 

(二)、環切邊界法凸包三角剖分

在凸包鏈表中每次尋找一個由相鄰兩條凸包邊組成的三角形,在該三角形的內部和邊界上都不包含凸包上的任何其它點。將這個點去掉后得到新的凸包鏈表。重復這個過程,直到凸包鏈表中只剩三個離散點為止。將凸包鏈表中的最后三個離散點構成一個三角形,結束凸包三角剖分過程。

 

完成這一步后,將凸包中的點構成了若干Delaunay三角形,如圖4所示。

 

(三)、離散點內插

在對凸包進行三角剖分之后,不在凸包上的其余離散點,可采用逐點內插的方法進行剖分。基本過程為:

1、選擇一個尚未構成三角形的離散點

2、在已經生成的三角形中,找出該離散點的三角形(離散點在該三角形在內部或者在該三角形的邊上)

3、如果離散點在三角形的內部,則將該三角形以及三角形的邊刪除,然后將三個頂點以及離散點分別連接,形成三個新的三角形。如果離散點在三角形的邊上,記錄點所在的邊E,根據拓撲關系,找出該邊的左右相鄰三角形T1,T2,添加四條新邊和四個新三角形NT,刪除T1,T2以及邊E。

對於新生成的三角形,需要挨個對其邊進行空外接圓檢測。具體做法為:對於新生成的三角形的邊E,找出該邊相鄰的兩個三角形,判斷該邊一側的對角的頂點是否位於另外一個三角形的外接圓的里面。如果是,則將邊E刪除,再將兩個對角連接起來,形成兩個新的三角形。對於新三角形的邊,同樣需要進行空外接圓檢測,如此繼續進行,直到所有新生成的三角形都通過空外接圓檢測為止。

4、重復1、2、3,直到所有非凸殼離散點都插入完為止。完成這一步后,就完成了Delaunay三角網的構建,如圖5所示。

 

四、泰森多邊形的建立步驟

建立泰森多邊形算法的關鍵是對離散數據點合理地連成三角網,即構建Delaunay三角網。建立泰森多邊形的步驟為:

1、離散點自動構建三角網,即構建Delaunay三角網。對離散點和形成的三角形編號,記錄每個三角形是由哪三個離散點構成的。

2、找出與每個離散點相鄰的所有三角形的編號,並記錄下來。這只要在已構建的三角網中找出具有一個相同頂點的所有三角形即可。

 

                                               圖6 泰森多邊形的建立

3、對與每個離散點相鄰的三角形按順時針或逆時針方向排序,以便下一步連接生成泰森多邊形。排序的方法可如圖6所示。設離散點為o。找出以o為頂點的一個三角形,設為A;取三角形A除o以外的另一頂點,設為a,則另一個頂點也可找出,即為f;則下一個三角形必然是以of為邊的,即為三角形F;三角形F的另一頂點為e,則下一三角形是以oe為邊的;如此重復進行,直到回到oa邊。

4、計算每個三角形的外接圓圓心,並記錄之。

5、根據每個離散點的相鄰三角形,連接這些相鄰三角形的外接圓圓心,即得到泰森多邊形。對於三角網邊緣的泰森多邊形,可作垂直平分線與圖廓相交,與圖廓一起構成泰森多邊形。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM