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