999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于單調多邊形的三角剖分算法

2013-09-25 02:02:56朱二喜何援軍
圖學學報 2013年6期

徐 敏, 朱二喜, , 何援軍

(1. 江蘇信息職業技術學院,江蘇 無錫 214153;2. 上海交通大學計算機工程系,上海 200240)

三角剖分是計算機輔助幾何設計、幾何造型及計算機圖形學中研究的重要內容之一,在有限元分析、幾何重構、數字地形分析、計算機圖形學及機器人等領域有重大應用。

Chazelle[1]證明了多邊形的三角剖分可以在O(n)時間復雜度內完成,但算法實現非常困難。肖忠暉等[2]以切耳算法[3]為基礎,實現簡單多邊形的三角化。馬小虎[4]等人提出的一種基于凹凸頂點判定的簡單多邊形Delaunay三角剖分算法,思路清晰,程序實現簡單,剖分質量高,且計算效率相對較高。李學軍等人[5]提出的快速算法,先將多邊形分割成多個單調多邊形,然后對單調多邊形進行三角化,不過該算法只是在單調多邊形三角化時的時間復雜度為O(n),而在多邊形單調化時復雜度比O(n)要高。畢林等提出的快速三角化算法[6],在不考慮前期處理的情況下時間復雜度近似O(n)的多邊形三角化算法,適用于帶內孔的任意簡單多邊形,實現較為簡單,計算量較少。

對于含有內孔的多邊形(多連通多邊形),可以通過引入橋邊將其外輪廓線與內孔連接起來轉化為退化的多邊形。這種加入橋邊運算復雜,程序結構也復雜,同時需要處理掛邊現象。如陳向平等人[7]提出的橋邊算法,鄧先禮等人[8]對陳向平等人的算法進行改進。徐春蕾等人[9]提出的 GTP算法,將數據形成內外環兩個鏈表,不適應于內環中還有環的情況。

本文提出的算法適用于含有任意個內孔的多邊形,先根據邊界y向局部極值頂點作出水平分割線,將多邊形劃分成單連通y單調多邊形,然后再對單調多邊形進行三角剖分,最終完成對初始多邊形的三角剖分。

1 幾何理論

定義1[10]邊界頂點排序 多邊形每一邊界(外邊界及內孔)的頂點按下列原則排序:當人順著多邊形邊界行走時,他的左手指向多邊形的內部。

按照定義1,對于凸多邊形,這個原則意味著:多邊形的外邊界為逆時針走向,內邊界為順時針走向。而多邊形的每一條邊界均為一個向量,這個要求并不苛刻。

定義2[10]兩向量交點的特征值 兩向量交點的特征值由其矢量積的方向定義,特征值的絕對值取為 1。因此,兩個向量交點的特征值有 2個,分別對應于求交的兩個向量,且這2個特征值的符號相反,其代數和為0。如圖1所示,兩向量各種交點特征值的情況(其中的“+”“-”符號是相對于中間水平直線的)。特別考慮了兩向量間各種特殊位置的情況,這些特殊位置造成了幾何奇異。

根據定義1和定義2,如果有任一向量與多邊形的邊界向量相交,則相對于該向量,若交點的特征值為-1,就意味從此交點開始,該向量進入多邊形內部,稱為“入點”,反之,該向量從此點離開多邊形,稱為“出點”。

圖1 兩向量交點特征值的各種情況

定義3單調多邊形 一個簡單多邊形關于某條直線L單調,如果對任何一條垂直于L的直線L',L'與多邊形交都是連通的,即它們的交可能是一條線段,或者是一個點,或者是空集。

例如,一個多邊形基于y坐標軸單調則稱它是y單調多邊形,它的一個鮮明幾何意義是:從最高頂點沿著多邊形的(左/右)邊界走向最低頂點的過程中,始終是向下(或水平)的,即y坐標值最大和最小兩個頂點可以將它的邊分成兩個單調邊序列,如圖2所示。

圖2 y單調多邊形及其三角化

一個單調多邊形的“最高點”與“最低點”將單調多邊形分成2個鏈,可以從上至下根據高度相鄰原則連接兩鏈間的頂點實現可三角化。圖2給出y單調多邊形的三角化的例子。

