• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Delaunay三角剖分的快速重建算法

      2012-08-07 08:59:34潘榮麗
      山東電力高等專科學校學報 2012年3期
      關鍵詞:鏈表剖分結(jié)點

      潘榮麗

      山東省勞動廳服務技工學校 山東 濟南

      0 引言

      平面點集的Delaunay 三角剖分是計算幾何的一個重要問題,有著廣泛的應用背景,在虛擬現(xiàn)實、地理信息系統(tǒng)(GIS)等許多方面都有著很重要的意義。 實際應用中經(jīng)常包含幾百萬個點和三角形, 必須進行數(shù)據(jù)壓縮才能適應現(xiàn)有的網(wǎng)絡傳輸技術, 特別是進行實時處理時更需要壓縮技術的支持。 在網(wǎng)絡環(huán)境下把模型從服務器傳送到客戶端,一般有兩種方法:1)只傳送點集,在客戶端對點集進行Delaunay三角化。 這一般需要O(nlogn)的時間。這方面的研究主要集中在提高Delaunay三角剖分算法的時間復雜性上。2) 傳送點集和連接關系。 這樣傳輸數(shù)據(jù)量大,因此需要進行壓縮處理,以減少傳輸時間。這方面的研究主要集中在對點集和三角網(wǎng)格連接關系進行壓縮[2-5]。

      最近,Snoeyink 和van Kreveld 提出了第三種可能的方法[6]:找出點集的一種特殊排序,按這種序列傳輸點集,在O(n)的時間內(nèi)重建Delaunay三角剖分。 具體算法是首先根據(jù)已經(jīng)生成的Delaunay三角剖分,分成O(nlogn)個階段計算點集序列,在每個階段刪除一個獨立點集,對產(chǎn)生的空洞進行三角化, 按DFS或BFS遍歷新產(chǎn)生的三角剖分,輸出點集序列。 整個計算過程可以在O(n)的時間內(nèi)完成。重建算法與計算點集序列的算法相對應,也分成O(nlogn)個階段,在每個階段進行點定位、局部插入調(diào)整,重建過程也可以在O(n)的時間內(nèi)完成。 1999年Christian Sohler 對算法進行了改進。

      上述計算點集序列和重建算法都比較復雜,而且不能在Delaunay三角化過程中直接計算點集序列,重建時需要進行點定位、局部插入調(diào)整等操作,影響了重建速度。 我們提出了一種新的Delaunay三角剖分的快速重建算法,在基于均勻網(wǎng)格的Delaunay三角化過程中,直接生成點集序列。這種方法也可以應用到其他Delaunay三角剖分方法的輸出結(jié)果上,在O(n)的時間內(nèi)生成點集序列。 重建時不需要插入調(diào)整就可以在O(n)的時間內(nèi)生成Delaunay三角剖分。

      1 計算點集序列算法

      基于均勻網(wǎng)格的Delaunay三角化算法運算速度非???,具有近似線性的時間復雜性[10],是一種比較成熟、穩(wěn)定、實際的Delaunay三角化算法。 這個算法的主要步驟如下:

      1)預處理數(shù)據(jù)

      把數(shù)據(jù)點分布的平面區(qū)域劃分成網(wǎng)格,使網(wǎng)格單元數(shù)和點數(shù)大致相同。 根據(jù)點的坐標值,把所有的點放進相應的網(wǎng)格單元中。在靠近中間的網(wǎng)格單元中找到一個初始點,然后找一個距離初始點最近的點,把這兩個頂點填加到一個鏈表Q中

      2)找一個三角形

      取鏈表的頭結(jié)點Qs、 鏈表的尾結(jié)點Qe形成一條有向邊,方向為從Qs到Qe。在這條邊的右邊尋找與這條邊的兩個端點角度最大的點。 然后掃描通過這條邊的兩個端點與該點所形成的圓的區(qū)域,如果圓內(nèi)存在一個點,用那個點重新形成一個圓,再掃描直到圓內(nèi)沒有點為止。 這樣就找到一個Delaunay三角形。

      3)連接三角形

      按“右接觸”、“左接觸”、“洞”、“邊界邊”等情況分別進行處理、調(diào)整鏈表。

      4)重復步驟(2)、(3),直到鏈表中的點全為邊界點為止,結(jié)束三角化過程。

      下面對基于均勻網(wǎng)格的Delaunay三角化算法進行修改,在生成過程中輸出點集序列。

      算法1

      (1) 找到靠近平面區(qū)域中間的初始點P1以及距離P1最近的點P2,構(gòu)成初始邊P1P2,把這兩個頂點填加到一個鏈表Q中:輸出P1、P2

      (2)取鏈表的頭結(jié)點Qs、鏈表的尾結(jié)點Qe,形成一條有向邊,方向為從Qs到Qe。 在QsQe的右邊尋找與QsQe兩個端點角度最大的點。 然后掃描通過Qs、Q e與該點所形成的圓的區(qū)域,如果圓內(nèi)存在一個點,用那個點重新形成一個圓,再掃描直到圓內(nèi)沒有點為止。 這樣就找到一個Delaunay三角形的第三點P,并按“右接觸”、“左接觸”、“洞”、“邊界邊”等情況分別進行處理、調(diào)整鏈表。

      ①如果QsQe屬于“邊界邊”的情況(不存在P),則把Qs移到Q的末尾,輸出標志F3

      ②如果P屬于“右接觸”的情況(P已經(jīng)出現(xiàn)過,且等于Qs.next),則刪除Qs,輸出標志F1

      ③如果P屬于“左接觸”的情況(P已經(jīng)出現(xiàn)過,且等于Qe.previous),則刪除Qe,輸出標志F2

      ④如果P屬于“洞”的情況(P已經(jīng)出現(xiàn)過,但不等于Qs.next和Qe.previous),則把Qs移到Q的末尾,輸出標志F3

      ⑤否則(P沒有出現(xiàn)過),把P追加到隊列Q中,輸出P

      (3)重復(2),直到鏈表中結(jié)點全為邊界點為止。

      例如:

      圖1 測試數(shù)據(jù)點

      圖2 初始點P1、初始邊P1P2,輸出P1、P2

      圖3 第一個三角形P1P2P3 ,輸出P3

      圖4 第二個三角形P1P3P4 ,輸出P4

      圖5 第五個三角形P1P6P7 ,輸出P7

      圖6 “右接觸”的情況,輸出標志F1

      圖7 “洞”的情況,輸出標志F3

      圖8 “右接觸”的情況,輸出標志F1

      圖9 “左接觸”的情況,則輸出標志F2

      圖10 “邊界邊”的情況,輸出標志F3

      圖11 三角形P10P9P18 ,輸出P18

      圖12 三角化結(jié)束

      根據(jù)上述算法,在生成過程中輸出的點集序列為:P1、P2、P3、P4、P5、P6、P7、F1、F1、P8、P9、P10、F1、P11、P12、P13、P14、F1、P15、P16、F1、F3、F1、F2、P17、F3、F3、P18、F1、P19、P20、F1、F3、F3、F1、F2、F3、F1、F3、F1、F3

      顯而易見,增加的標志大部分位于點集序列的最后(邊界邊的情況)。 點越多,點集序列中出現(xiàn)的標志所占比例就越小。

      上述算法也可以推廣到其他Delaunay三角剖分方法的輸出結(jié)果,輸出點集序列。

      算法2

      (1) 找到靠近平面區(qū)域中間的初始點P1以及初始邊P1P2,把這兩個頂點填加到一個鏈表Q中:輸出P1、P2

      (2) 取鏈表的頭結(jié)點Qs、鏈表的尾結(jié)點Qe,形成一條有向邊,方向為從Qs到Qe。 尋找QsQe右三角形[12]的第三點P,并按“右接觸”、“左接觸”、“洞”、“邊界邊”等情況分別進行處理、調(diào)整鏈表。

      ①如果QsQe屬于“邊界邊”的情況(不存在P),則把Qs移到Q的末尾,輸出標志F3

      ②如果P屬于“右接觸”的情況(P已經(jīng)出現(xiàn)過,且等于Qs.next),則刪除Qs,輸出標志F1

      ③如果P屬于“左接觸”的情況(P已經(jīng)出現(xiàn)過,且等于Qe.previous),則刪除Qe,輸出標志F2

      ④如果P屬于“洞”的情況(P已經(jīng)出現(xiàn)過,但不等于Qs.next和Qe.previous),則把Qs移到Q的末尾,輸出標志F3

      ⑤否則(P沒有出現(xiàn)過),把P追加到隊列Q中,輸出P

      (3) 重復(2),直到鏈表中結(jié)點全為邊界點為止。

      在算法1和算法2中都考慮了所有可能出現(xiàn)的五種情況,因此算法是完備。

      2 快速重建算法

      在重建Delaunay三角化算法中,根據(jù)上面生成的點集序列在重建過程中動態(tài)維護一個隊列Q。

      算法3

      (1) 初始隊列為空

      (2) 從點集序列中取第一個點P1和第一個點P2,放入隊列Q中,連接邊P1P2

      (3) 從點集序列中取下一個點P3

      ①如果P3為標志F1, 則Qs、Qe、P3構(gòu)成一個三角形,刪除隊列Q的頭結(jié)點Qs,連接隊列Q新的頭結(jié)點Qs和尾結(jié)點Qe,形成一條邊

      ②如果P3為標志F2, 則Qs、Qe、P3構(gòu)成一個三角形,刪除隊列Q的尾結(jié)點Qe,連接隊列Q的頭結(jié)點和新的尾結(jié)點,形成一條邊

      ③如果P3為標志F3, 則把隊列Q的頭結(jié)點移動到隊列Q的末尾

      ④否則,Qs、Qe、P3構(gòu)成一個三角形,分別連接Qs和P3,Qe和P3,形成兩條邊,把P3追加到隊列Q中。

      (4) 重復(3),直到把點集序列的所有點處理完畢。

      3 結(jié)論

      算法2和算法3具有線性時間復雜性, 而算法1具有近似線性的時間復雜性。這種重建方法實現(xiàn)了三角網(wǎng)格連接關系的高效壓縮 (只增加了三種標志),在基于均勻網(wǎng)格的Delaunay三角化過程中,直接生成點集序列,還可以應用于其他Delaunay三角剖分方法的輸出結(jié)果,并可結(jié)合對幾何信息(如坐標、顏色等)的其它壓縮算法如Huffman編碼等,算法簡單、使用。

      如何利用文中提出的算法對三維點集的Delaunay三角剖分[10]進行重建,是作者下一步研究的方向之一。

      [1]武曉波, 王世新, 肖春生.Delaunay三角網(wǎng)的生成算法研究[J]. 測繪學報,1999, 28(1):28-35.

      [2]M. Deering. Geometry Compression. Computer Graphics(Proc. SIGGRAPH),1995:13-20.

      [3]G. Taubin, J. Rossignac. Geometric Compression through topological surgery. ACM Trans. on Graphics,1998,17(2):84-115.

      [4]H. Hoppe. Progressive Meshes. Proc. SIGGRAPH ’96,pages 99-108. ACMSIGGRAPH, 1996.

      [5]Stefan Gumhold, W. Stra?er: Real Time Compression of Triangle Mesh Connectivity.SIGGRAPH ’98: 133-140.

      [6]J. Snoeyink, M. van Kreveld. Linear-time reconstruction of Delaunay triangulations with applications, European Symposium on Algorithms, 1997.

      [7]Christian Sohler, Fast Reconstruction of Delaunay Triangulations, Proceedings of the 11th Canadian Conference on Computational Geometry,1999:142-145.

      [8]Tsung-Pao Fang, Les A. piegl. Delaunay triangulation using a uniform grid [J]. IEEE Computer Graphics and Applications 1993,13(3), 36-47.

      [9]潘榮江,屠長河等.基于均勻網(wǎng)格的Delaunay三角網(wǎng)算法在隨機聚合網(wǎng)屏中的應用 [J]. 中國圖象圖形學報,2002,7A(5):495-500.

      [10]Tsung-Pao Fang, Les A. piegl. Delaunay triangulation in three dimensions, IEEE Computer Graphics and Applications, September 1995,15(5).

      猜你喜歡
      鏈表剖分結(jié)點
      基于重心剖分的間斷有限體積元方法
      基于二進制鏈表的粗糙集屬性約簡
      跟麥咭學編程
      二元樣條函數(shù)空間的維數(shù)研究進展
      基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗證機制
      Ladyzhenskaya流體力學方程組的確定模與確定結(jié)點個數(shù)估計
      一種實時的三角剖分算法
      復雜地電模型的非結(jié)構(gòu)多重網(wǎng)格剖分算法
      鏈表方式集中器抄表的設計
      電測與儀表(2014年1期)2014-04-04 12:00:22
      基于Raspberry PI為結(jié)點的天氣云測量網(wǎng)絡實現(xiàn)
      广安市| 车致| 北宁市| 南澳县| 万盛区| 黎川县| 商河县| 无极县| 若尔盖县| 贵南县| 肇庆市| 凤山县| 吴川市| 紫金县| 衡南县| 新安县| 富顺县| 三穗县| 望城县| 灵川县| 科尔| 平武县| 安阳县| 饶河县| 丰宁| 中江县| 元江| 武鸣县| 柘荣县| 体育| 五华县| 敖汉旗| 神木县| 兴国县| 饶阳县| 静海县| 马尔康县| 兴山县| 呼图壁县| 军事| 青冈县|