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