一般多邊形不是y單調的原因是因為存在一些局部y極值點,如果排除這些y極值點,多邊形就成為y單調的了。既然,最終的目的是將多邊形三角化,因此,如果能在y極值點處將多邊形分割,使形成y極值點的2條邊分屬于兩個多邊形,那么,在新的兩個多邊形中,該y極值點處y坐標就是單調的了。

2 算法描述

2.1 算法基本原理

本文算法先將一般多邊形分割為y單調多邊形,再將y單調多邊形劃分成三角形。所處理的圖形可以有任意個外邊界,每個外邊界可以含有0到多個內孔。

一個y極值點(Ymax和Ymin點)與左右相鄰邊界頂點不是單調的,因此,一個簡單的思想是在y極值點處分割圖形就能達到極值點兩邊的邊界成為y向單調。本算法的基本原理就是依據這個原理。先通過一個簡單的例子闡述算法的基本思想。

如圖3所示,圖形含有1個外邊界和2個內孔。找出所有邊界中的局部y極值點(Ymax和Ymin點),此圖中外邊界為凸多邊形,只需考慮內邊界的y極值點,有2+2個。通過這些y極值點作水平線,一個極值點形成一條水平分割線。一般情況下水平分割線與圖形的邊界有很多交點,用于劃分圖形成y單調多邊形的分割線的端點由這些交點中離極值點最近的左右2個交點構成,這樣分割線就能有效地將圖形劃分的區域即為y單調多邊形,如圖3中4條分割線將原多邊形分成7個y單調多邊形。

圖3 多邊形的y單調劃分

2.2 y極值點分割線的算法

衡量一個算法的穩定性就是看它處理奇異情況的能力,本算法充分利用邊界的方向性及交點特征值可以方便快捷解決這個問題。基本原則是:如果水平分割線與圖形邊界的交點是一個重交點,則利用定義2,把交點特征值代數和的符號作為重交點特征值的符號,當2個重交點的特征值代數和不為零時,保留其中一個交點,特征值絕對值仍取為 1,符號不變;2個重交點的特征值代數和為零時,取消重交點,如圖 4、圖 5所示。

y極值點分割線的算法課簡述如下:

1) 對圖形中每一局部極值點作自左至右的水平向量(該向量的左端點和右端點均需超越整個圖形以保證與所有邊界均能求交);

2) 求取該分割線向量與圖形各邊界的邊向量的交點及交點相對于該分割線向量的特征值(圖4中標有“○-”、“○+”的交點);

3) 對所有交點(及其附帶的特征值)自左至右(即按水平方向的x值從小到大)排序;

4) 處理重交點,如果水平分割線通過圖形邊界的頂點(此時2個交點的x值相同,圖4中7、8),就形成重交點。當重交點特征值代數和不為零時,保留其中一個交點,特征值絕對值仍取為1,符號不變;重交點的特征值代數和為零時,取消重交點;

5) 處理重邊交點,如果水平分割線與圖形某邊界重合(此時2個交點的x值不相同)就形成重邊交點。此時如果重交點的2個特征值均為“+”,取消后一個重交點(圖4中1、2取1),如果 2個特征值均為“-”,取消前一個重交點(圖4中3、4取4);

6) 如果有交點,則取y極值點左面最近的“-”特征交點與右面最近的“+”特征交點作為該y極值點分割線的端點。否則,該y極值點分割線不計(圖4中①、②)。

圖4 帶有幾何奇異的圖形

2.3 y單調多邊形劃分算法

一般多邊形轉化成y單調多邊形的基本原理很簡單,實施卻很復雜,因為算法將處理含有內孔的多邊形,且包含復雜的奇異狀況。下面的算法將任意的多邊形區域劃分成若干個y單調多邊形。算法可分成兩部分:(1)求取分割線;(2)對y單調多邊形(參閱圖4)。

2.3.1 邊界頂點排序

對多邊形的每一邊界頂點按照定義2排序,邊界前進方向的左側為內部。

2.3.2 求局部極值點

求取所有邊界頂點鉛垂方向的局部極值點(Ymax和Ymin點)(圖4中局部最低頂點以“●”表示,局部最高頂點以“⊙”表示)。

2.3.3 作水平分割線

對每一局部極值點,執行“y極值點分割線的算法”。

2.3.4 建立“標記點”

建立下列點作為“標記點”:

