两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于三角形區(qū)域方程判斷點與面拓撲關(guān)系的方法

文檔序號:9826639閱讀:640來源:國知局
一種基于三角形區(qū)域方程判斷點與面拓撲關(guān)系的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于空間數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種基于三角形區(qū)域方程判斷點與面拓撲關(guān)系的方法。
【背景技術(shù)】
[0002]基于點、線、面三類地理實體構(gòu)成的空間數(shù)據(jù)在描述地理空間事物或現(xiàn)象的過程中,拓撲關(guān)系起著重要的作用,拓撲表達是描述空間數(shù)據(jù)圖形間關(guān)系不變性的重要方法;空間數(shù)據(jù)的拓撲關(guān)系包括鄰接關(guān)系、關(guān)聯(lián)關(guān)系和包含關(guān)系,點狀實體和面狀實體的拓撲關(guān)系主要指包含關(guān)系和關(guān)聯(lián)關(guān)系。點與面拓撲關(guān)系的判斷具有重要意義:一、能夠清楚地反映點狀實體和面狀實體之間的空間位置關(guān)系,有利于進行地理實體重建;二、作為判斷線與面、面與面拓撲關(guān)系的基礎(chǔ);三、是地理實體選取、信息查詢、空間分析等相關(guān)空間數(shù)據(jù)操作的依據(jù),例如鼠標點擊選取面狀實體、點擊查看面狀實體屬性信息、點與面的疊置分析等操作。
[0003]在空間數(shù)據(jù)結(jié)構(gòu)中,面狀實體通常用多邊形區(qū)域描述,因此,點與面的拓撲關(guān)系所描述的空間關(guān)系等效于點與多邊形區(qū)域的關(guān)系,所謂的判斷點與面的拓撲關(guān)系即確定點在多邊形內(nèi)或在多邊形邊界上或在多邊形外部。關(guān)于點與多邊形位置關(guān)系的判斷方法已有眾多研究,代表性算法如下:射線法,通過計算監(jiān)測點出發(fā)的射線與多邊形邊界的交點個數(shù)判斷點在多邊形內(nèi)部或外部;等面積法,通過監(jiān)測點與多邊形邊界點相連構(gòu)成的三角形面積之和是否與多邊形面積相等確定其位置關(guān)系;角度法,類似于等面積法,即通過監(jiān)測點與多邊形邊界點相連構(gòu)成的角度之和是否為360度確定其位置關(guān)系;多邊形剖分方法,該類算法首先通過某種方式將多變形剖分成若干亞圖形(例如凸多邊形、梯形等)然后按某種規(guī)則(例如樹結(jié)構(gòu))存儲和檢測點與亞圖形的位置關(guān)系。此外,還有基于多邊形邊界方向的判斷法、矢量相乘方法以及在上述算法基礎(chǔ)上改進的計算方法。
[0004]綜合分析現(xiàn)有的判斷方法,存在如下不足:1.時間復(fù)雜度高,例如射線算法,盡管該算法不用對多邊形進行預(yù)處理,容易實現(xiàn),但其時間復(fù)雜度為O(N) ;2.使用局限性,有的算法只局限于特定類型的多邊形,例如等面積法和角度法只適用于凸多邊形;3.判斷效率不高,特別是對于復(fù)雜多邊形,有些判斷方法在執(zhí)行時存在內(nèi)存開銷大、效率低下的問題。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的在于提供一種效率較高、適用于任意面狀區(qū)域與點的拓撲關(guān)系判斷方法,旨在解決點與面拓撲關(guān)系判斷方法的效率低下以及使用受限的問題。
[0006]本發(fā)明是這樣實現(xiàn)的,一種基于三角形區(qū)域方程判斷點與面拓撲關(guān)系的方法,包括步驟如下:
[0007]S1、構(gòu)建三角形區(qū)域方程
[0008]三角形區(qū)域方程的構(gòu)建依據(jù)是:原區(qū)域劃分后各子區(qū)域面積之和保持不變且等于原區(qū)域面積。結(jié)合圖1所示進行說明,三角形Δ abc,頂點坐標分別為a(xl,yl)、b(x2,y2)、c(^,73),監(jiān)測點為0(1,7),根據(jù)原區(qū)域劃分后總面積保持不變且等于原區(qū)域面積的規(guī)律,如果點o(x,y)在三角形內(nèi)或者三角形某條邊上,則滿足公式1:
[0009]S Δ abc = S Δ abo+S Δ aco+S Δ bco
[0010]公式I
[0011 ] S Δ abc表示三角形Δ abc的面積,S Δ abo表示三角形Δ abo的面積,S Δ aco表示三角形Δ aco的面積,S Δ bco表示三角形Δ bco的面積。
[0012]根據(jù)三角形面積計算公式,推導出以頂點坐標為參數(shù)的三角形面積公式表達式。以S △ abc的計算為例,其面積公式如公式2所示:
[0013]S Δ abc = l/2*Lab*h
[0014]公式2
[0015]Lab表示三角形Δ abc的邊ab的長度,h表示三角形Δ abc的頂點c到ab邊的距離;
[0016]根據(jù)三角形Δabc的頂點坐標計算邊ab的長度Lab的計算公式如公式3所示;
[0017]Lab = ((xl-x2)2+(yl-y2)2)1/2
[0018]公式3
[0019]根據(jù)三角形Δabc的頂點坐標計算頂點c到ab邊的距離h的計算公式如公式4所示:
[0020]h= Ixl*y2+x2*y3+x3*yl-xl*y3-x2*yl-x3*y2|/((x2-xl)2+(yl_y2)2)1/2[0021 ]公式 4
[0022]I I表示取絕對值;
[0023]將公式3和公式4帶入公式2,得到基于頂點坐標的三角形面積公式,如公式5所示;
[0024]SΔabc=1/2*|xl*y2+x2*y3+x3*yl-xl*y3_x2*yl_x3*y2
[0025]公式5
[0026]同理可以獲得S Δ abo、S Δ aco、S Δ bco,其表達式如公式6_8所示;
[0027]SΔabo=1/2*|xl*y2+x2*y+x*yl_xl*y-x2*yl_x*y2
[0028]公式6
[0029]SΔaco=1/2*|xl*y+x*y3+x3*yl-xl*y3_x*yl_x3*y
[0030]公式7
[0031 ] S Δ bco = 1/2* | x*y2+x2*y3+x3*y-x*y3_x2*y_x3*y2
[0032]公式8
[0033]將公式5、公式6、公式7、公式8帶入公式I,可得公式9,即三角形的區(qū)域方程。
[0034]Ixl*y2+x2*y3+x3*yl-xl*y3-x2*yl_x3*y2|=|xl*y2+x2*y+x*yl_xl*y-x2*yl_x*y2I + xl*y+x*y3+x3*yl-xl*y3_x*yl_x3*y| + |X*y2+x2*y3+x3*y-x*y3_x2*y_x3*y2
[0035]公式9
[0036]S2、確定點與三角形區(qū)域拓撲關(guān)系的判斷方法
[0037]根據(jù)SI中構(gòu)建的三角形區(qū)域方程,將監(jiān)測點的坐標(x,y)帶入三角形區(qū)域方程,如果不滿足公式9的等式條件,表明該監(jiān)測點不在三角形區(qū)域內(nèi),點與三角形區(qū)域呈相離狀態(tài);否則,表明該監(jiān)測點在三角形區(qū)域內(nèi)或者邊界上,然后將監(jiān)測點分別代入三角形三條邊所在的直線方程,如果滿足任一直線方程,則表明該監(jiān)測點在三角形區(qū)域邊界上,如果均不滿足三條直線方程,則表示該監(jiān)測點在三角形區(qū)域內(nèi)部。
[0038]S3、將面狀區(qū)域劃分為三角形區(qū)域,并依次存儲三角形區(qū)域的標識號及其頂點坐標
[0039]將面狀區(qū)域劃分為三角形區(qū)域的原則是:所劃分的每個三角形區(qū)域均屬于面狀區(qū)域的范圍;所劃分的所有三角形區(qū)域范圍之和等于面狀區(qū)域范圍。
[0040]首先判斷面狀區(qū)域邊界的形狀,然后按照面狀區(qū)域邊界呈凸多邊形情況或呈凹多邊形情況分別進行操作,結(jié)合圖2進行闡述。
[0041](I)按照存儲順序判斷面狀區(qū)域所有頂點的凹凸性,如果存在凹點,則面狀區(qū)域邊界呈凹多邊形,并按判斷順序分別存儲凹頂點和凸頂點;如果不存在凹點,則面狀區(qū)域邊界呈凸多邊形。
[0042]判斷面狀區(qū)域頂點凹凸性的方法如下:按照面狀區(qū)域頂點的存儲順序,依次取順序相連的三個頂點(Vi,Vi+1,Vi+2),形成以中間點Vi+1為頂點的角ZViVi+iVi+2,如果ZViVi+iVi+2大于180度,則頂點Vi+1為凹點;否則,頂點Vi+1為凸點。
[0043](2)對于面狀區(qū)域邊界形狀呈凸多邊形情況,結(jié)合圖3進行闡述:
[0044]①按照面狀區(qū)域頂點的存儲順序,以第一個頂點或者任一一頂點為固定點(Vn),依次連接與固定點不相鄰的點,將多變形區(qū)域分解成若干個子區(qū)域。
[0045]圖3所示中多邊形頂點存儲順序V1V2V3V4V5V6將首頂AV1作為固定點,依次連接與固定點不相鄰的點V1V3、ViV4、ViV5。
[0046]②依次判斷固定點Vn與其他順序存儲的兩個頂點(VnV1H)是否共線,a)如果不共線,則表示該三個頂點構(gòu)成的子區(qū)域為三角形區(qū)域,存儲該三角形的標識號ID及頂點坐標;b)如果共線,則繼續(xù)取下一個頂點(V1+2),判斷¥?與1+1和V1+2是否共線,并執(zhí)行a或b操作;依次進行固定點Vn與其他頂點的共線判斷及相應(yīng)操作,當所有頂點都被判斷結(jié)束后停止該步驟的操作。
[0047]圖3所示中首先判斷V3是否共線,本例中V3在一條直線上,然后判斷V1J3W是否共線,本例中V1、V3、V4不在一條直線上,則存儲三角形A V1V3V4的ID為I,并存儲頂點V1J3'V4的坐標,按照上述操作方法判斷完所有頂點,可以將面狀區(qū)域劃分成AV1V3V^Δ ViV4V5^P Δ V1V5V6三個三角形區(qū)域。
[0048](3)對于面狀區(qū)域邊界形狀呈凹多邊形情況,結(jié)合圖4進行闡述:
[0049]①將步驟(I)中存儲的凸頂點,按照存儲順序提取一個凸頂點(V1),并連接與其相鄰的兩個頂點(Vh’Vw),如果提取的凸頂點為面狀區(qū)域的第一個頂點V1,則Vo標識為面狀區(qū)域的最后一個頂點;判斷V1、Vh和V1+1是否共線,如果不共線,則構(gòu)成一個三角形區(qū)域;如果共線,則將步驟(I)中存儲的頂點V1刪除,如果(I)中存儲的頂點數(shù)為3,則多邊形區(qū)域完成三角形區(qū)域的劃分,否則,重復(fù)①操作;
[0050]圖4所示中的區(qū)域邊界多邊形,其凸頂點的存儲順序為V1V3V4V6V7,構(gòu)成的第一個三角形區(qū)域AV7V1V^
[0051]②判斷步驟①中生產(chǎn)的三角形區(qū)域是否包含面狀區(qū)域的其他頂點,判斷方法為S2中描述的方法,即將不包含三角形區(qū)域三個頂點的所有其他頂點帶入該三角形區(qū)域方程,判斷其他頂點在該三角形區(qū)域外部還是在內(nèi)部或邊界上。
[0052]如果步驟①中的三角形區(qū)域不包含其他任一頂點(不在內(nèi)部或邊界),則存儲該三角形的標識號ID及頂點坐標,并刪除頂點存儲;判斷以Vh和V1+1為頂點形成的角的凹凸性,并更新其在步驟(I)中相對應(yīng)的凹凸性的存儲,然后重復(fù)①操作;
[0053]如果步驟①中的三角形區(qū)域包含其他任一頂點(在內(nèi)部或邊界),舍棄處理該凸頂點Vi,然后重復(fù)①操作;
[0054]如果步驟(I)中的存儲的頂點總數(shù)為3,表明只有一個三角形區(qū)域,則多邊形區(qū)域完成三角形區(qū)域的劃分。
[0055]圖4所示中的面狀區(qū)域凸頂點的刪除順序
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
科尔| 沧源| 南宫市| 泰宁县| 贵定县| 新河县| 浮山县| 宁陕县| 丽江市| 西乡县| 泽库县| 茂名市| 临潭县| 镇康县| 海丰县| 文昌市| 盐源县| 德阳市| 鲜城| 合山市| 开封县| 阳江市| 漳浦县| 昌平区| 县级市| 广丰县| 房产| 武汉市| 四平市| 梁河县| 永城市| 彰武县| 资中县| 苍山县| 德令哈市| 闽侯县| 西昌市| 满城县| 巴林右旗| 衡南县| 清涧县|