<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

一種判定點是否位于多邊形內的方法

文檔序號:6362661閱讀:517來源:國知局

專利名稱::一種判定點是否位于多邊形內的方法
技術領域
:本發明涉及一種點在多邊形內的判定計算方法,屬于計算機算法、計算幾何技術、計算機圖形
技術領域
,具體說是一種基于網格劃分快速執行點在多邊形內判定計算的方法。
背景技術
:點在多邊形內的判定計算是一種基本的計算幾何技術,在計算機圖形學、計算幾何、地理信息系統等方面有著廣泛的應用。該問題的描述是給定多邊形P和任意點Q,判定點Q是否位于多邊形P內。關于多邊形的點包容性判斷的工作很多,基本可分為兩類一類是依靠計算某些參數得到判定結果。例如經典的射線法(ray-crossing)(FoleyJD,vanDamA,FeinerSK,HughesJF.ComputerGraphics-PrinciplesandPractice.2nded.Reading,MAAddison-ffesley.1990.),就是過待測點向某方向作一條射線,計算該射線與多邊形的邊的交點個數來進行判定。若有奇數個交點,則該點位于多邊形內;否則位于多邊形外。這種方法簡單直觀,可處理任意多邊形,通常被用作與其他算法對比的基準算法。其它的還有基于角度之和的算法(HormannK,AgathosA.Thepointinpolygonproblemforarbitrarypolygons.ComputationalGeometryTheoryandApplications2001;20:131-144.)、基于三角形操作的算法(FeitoFR,TorresJC.Inclusiontestforgeneralpolyhedra.Computers&Graphics1997;21(I):23-30.)等。這類算法的實現較為簡單,但需要進行逐邊操作,計算時間復雜度均為O(N),這里N為多邊形的邊數。另一類則是通過將多邊形分解為一些簡單的幾何單元,建立某種輔助結構來加速判定操作,如梯形法(BorutZalik,GordonJ.Clapworthy,Auniversaltrapezoidationalgorithmforplanarpolygons.Computers&Graphics23(1999):253-263.)、網格法(ZalikB,KolingerovaAcell-basedpoint-in-polygonalgorithmsuitableforlargesetsofpoints.Computers&Geosciences2001;27:1135-1145。和ShengYang,Jun-HaiYong,JiaguangSun,HejinGu,Jean-ClaudePaul.Apoint-in-polygonmethodbasedonaquasi-closestpoint.Computers&Geosciences36(2010):205-213.)、分層法(WenchengWang,JingLi,EnhuaWu.2Dpoint-in-polygontestbyclassifyingedgesintolayers.Computers&Graphics29(2005):427-439.)、凸剖分法(JingLi,WenchengWang,EnhuaWu.Point-in-PolygonTestsbyConvexDecomposition.Computers&Graphics31(2007):636-648)、層次三角形(JuanJ.Jimenez,FranciscoR.Feitoa,RafaelJ.Seguraa.Anewhierarchicaltriangle-basedpoint-in-polygondatastructure.Computers&Geosciences35(2009):1843-1853.)等。這類算法雖然能提高檢測計算的效率,但其預計算的開銷一般比較大。一般而言,它們比較適合于對同一多邊形進行多次檢測的應用。凸剖分法(JingLi,WenchengWang,EnhuaWu.Point-in-PolygonTestsbyConvexDecomposition.Computers&Graphics31(2007):636-648)是先將多邊形凸剖分并以樹結構管理所得的凸多邊形,判定時通過樹結構快速查找可能包含待測點的凸多邊形,然后以高效的凸多邊形點檢測算法確定待測點是否在多邊形內。當剖分得到的凸邊形個數較少時,該算法具有很高的效率。但隨著凹點數目的增多,凸多邊形數目隨之增多,檢測時間增長。此外,凸剖分法的預處理時間也相對較長。網格結構簡單,倉Il建迅速,在實際中得到較多的應用。文獻(ZalikB,KolingerovaAcell-basedpoint-in-polygonalgorithmsuitableforlargesetsofpoints.Computers&Geosciences2001;27:1135_1145。)將多邊形所在區域均勻剖分為O(N)個網格,并為每個網格單元標記其位于多邊形內、外、或是多邊形邊界上。在檢測時,一一判定待測點和網格單元的位置關系,若待測點位于內部或外部網格單元內,則可以0(1)時間直接斷定點位于多邊形的內部或外部;若待測點位于邊界網格單元中,則需要查找距待測點最近的邊,并根據待測點與此最近邊的位置關系得到最終判定結果。該方法的期望預處理時間為0(N3/2),空間開銷為O(N),檢測時間復雜度為0(N1/2)。但該判定方法的判定相對復雜,在最近點與待測點位于不同單元或者多邊形的兩條鄰邊幾乎共線時會出現錯誤。為此,文獻(ShengYang,Jun-HaiYong,JiaguangSun,HejinGu,Jean-ClaudePaul.Apoint-in-polygonmethodbasedonaquasi-closestpoint.Computers&Geosciences36(2010):205-213.)提出了一種被稱為“quasi-closestpoint”的改進方法(簡稱QCPM),即附加一些約束條件并擴大查找范圍至相鄰單元,以找到合適的距待測點最近的邊,以免選擇錯誤而導致判定出錯。這樣,這種方法在判定時就需要處理多個網格單元。由于點在多邊形內的判定計算是一種基本計算,其效率對于應用系統的工作效率有很大的影響,因此,研究其高效處理的方法一直是國際上討論的熱點問題。
發明內容本發明的目的在于發掘局部相關性,以提高點在多邊形內判定計算的效率。本發明提供一種基于矩形網格中心點判定待測點位置屬性的方法。該方法大致可分為兩個步驟先將多邊形包圍盒進行均勻地矩形網格剖分,逐步計算各個網格中心點的位置屬性;再根據已獲知‘內/外’屬性的網格中心點和待測點的連線與多邊形邊之間的關系判定待測點位置。在判定網格中心點的位置屬性時,我們先處理靠近包圍盒邊沿的網格單元,即對于任一個靠近包圍盒邊沿的網格中心點,將其與包圍盒外任一點進行連線,然后計算與該連線相交的多邊形邊的數目,以判斷這些點是否位于多邊形內;然后,按照一定傳遞方式,如根據已獲知其‘內/外’屬性的網格中心點,由外及里逐步地遞推計算它們鄰近網格中心點是否位于多邊形內,也就是說,任一個未知位置屬性的網格中心點,與它附近已處理的網格中心點(只有第一次是與包圍盒外的點)進行連線,然后計算與該連線相交的多邊形邊的數目,即可判斷該點是否位于多邊形內。以上過程逐步地進行,直至所有網格中心點獲得其位于多邊形‘內/外’的屬性。如圖I所示,我們按照由左往右的方式,逐步地計算各個網格中心點與多邊形的位置關系。在判斷一個待測點是否位于多邊形內時,我們根據其坐標得知它所在的網格單元,然后,將該網格單元中心點與待測點進行連線,計算與該連線相交的多邊形邊的數目。根據相交的邊的數目和該中心點的‘內/外’屬性,即可判斷待測點是否位于多邊形內。判斷計算如下如果相交的邊數是奇數,則待測點的‘內/外’屬性與該中心點的‘內/外’屬性是相反的;反之,相交的邊數是偶數,則待測點的‘內/外’屬性與該中線點的‘內/外’屬性是相同的。這可以根據射線法的原理很方便地推導出來。在本發明的處理中,有一些奇異情況要處理,即網格中心點位于多邊形的頂點或邊上,這樣的網格中心點被稱為奇異點。對此,我們的處理如下對于奇異點,我們進行標志;然后在進行檢測計算時,如果待測點所在網格單元的中心點是一個奇異點,我們就沿著一定的方向(一般是沿著平行坐標軸的某個方向)逐步地搜索鄰近的網格單元,直至找到一個非奇異的網格中心點(包圍盒的外面的任一點都位于多邊形外,在本發明中都作為非奇異網格中心點處理)。本發明的有益效果如下與現有關于點在多邊形內的判定計算方法相比,特別是與基于網格剖分的同類相t匕,本發明的預計算簡單快速,檢測計算也很簡便,空間需求少,能有效減少判定計算要處理的多邊形邊的數量,很好地利用局部計算降低計算開銷。此外,由于本發明在檢測時僅需要求線段相交多邊形邊的數量,因此本發明對于自相交、重疊邊等非流形情況能夠等同地處理。圖I是本發明的根據局部相關性逐步遞推計算各單元中心點位置的示意圖;圖2是兩條直線段間奇異情況的不意圖;圖3是本發明處理自相交、重疊邊等非流形情況的示意圖;圖4是本發明實驗所用的多邊形結構圖。具體實施例方式本發明包括兩個階段第一階段是對多邊形的包圍盒進行均勻的網格劃分,并計算各個網格中心點(預測點)與多邊形的位置關系;第二階段是根據預測點的位置屬性,對待測點進行局部計算,以判斷待測點與多邊形的位置關系。第一階段的步驟如下I)根據文獻(ZalikB,KolingerovaI.Acell-basedpoint-in-polygonalgorithmsuitableforlargesetsofpoints.Computers&Geosciences2001;27:1135-1145.)中經驗公式,計算網格劃分的分辨率,即^,UD.■:,其中,W和H分別為網格包圍盒的長度和寬度,而No0fCellsx和NoOfCellsy分別是沿X軸y軸方向的網格單元個數。2)在確定分辨率后,要為每個網格單元計算落入其中的邊,并將邊指針加入相關網格單元。也就是說在確定分辨率后,要為每個網格單元計算并記錄落入其中的邊。所謂的邊指針是指程序實現中指向邊結構的指針。為了快速實現該過程,我們使用DDA算法(Cleary,J.C.,Wyvill,G.Analysisofanalgorithmforfastraytracingusinguniformspacesubdivision.TheVisualComputer1988;4(2):65-83),僅以加法遞增計算各個邊占據的網格單元。3)在創建網格之后,計算每個網格中心點的‘內/外’屬性,也就是判定這些中心點位于多邊形之內還是之外。具體方法是在判定網格中心點的位置屬性時,我們先處理靠近包圍盒邊沿的網格單元,即對于任一個靠近包圍盒邊沿的網格中心點,將其與包圍盒外任一點進行連線,然后計算與該連線相交的多邊形邊的數目,以判斷這些點是否位于多邊形內;然后,按照一定傳遞方式,如根據已獲知其‘內/外’屬性的網格中心點,由外及里逐步地遞推計算它們鄰近網格中心點是否位于多邊形內,也就是說,任一個未知位置屬性的網格中心點,與它附近已處理的網格中心點(只有第一次是與包圍盒外的點)進行連線,然后計算與該連線相交的多邊形邊的數目,即可判斷該點是否位于多邊形內。以上過程逐步地進行,直至所有網格中心點獲得其位于多邊形‘內/外’的屬性。如圖I所示,自左至右遍歷各個網格單元,并遞推地進行判定計算各個網格中心點與多邊形的位置關系。第二階段的步驟如下I)根據待測點Q的坐標找到它所在的網格單元Cti,j,其中i,j分別為單元X,Y方向上的坐標。2)檢測網格單元的中心點的標志,看它是否是奇異點。如果是奇異點,我們就從“往左、往右、往上、往下”中任選一個方向,從該網格單元出發,逐個地搜索所考察的鄰近網格中心點是否是奇異的,直至找到一個非奇異的網格中心點,設為Μ’3)連一條從Q到中心點M’ti,的連線QM’ti,(稱為待測邊)。4)遍歷該連線穿過的該網格單元中所有的邊,記錄與QM’u有交的多邊形邊的個數。如果相交邊數為偶數,則待測點Q與網格中心點M,[U的‘內/外’屬性相同;否則,待測點Q與M’的‘內/外’屬性相反。因為每條多邊形的邊為一條線段,故在本發明中,要檢測多邊形的邊是否與兩個點的連線相交,也就是說,要判斷兩條線段是否相交,可以通過判定點與直線的相對位置關系實現。即設有兩條線段ei和e2,若ei的兩個頂點分別位于e2的兩側,并且e2的兩個頂點分別位于ei的兩側,則認為ei與e2有交;否則認為ei與e2無交。判斷一個點Q與一條邊e關系的方法如下設邊e的兩個頂點分別為Ptl和P1,Q為待測點。計算向量獲與向量可f的叉積的Z值。若該值大于0,則認為Q在e的右側;否則認為Q在e左側。如此得到的點與邊的關系僅分為兩種,即左側與右側。如果點與邊共線,則強制認為其位于直線的某一側(如設為左側),這種行為稱為強制設定規則。這樣做的優點是避免了對奇異情況的特殊處理。它在各種奇異情況下均能得到正確的結果,下面舉出幾個例子作為說明,其他奇異情況以此類推。設沿多邊形的邊逆時針行走時(即圖2中的箭頭方向),左手側為多邊形內,右手側為多邊形外。若待測點與網格中心點的連線穿越多邊形的頂點,則可能出現圖2(a)、(b)所示的情況。M,是作為參考的已知位置屬性的非奇異點,不失一般性可假定為多邊形內。在圖2(a)中,按照強制設定規則,相交AP1位于M’Q1的左側,而多邊形的邊士和匕的另一端也在M’Q1的左側,因此M’Q1與和Id1均無交,Q1M,的位置屬性相同,皆為內部。結論正確。圖2(b)中,對于Q2,相交點P2的位置被強制設為M’Q2的左側,那么M’Q2與b2無交,與a2有交。相交數量為1,02與『的位置屬性相異,即Q2位于多邊形外,結論正確。若待測點與網格中心點的連線與多邊形的邊共線,則可能出現圖2(c)、(d)所示的情況。圖2(c)中,多邊形的邊b3與M,Q3重合,按照強制設定規則,邊b3位于M,Q3的左側,與M’Q3無交。M’Q3分別與&3和C3相交,相交個數為2,因此Q3與,的屬性相同,均為多邊形內。而在圖2(d)中,比與皿’Q4重合。判定時,b4被判定為位于M’04的左側,M’Q4僅與a4相交。因此,Q4與,的屬性相反,位于多邊形外。由于本發明在檢測時只需求解線段相交多邊形邊的數量,因此本發明對于自相交、重疊邊等非流形情況能夠等同地處理。以圖3為例,圖3(a)中,多邊形的邊P5Pc^PP2P3自相交,中心點M位于多邊形內,測試邊QM與P5Pci和P2P3均相交,交點數為偶數,所以Q位于多邊形內。在圖3(b)中,邊P2P3和P3P2重疊,中心點則立于多邊形內,測試邊QM與P2P3和P3P2均相交,交點數為偶數,所以Q位于多邊形內。為了驗證新算法的性能,我們在一臺配置有2.85GHzCPU,4GBRAM的臺式機上與其他算法進行了對比實驗。用于對比的算法分別來自于網格法(ZalikB,KolingerovaI.Acell-basedpoint-in-polygonalgorithmsuitableforlargesetsofpoints.Computers&Geosciences2001;27:1135-1145)、網格改進法QCPM(ShengYang,Jun-HaiYong,JiaguangSun,HejinGu,Jean-ClaudePaul.Apoint-in-polygonmethodbasedonaquasi-closestpoint.Computers&Geosciences36(2010):205-213.)和凸剖分法(JingLi,WenchengWang,EnhuaWu.Point-in-PolygonTestsbyConvexDecomposition.Computers&Graphics31(2007):636-648.)。其中,網格法和QCPM的數據直接引用自文獻(ShengYang,Jun-HaiYong,JiaguangSun,HejinGu,Jean-ClaudePaul.Apoint-in-polygonmethodbasedonaquasi-closestpoint.Computers&Geosciences36(2010):205-213.)。其試驗中使用的計算機配置為2.93GHzCPU,512MBRAM,優于我們實驗的機器。凸剖分法為三叉樹實現。被測多邊形均來自文獻(ZalikB,KolingerovaI.Acell-basedpoint-in-polygonalgorithmsuitableforlargesetsofpoints.Computers&Geosciences2001;27:1135-1145),如圖4所不。待測點個數均為1,000,000,均勻分布在比網格包圍盒稍大的范圍內,圖4a)為多邊形pollO,圖4b)為多邊形pollOO,圖4c)為多邊形poll249,圖4d)為多邊形pol28000。表I列出了實驗結果,包括各種算法的預處理時間、1,000,000個點的判定時間、預處理和判定的總時間(單位均為秒),以及新方法相對于這些對比方法的計算加速率。在此,各種網格方法都是基于同樣的網格劃分分辨率進行的。表I本發明與其他方法的對比實驗數據權利要求1.一種判定點是否位于多邊形內的方法,其步驟包括(1)將多邊形包圍盒進行矩形網格剖分;(2)判定各網格中心點是否位于多邊形內,得到各中心點相對于多邊形的內外屬性;(3)根據待測點的坐標確定其所在網格單元;(4)逐個搜索待測點所在網格單元的中心點及其鄰近中心點,直至得到一非奇異的中心點;(5)計算待測點與所述非奇異中心點的連線穿過的多邊形邊的個數,當為偶數個時,判定待測點與所述非奇異點具有相同的內外屬性,否則相反。2.如權利要求I所述的方法,其特征在于,步驟(2)先處理靠近包圍盒邊沿的網格單元,再由外及里逐步地遞推計算它們鄰近網格中心點的位置。3.如權利要求2所述的方法,其特征在于,對于任一個靠近包圍盒邊沿的網格中心點,將其與包圍盒外任一點進行連線,然后計算與該連線相交的多邊形邊的數目,以判斷這些點與多邊形的位置關系。4.如權利要求2所述的方法,其特征在于,遞推計算是將任一個未知位置屬性的網格中心點,與它附近已處理的網格中心點進行連線,然后計算與該連線相交的多邊形邊的數目,從而判斷該點與多邊形的位置關系。5.如權利要求2至4所述的方法,其特征在于,遞推計算是自左至右遍歷各個網格單JLiο6.如權利要求I所述的方法,其特征在于所述步驟(3)是根據待測點Q的坐標找到它所在的網格單元Cti,j,其中i,j分別為單元X,Y方向上的坐標;所述步驟⑷具體為檢測網格單元Cu的中心點的標志,看它是否是奇異點,即位于多邊形的頂點或邊上的網格中心點;如果是奇異點,就從“往左、往右、往上、往下”中任選一個方向,從該網格單元出發,逐個地搜索所考察的鄰近網格中心點是否是奇異的,直至找到一個非奇異的網格中心點,設為M’;所述步驟(5)具體為連一條從Q到中心點M’的連線QM’形成待測邊;遍歷該連線穿過的該網格單元中所有的邊,記錄與QM’有交的多邊形邊的個數;如果相交邊數為偶數,則待測點Q與網格中心點M’的‘內/夕卜’屬性相同;否則,待測點Q與M’ti,^的‘內/夕卜’屬性相反。7.如權利要求6所述的方法,其特征在于,判斷兩條邊是否相交,通過判定點與直線的相對位置關系實現,若兩條邊各自的兩個頂點分別位于另一線段的兩側,則為相交。8.如權利要求7所述的方法,其特征在于,如果點與邊共線,則判定其位于直線的某一側。9.如權利要求I所述的方法,其特征在于,所述多邊形還包括自相交多邊形和重疊邊多邊形。全文摘要本發明提供一種判定點是否位于多邊形內的方法。該方法大致可分為兩個步驟先將多邊形包圍盒進行均勻地矩形網格剖分,由外及里逐步計算各個網格中心點的位置屬性;再根據已獲知‘內/外’屬性的網格中心點和待測點的連線與多邊形邊的相交關系判定待測點位置。本發明操作簡單,計算速度快,能有效減少判定計算要處理的多邊形邊的數量,還能統一處理多邊形有自相交、重疊邊等非流形情況,可很好地降低計算開銷。文檔編號G06T7/00GK102629375SQ20121000403公開日2012年8月8日申請日期2012年1月6日優先權日2012年1月6日發明者李靜,王文成申請人:中國科學院軟件研究所
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影