1) “節點點”:將所有負交點(“○-”點)及局部最低頂點(“●”)作“節點點”標記。從每個節點點出發就可搜索到一個 y單調多邊形,即“節點點”數就是劃分的總y單調多邊形個數。其中,如果負交點不在任何邊界的頂點上,則需將其插入到所在邊界的頂點隊列中。

2)“上變向點”:將所有正交點(“○+”點)作“上變向點”標記。如果正交點不在任何邊界的頂點上,則需將其插入到所在邊界的頂點隊列。

3) “下變向點”:對所有在分割線上的局部極大點(“⊙”)作標記,記為“下變向點”。即每條分割線段的左端點為“節點點”,右端點為“上變向點”,位于分割線段上的局部極大點為“下變向點”。

2.3.5 標記點連接關系

對每一非退化成一個點的分割線段執行下列操作:

1) 對每一分割線段,從左至右,對“節點點”和“上變向點”排序,建立后序關系。

2) 對每一分割線段,從右至左,對“上變向點”、“下變向點”和“節點點”排序,建立前序關系。

2.3.6 執行“單調多邊形構建算法”

按照下面流程完成單調多邊形。

N1【開始一個新節點】:依次取一“節點點”,Flag←1,記錄該點為“首點”,并開始一個新節點。

N2【取下一點】:如果Flag=1,取下一個“標記點”,否則取下一個“邊界頂點”。

N3【回到首點?】:如果是“首點”,則已找到一個封閉單調多邊形。對該單調多邊形做三角化。記錄三角化數據,“首點”作已用標記,轉N5。

N4【到標記點?】:如果是“標記點”,Flag←1-Flag,轉 N2。

N5【結束?】:如果“節點點”完,則算法結束,否則轉N1。

這樣整個多邊形被分割線分為多個y單調多邊形。

圖5是水平分割線劃分圖4的結果。

圖5 通過水平分割線分割以后形成的節點區域

3 數據結構

算法的數據結構包括:多邊形的數據結構、劃分節點水平分割線的數據結構、y單調多邊形的數據結構。這里沿用何援軍教授在文獻[10]中定義的3種數據結構。

4 算法實例

通過VC6.0開發工具實現該算法,并運行在XP系統上,對多個任意形狀的多邊形進行測試,如圖6所示,選取具有代表性的4個例子,分別列出水平分割線將原圖形分割之后的結構,以及分割之后對分割出來的y單調多邊形進行三角化的結果。

圖 6 三角化例子

由圖6的案例可以看出,該算法采用分割線很好的將任意的多邊形劃分為多個單調多邊形,從而快速實現三角化,同時對含有島的多邊形也有較好的處理。算法實現的過程稍微復雜,是因為考慮到在用分割線分割圖形時,水平向量與多邊形相交時的一些奇異情況,但運用交點的特征值,很好的處理了這些奇異情況,并取得較好的效果,因此,具有更廣泛的應用價值。另外對原有圖形中重點重邊問題也有一定解決。如圖7所示,圖7(b)中的A點是內孔與外邊界的重點,也可以是原圖形的自交點,并且又是局部極值點,對A點處理應該有一條水平分割線。圖7(a)中A點同圖7(b)一樣,但該點的性質如圖4中的②情況一樣,對此點應沒有分割線;但AB又是內孔與外邊界的重邊,在進行水平分割線分割之后,形成3個單調多邊形和AB線段。圖7(c)中的A、B兩點與圖7(a)圖的A點一樣,處理時應沒有分割線。

圖 7 對奇異情況的處理

5 總 結

本文提出的算法可用于帶0個或多個的內環任意平面多邊形區域的三角化,也可以擴展到含有島的任意多邊形三角化,因此,是一個通用的三角化算法。本算法先對邊界走向進行定義,通過邊界y軸(或x軸)方向的局部極值點的分割線將多邊形從上向下(或是從左到右)進行分割,采用交點的特征值比較徹底地解決了分割時的重點問題,將多邊形區域準確地劃分成若干個y單調多邊形(或x單調多邊形)。本算法原理簡單易實施,適合于任意復雜的多邊形,因而具有很好的魯棒性。

[1]Chazelle B. Triangulating a simple polygon in linear time [J]. Discrete Comp Geom, 1991, 6(5): 485-524.

