專利名稱:一種判斷坐標(biāo)點是否屬于區(qū)域的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種判斷坐標(biāo)點是否屬于區(qū)域的方法。
背景技術(shù):
在嵌入式終端界面開發(fā)過程中,經(jīng)常需要判斷鼠標(biāo)或觸摸點是否在某個 不規(guī)則多邊形區(qū)域內(nèi),也既是經(jīng)常需要判斷坐標(biāo)點是否屬于區(qū)域,例如打開 多個窗口時,窗口間將會有重疊現(xiàn)象,重疊區(qū)即是一個不規(guī)則區(qū),鼠標(biāo)點擊 時需要判斷點擊屬于哪個窗口區(qū)域內(nèi)。
在GPRS (全球衛(wèi)星定位系統(tǒng))中,經(jīng)常需要判斷某個位置在哪個區(qū)域內(nèi), 也既是經(jīng)常需要判斷坐標(biāo)點是否屬于區(qū)域,例如判斷某個地理災(zāi)害是否位于 某個國家之內(nèi)。
現(xiàn)在的判斷大都采用內(nèi)角法進行判斷。由于內(nèi)角法判斷中需要引入浮點 計算,因此它存在有如下的技術(shù)問題1、某些處理器不支持帶浮點運算,無 法完成判斷;2、判斷效率低下,判斷結(jié)果不精確。
發(fā)明內(nèi)容
本發(fā)明提供一種判斷坐標(biāo)點是否屬于區(qū)域的方法,其克服了背景技術(shù)的 內(nèi)角法判斷所存在的不足。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是
一種判斷坐標(biāo)點是否屬于區(qū)域的方法,該有效區(qū)域由多個連續(xù)的定位點 圍成,該定位點個數(shù)大于等于3個,該判斷方法,它包括
步驟l,判斷有效區(qū)域的定位點個 _大于3還是等于3,如果是大于3 則執(zhí)行步驟2,如果是等于3則執(zhí)行步驟8;步驟2,讀取三個定位點,該三個定位點所圍成的三角形區(qū)域之內(nèi)沒有其 它定位點;
步驟3,判斷所述的三個定位點的順時針夾角是否大于180度,如果是則 執(zhí)行步驟5,否則執(zhí)行步驟4;
步驟4,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐 標(biāo)點未屬于區(qū)域并執(zhí)行步驟9,否則執(zhí)行步驟7;
步驟5,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐 標(biāo)點屬于有效區(qū)域并執(zhí)行步驟9,否則執(zhí)行步驟6;
步驟6,將有效區(qū)域分解成分解區(qū)域和三角形區(qū)域,將分解區(qū)域設(shè)置為新 的有效區(qū)域并執(zhí)行步驟l;
步驟7,將三角形區(qū)域和有效區(qū)域之和設(shè)置為新的有效區(qū)域并執(zhí)行步驟1;
步驟8,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐 標(biāo)點屬于有效區(qū)域并執(zhí)行步驟9,否則表示該坐標(biāo)點未屬于區(qū)域并執(zhí)行步驟9;
步驟9,得出判斷結(jié)果并結(jié)束。
一較佳實施例中,該步驟l之前還包括
步驟0,去除位于同一直線上的連續(xù)的三個定位點的中間定位點。 一較佳實施例中,該步驟0,它包括
步驟Ol,讀取連續(xù)的三個定位點dU), d{i+l}, d{i+2},其中,i為循 環(huán)變值參數(shù),初值為0;
步驟02,判斷三個定位點是否位于同一直線之上,如果是則執(zhí)行步驟03, 否則執(zhí)行步驟04;
步驟03,刪除位于中間的定位點d{i+l},然后執(zhí)行步驟04;
步驟04,變值^ti加l,然后判斷i+l值是否大于定位點的個數(shù),如果是則執(zhí)行步驟1 ,否則執(zhí)行步驟01 。 一較佳實施例中,該步驟2,它包括
步驟21,依順序讀取三個定位點d {0} , d{l}, dW,其中,X為循環(huán)變值 參數(shù),初值為2;
步驟22,判斷由上述的三個定位點所圍成的三角形區(qū)域之內(nèi)是否有其它 定位點,如果有則執(zhí)行步驟23,否則執(zhí)行步驟3; 步驟23,變值參數(shù)X加1,然后執(zhí)行步驟21。
本技術(shù)方案與背景技術(shù)相比本申請人巧妙地將判斷一個坐標(biāo)點是否屬 于不規(guī)則區(qū)域分解成判斷一個坐標(biāo)點是否屬于三角形區(qū)域,以得出判斷結(jié)果, 而判斷一個坐標(biāo)點是否屬于三角形區(qū)域,算法簡單,計算量少,方法很多, 無需浮點運算,因此它具有如下優(yōu)點1、不管支持不支持帶浮點運算的處理 器都能完成判斷;2、判斷效率高,判斷結(jié)果精確。由于還包括逐次判斷每連 續(xù)的三個定位點是否位于同 一直線之上,如果是則刪除位于中間的定位點, 因此能夠減少計算次數(shù),加快計算速度。
下面結(jié)合附圖和實施例對本發(fā)明進一步說明。
圖1是本發(fā)明 一較佳實施例的判斷坐標(biāo)點是否屬于區(qū)域的方法的流程圖。
圖2是本發(fā)明一實施例的區(qū)域圖處理示意圖之一。
圖3是本發(fā)明一實施例的區(qū)域圖處理示意圖之二。
圖4是本發(fā)明一實施例的區(qū)域圖處理示意圖之三。
圖5是本發(fā)明一實施例的區(qū)域圖處理示意圖之四。
圖6是本發(fā)明一實施例的區(qū)域圖處理示意圖之五。
圖7是本發(fā)明一實施例的區(qū)域圖處理示意圖之六。圖8是本發(fā)明一實施例的區(qū)域圖處理示意圖之七。 圖9是本發(fā)明一實施例的區(qū)域圖處理示意圖》>\。
具體實施例方式
一種判斷坐標(biāo)點是否屬于區(qū)域的方法,它用在計算設(shè)備之中,該計算設(shè) 備包括一 CPU及一存儲器。它用于在打開多個窗口時,窗口間將會有重疊現(xiàn) 象,重疊區(qū)即是一個不規(guī)則區(qū),鼠標(biāo)點擊時需要判斷點擊屬于哪個窗口區(qū)域 內(nèi)。
本實施例中的區(qū)域為不規(guī)則區(qū)域或規(guī)則區(qū)域,由多個連續(xù)的定位點圍成, 該定位點包括d(l), d{2}, , d{n}, n大于等于3。
請查閱圖1,它繪示了一種判斷坐標(biāo)點是否屬于區(qū)域的方法的流程圖。一 種判斷坐標(biāo)點是否屬于區(qū)域的方法,該有效區(qū)域由多個連續(xù)的定位點圍成, 該定位點個數(shù)大于等于3個,該判斷方法,它包括
步驟0,去除位于同一直線上的連續(xù)的三個定位點的中間定位點;其中, 該步驟0,它具體包括
步驟Ol,從存儲器之中讀取連續(xù)的三個定位點dU), d{i+l}, d{i+2}, 其中,i為循環(huán)變值參數(shù),初值為0;
步驟02,判斷三個定位點是否位于同一直線之上,如果是則執(zhí)行步驟03, 否則執(zhí)行步驟04;該判斷可采用判斷三個定位點之間的夾角是否等于180 度,由于該計算都是采用固點計算,因此無需浮點計算;
步驟03,刪除位于中間的定位點d(i+l),然后執(zhí)行步驟04;及
步驟04,變值參數(shù)i加1,然后判斷i+l值是否大于定位點的個數(shù),如 果是則執(zhí)行步驟l,否則執(zhí)行步驟01;
步驟l,判斷有效區(qū)域的定位點個ibl大于3還是等于3,如果是大于3則執(zhí)行步驟2,如果是等于3則執(zhí)行步驟8;
步驟2,讀取三個定位點,該三個定位點所圍成的三角形區(qū)域之內(nèi)沒有其 它定位點;其中,該步驟2,它具體包括
步驟21,依順序從存儲器之中讀取三個定位點dW, d{l}, dW,其中, X為循環(huán)變值參數(shù),初值為2;
步驟22,判斷由上述的三個定位點所圍成的三角形區(qū)域之內(nèi)是否有其它 定位點,如果有則執(zhí)行步驟23,否則執(zhí)行步驟3;及
步驟23,變值參數(shù)X加1,然后執(zhí)行步驟21;
步驟3,判斷所述的三個定位點的順時針夾角是否大于180度,如果是則 執(zhí)行步驟5,否則執(zhí)行步驟4;
步驟4,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐 標(biāo)點未屬于區(qū)域并執(zhí)行步驟9,否則執(zhí)行步驟7;
步驟5,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐 標(biāo)點屬于有效區(qū)域并執(zhí)行步驟9,否則執(zhí)行步驟6;
步驟6,將有效區(qū)域分解成分解區(qū)域和三角形區(qū)域,將分解區(qū)域設(shè)置為新 的有效區(qū)域并執(zhí)行步驟1;
步驟7,將三角形區(qū)域和有效區(qū)域之和設(shè)置為新的有效區(qū)域并執(zhí)行步驟1;
步驟8,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐 標(biāo)點屬于有效區(qū)域并執(zhí)行步驟9,否則表示該坐標(biāo)點未屬于區(qū)域并執(zhí)行步驟9;
步驟9,得出判斷結(jié)果并結(jié)束,將判斷結(jié)果發(fā)送給下一程序以作出執(zhí)行相 關(guān)操作,例如,將相關(guān)窗口區(qū)域設(shè)置為當(dāng)前窗口區(qū)域。
為了便于讀者清楚了解本發(fā)明,下面特舉一例子進行說明,該區(qū)域圖由 d{0}、 d{l}、 d{2}、 d{3}、 d{4}、 d{5}、 d{6}、 d{7}、 d{8}、 d(9)所圍成。該判斷方法,它包括
步驟A, d0、 dl、 d2組成的三角形內(nèi)有d4點;dl、 d2、 d3組成的三角形 內(nèi)沒有其它點,所以選擇dl、 d2、 d3組成的三角形區(qū)域A_l_2_3。三角形 A_l_2—3的邊dld2與邊d2d3順時針夾角大于180度,如圖2所示。判斷坐標(biāo) 點是否位于A-l-2-3之內(nèi),如果是則表示該坐標(biāo)點位于區(qū)域之內(nèi),否則去除 A_l—2—3并執(zhí)行下步驟;
步驟B, d0、 dl、 d3組成的三角形內(nèi)有d4、 d5、 d6、 d8點;dl、 d3、 d4 組成的三角形內(nèi)沒有其它點,所以選擇dl、d3、d4組成的三角形區(qū)域A-l-3-4。 三角形A_l_3_4的邊dld3與邊d3d4順時針夾角大于180度,如圖3所示。 判斷坐標(biāo)點是否位于A-l-3-4之內(nèi),如果是則表示該坐標(biāo)點位于區(qū)域之內(nèi), 否則去除A-l-3-4并執(zhí)行下步驟;
步驟C, d0、 dl、 d4組成的三角形內(nèi)沒有其它點,所以選擇dO、 dl、 d4 組成的三角形區(qū)域A-0-l-4。三角形A—0-l-4的邊dOdl與邊dld4順時針夾角 大于180度,如圖4所示。判斷坐標(biāo)點是否位于A-0-l-4之內(nèi),如果是則表 示該坐標(biāo)點位于區(qū)域之內(nèi),否則去除A_ 0_ 1 -4并執(zhí)行下步驟;
步驟D, d0、 d4、 d5組成的三角形邊上有d8點;d4、 d5、 d6組成的三角 形內(nèi)沒有其它點,所以選擇d4、 d5、 d6組成的三角形區(qū)域A_4_5-6。三角形 A_4_5 —6的邊d5d6與邊d6d7順時針夾角小于180度,如圖5所示。判斷坐標(biāo) 點是否位于A-4-5-6之內(nèi),如果是則表示該坐標(biāo)點未位于區(qū)域之內(nèi),否則補 全A-4-5-6并執(zhí)行下步驟;
步驟E, d0、 d4、 d6組成的三角形邊上有d8點;d4、 d6、 d7組成的三角 形內(nèi)沒有其它點,所以選擇d4、 d6、 d7組成的三角形區(qū)域A_4_6-7。三角形 A-4-6-7的邊d4d6與邊d6d7順時針夾角大于180度,如圖6所示。判斷坐標(biāo)
9點是否位于A-4—6-7之內(nèi),如果是則表示該坐標(biāo)點位于區(qū)域之內(nèi),否則去除 A-4-6-7并執(zhí)行下步驟;
步驟F, d0、 d4、 d7組成的三角形內(nèi)有d8點;d4、 d7、 d8組成的三角形 內(nèi)沒有其它點,所以選擇d4、 d7、 d8組成的三角形區(qū)域A_4_7_8。三角形 A一4-7-8的邊d4d7與邊d7d8順時針夾角大于180度,如圖7所示。判斷坐標(biāo) 點是否位于A-4-7-8之內(nèi),如果是則表示該坐標(biāo)點位于區(qū)域之內(nèi),否則去除 A_4_7-8并執(zhí)行下步驟;
步驟G, d0、 d4、 d8組成的三角形內(nèi)沒有其它點,所以選擇d0、 d4、 d8 組成的三角形區(qū)域A—0-4_8。三角形A_0_4_8的邊d0d4與邊d4d8順時針夾角 大于180度,如圖8所示。判斷坐標(biāo)點是否位于A-0-4-8之內(nèi),如果是則表 示該坐標(biāo)點位于區(qū)域之內(nèi),否則去除A-0-4-8并執(zhí)行下步驟;
步驟H,如圖9所示,判斷坐標(biāo)點是否位于A-0-8-9之內(nèi),如果是則表示 該坐標(biāo)點位于區(qū)域之內(nèi),否則表示該坐標(biāo)點未位于區(qū)域之內(nèi)。
上述的實施例,主要是以嵌入式界面開發(fā)設(shè)計為例進行說明,但并不以 此為限,同樣,它可以應(yīng)用在在GPRS (全球衛(wèi)星定位系統(tǒng))中判斷某個位置 在哪個區(qū)域內(nèi),也既是經(jīng)常需要判斷坐標(biāo)點是否屬于區(qū)域,例如判斷某個地 理災(zāi)害是否位于某個國家之內(nèi)。
以上所述,僅為本發(fā)明較佳實施例而已,故不能以此限定本發(fā)明實施的 范圍,即依本發(fā)明申請專利范圍及說明書內(nèi)容所作的等效變化與修飾,皆應(yīng) 仍屬本發(fā)明專利涵蓋的范圍內(nèi)。
10
權(quán)利要求
1.一種判斷坐標(biāo)點是否屬于區(qū)域的方法,該有效區(qū)域由多個連續(xù)的定位點圍成,該定位點個數(shù)大于等于3個,其特征是該判斷方法,它包括步驟1,判斷有效區(qū)域的定位點個數(shù)是大于3還是等于3,如果是大于3則執(zhí)行步驟2,如果是等于3則執(zhí)行步驟8;步驟2,讀取三個定位點,該三個定位點所圍成的三角形區(qū)域之內(nèi)沒有其它定位點;步驟3,判斷所述的三個定位點的順時針夾角是否大于180度,如果是則執(zhí)行步驟5,否則執(zhí)行步驟4;步驟4,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐標(biāo)點未屬于區(qū)域并執(zhí)行步驟9,否則執(zhí)行步驟7;步驟5,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐標(biāo)點屬于有效區(qū)域并執(zhí)行步驟9,否則執(zhí)行步驟6;步驟6,將有效區(qū)域分解成分解區(qū)域和三角形區(qū)域,將分解區(qū)域設(shè)置為新的有效區(qū)域并執(zhí)行步驟1;步驟7,將三角形區(qū)域和有效區(qū)域之和設(shè)置為新的有效區(qū)域并執(zhí)行步驟1;步驟8,判斷坐標(biāo)點是否位于所述的三角形區(qū)域之內(nèi),如果是則表示該坐標(biāo)點屬于有效區(qū)域并執(zhí)行步驟9,否則表示該坐標(biāo)點未屬于區(qū)域并執(zhí)行步驟9;步驟9,得出判斷結(jié)果并結(jié)束。
2. 根據(jù)權(quán)利要求1所述的一種判斷坐標(biāo)點是否屬于區(qū)域的方法,其特征 在于該步驟l之前還包括步驟0,去除位于同一直線上的連續(xù)的三個定位點的中間定位點。
3. 根據(jù)權(quán)利要求2所述的一種判斷坐標(biāo)點是否屬于區(qū)域的方法,其特征 在于該步驟0,它包括步驟Ol,讀取連續(xù)的三個定位點dU), d{i+l}, d{i+2},其中,i為循 環(huán)變值M,初值為0;步驟02,判斷三個定位點是否位于同一直線之上,如果是則執(zhí)行步驟03, 否則執(zhí)行步驟04;步驟03,刪除位于中間的定位點dU+l),然后執(zhí)行步驟04;步驟04,變值參數(shù)i加l,然后判斷i+l值是否大于定位點的個數(shù),如 果是則執(zhí)行步驟1 ,否則執(zhí)行步驟01 。
4. 根據(jù)權(quán)利要求1或2或3所述的一種判斷坐標(biāo)點是否屬于區(qū)域的方法, 其特征在于該步驟2,它包括步驟21,依順序讀取三個定位點d {0} , d{l}, dW,其中,X為循環(huán)變 值參數(shù),初值為2;步驟22,判斷由上述的三個定位點所圍成的三角形區(qū)域之內(nèi)是否有其它 定位點,如果有則執(zhí)行步驟23,否則執(zhí)行步驟3;步驟23,變值,X加1,然后執(zhí)行步驟21。
全文摘要
本發(fā)明公開了一種判斷坐標(biāo)點是否屬于區(qū)域的方法。本方法將判斷一個坐標(biāo)點是否屬于區(qū)域分解成判斷一個坐標(biāo)點是否屬于多個三角形區(qū)域,以得出判斷結(jié)果。由于判斷一個坐標(biāo)點是否屬于三角形區(qū)域,算法簡單,計算量少,方法很多,無需浮點運算,因此它具有如下優(yōu)點1.不管支持不支持帶浮點運算的處理器都能完成判斷;2.判斷效率高,判斷結(jié)果精確。
文檔編號G06F9/44GK101593110SQ200910112099
公開日2009年12月2日 申請日期2009年6月17日 優(yōu)先權(quán)日2009年6月17日
發(fā)明者鄭添來 申請人:廈門敏訊信息技術(shù)股份有限公司