[2]肖忠暉, 盧振榮, 張 謙. 簡單多邊形凸單元剖分的編碼算法[J]. 計算機輔助設計與圖形學學報,1996, 8(增刊): 120-127.

[3 ]Kong X S, Everett H, Toussaint G T. The grahams can triangulates simple polygons [J]. Pattern Recognition Letters, 1990, 11(11): 713-716.

[4]馬小虎, 潘志庚, 石教英. 基于凹凸頂點判定的簡單多邊形Delaunay三角剖分[J]. 計算機輔助設計與圖形學學報, 1996, 7(4): 1-3.

[5]李學軍, 黃文清. 平面區域三角化的快速算法[J].計算機輔助設計與圖形學學報, 2003, 15(2):233-238.

[6]畢 林, 王李管, 陳建宏, 馮興隆. 快速多邊形區域三角化算法與實現[J]. 計算機應用研究, 2008, (10):3030-3033.

[7]陳向平, 應道寧. 統一于NIP的多邊形三角剖分算法[J]. 計算機學報, 1989, 12(3): 194-199.

[8]鄧先禮, 胡 達, 杜小平. 多連通多邊形三角化找橋算法的研究及實現[J]. 計算機與現代化, 2004, (5): 4.

[9]徐春蕾, 李思昆. 一種適用任意平面多邊形的三角剖分算法[J]. 國防科技大學學報, 2000, 22(2):82-85.

[10]何援軍, 孫承山, 曹金勇. 繡花縫針軌跡問題[J].計算機學報, 2003, 26(9): 1211-1216.

主站蜘蛛池模板: 99精品免费在线| 最新国产午夜精品视频成人| 91小视频版在线观看www| 婷婷开心中文字幕| 99免费在线观看视频| 免费在线不卡视频| 婷婷激情亚洲| 亚洲欧美综合精品久久成人网| yy6080理论大片一级久久| 亚洲精品成人片在线观看| 亚洲国产在一区二区三区| 久久青草精品一区二区三区| 在线国产91| 欧美一级高清免费a| 国产又黄又硬又粗| 亚洲伦理一区二区| 亚洲区第一页| 天天躁日日躁狠狠躁中文字幕| 国产毛片基地| 狠狠色香婷婷久久亚洲精品| 日韩在线永久免费播放| 午夜爽爽视频| 日韩欧美在线观看| 国产黄视频网站| 欧美一区二区丝袜高跟鞋| 欧美高清三区| 粗大猛烈进出高潮视频无码| 久久99热66这里只有精品一| 久久国产亚洲偷自| 综合久久久久久久综合网| 五月天香蕉视频国产亚| 国产本道久久一区二区三区| 色屁屁一区二区三区视频国产| 国产免费怡红院视频| 黄色网在线| Jizz国产色系免费| 欧美日韩午夜视频在线观看 | 国产超碰一区二区三区| 美女扒开下面流白浆在线试听| 久久久精品国产亚洲AV日韩| 国产高颜值露脸在线观看| 欧美成人亚洲综合精品欧美激情| 国产精品吹潮在线观看中文| 国产精品99r8在线观看| 国产毛片高清一级国语| 日本三区视频| 婷婷六月在线| 精品国产Av电影无码久久久| 国产精品va免费视频| 欧美特级AAAAAA视频免费观看| 成人午夜视频在线| 久久久久久尹人网香蕉| 欧美人与动牲交a欧美精品| a级高清毛片| 中文字幕av无码不卡免费| 99人妻碰碰碰久久久久禁片| 欧美不卡视频一区发布| 日韩在线播放中文字幕| 国产www网站| 福利一区三区| 91视频99| 亚洲国产欧美国产综合久久| 亚洲av无码片一区二区三区| 草逼视频国产| 午夜国产大片免费观看| 热99精品视频| 真实国产乱子伦高清| 91毛片网| 久久6免费视频| 日本人又色又爽的视频| 伊在人亚洲香蕉精品播放 | 欧美一级黄片一区2区| 亚洲中文字幕97久久精品少妇| 日日摸夜夜爽无码| 久久亚洲国产视频| 久久久精品久久久久三级| 亚洲人人视频| 996免费视频国产在线播放| 91丝袜乱伦| 色成人综合| 日本欧美精品| 一区二区无码在线视频|