專(zhuān)利名稱(chēng):一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法
一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種鼠標(biāo)軌跡處理方法,特別涉及一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法。
背景技術(shù):
隨著計(jì)算機(jī)的迅速發(fā)展,相關(guān)的繪圖軟件也應(yīng)運(yùn)而生。目前絕大部分的畫(huà)圖軟件可以實(shí)現(xiàn)畫(huà)三角形,矩形,橢圓等圖形。但縱觀這些畫(huà)布軟件,他們都是針對(duì)每一個(gè)特定的圖形提供一個(gè)特定的方式來(lái)畫(huà)圖。比如繪制三角形,就提供一個(gè)畫(huà)三角形的工具;圓,就提供一個(gè)畫(huà)圓的工具。然而在現(xiàn)實(shí)應(yīng)用中,用戶(hù)更多希望有這樣的一個(gè)功能直接用自由筆大概畫(huà)出所需要圖形的輪廓,然后軟件根據(jù)這個(gè)輪廓自動(dòng)識(shí)別出圖形。比如用需要畫(huà)一個(gè)三角形,那么用戶(hù)用自由在畫(huà)圖軟件上畫(huà)個(gè)大致的三角形輪廓,之后畫(huà)圖軟件自己把它識(shí)別后并生成一個(gè)規(guī)規(guī)矩矩的三角形。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問(wèn)題,在于提供一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法。本發(fā)明是這樣實(shí)現(xiàn)的一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法,其特征在于 包括如下步驟步驟10、獲取鼠標(biāo)軌跡信息;步驟20、由獲取的鼠標(biāo)軌跡信息,比較鼠標(biāo)軌跡與標(biāo)準(zhǔn)圖形的貼近度,將與鼠標(biāo)軌跡貼近度最高的標(biāo)準(zhǔn)圖形作為識(shí)別出的圖形類(lèi)型;步驟30、根據(jù)識(shí)別出的圖形類(lèi)型,并結(jié)合鼠標(biāo)軌跡信息,計(jì)算出生成標(biāo)準(zhǔn)圖形的必要參數(shù);步驟40、根據(jù)必要參數(shù)利用系統(tǒng)提供的2D繪圖函數(shù)生成相應(yīng)的標(biāo)準(zhǔn)圖形并顯示出效果。本發(fā)明具有如下優(yōu)點(diǎn)實(shí)現(xiàn)鼠標(biāo)軌跡圖形的識(shí)別,以解決在畫(huà)圖軟件上,用鼠標(biāo)充當(dāng)畫(huà)筆進(jìn)行書(shū)寫(xiě)大致圖形時(shí),可以自動(dòng)生成標(biāo)準(zhǔn)圖形。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。圖1為本發(fā)明方法流程圖。圖2為本發(fā)明方法一實(shí)施例的鼠標(biāo)軌跡示例圖。圖3為由圖2鼠標(biāo)軌跡信息自動(dòng)生成的標(biāo)準(zhǔn)圖形的示例圖。
具體實(shí)施方式如圖1所示,本發(fā)明的鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法,包括如下步驟步驟10、獲取鼠標(biāo)軌跡信息;其可以利用預(yù)先封裝在畫(huà)布窗口的消息處理函數(shù)來(lái)2/6頁(yè)
獲得的。步驟20、由獲取的鼠標(biāo)軌跡信息,比較鼠標(biāo)軌跡與標(biāo)準(zhǔn)圖形的貼近度,將與鼠標(biāo)軌跡貼近度最高的標(biāo)準(zhǔn)圖形作為識(shí)別出的圖形類(lèi)型;其中,比較鼠標(biāo)軌跡與標(biāo)準(zhǔn)圖形的貼近度時(shí)包括下述步驟(1)將鼠標(biāo)軌跡的坐標(biāo)作為整個(gè)算法輸入源;(2)計(jì)算拐點(diǎn)位置和夾角,設(shè)置45度閥值,當(dāng)兩條直線的夾角大于這個(gè)閥值時(shí),認(rèn)為是一個(gè)拐點(diǎn),并將夾角處的位置即拐點(diǎn)記錄下來(lái),同時(shí)記錄拐點(diǎn)個(gè)數(shù);(3)根據(jù)拐點(diǎn)個(gè)數(shù)初步判斷出是哪種圖形類(lèi)型,再根據(jù)拐點(diǎn)位置,依據(jù)預(yù)先設(shè)計(jì)好的貼近度函數(shù),算出鼠標(biāo)軌跡跟哪個(gè)標(biāo)準(zhǔn)圖形的貼近度最大,進(jìn)一步判斷得出識(shí)別出的更具體的圖形類(lèi)型(如果標(biāo)準(zhǔn)圖形沒(méi)有設(shè)定貼近度函數(shù),則直接跳過(guò)通過(guò)貼過(guò)度函數(shù)判斷的這一步驟)。但是,在進(jìn)一步判斷更具體的圖形類(lèi)型時(shí),如果通過(guò)不同的貼近函數(shù)算出的貼近度相近時(shí),說(shuō)明貼近度函數(shù)失效,此時(shí),就直接由拐點(diǎn)數(shù)確定出圖形類(lèi)型。其中,根據(jù)拐點(diǎn)個(gè)數(shù)初步判斷出是哪種圖形類(lèi)型以及直接由拐點(diǎn)數(shù)確定出圖形類(lèi)型時(shí)可以通過(guò)如下原則進(jìn)行拐點(diǎn)個(gè)數(shù)是0認(rèn)為是圓或橢圓,拐點(diǎn)個(gè)數(shù)是1認(rèn)為是直線或是圓弧,拐點(diǎn)個(gè)數(shù)為4 認(rèn)為是四邊形,拐點(diǎn)個(gè)數(shù)大于4認(rèn)為是邊數(shù)大于4的多邊形。步驟30、根據(jù)識(shí)別出的圖形類(lèi)型,并結(jié)合鼠標(biāo)軌跡信息,計(jì)算出生成標(biāo)準(zhǔn)圖形的必要參數(shù);比如識(shí)別出來(lái)是三角形,那么此時(shí)就要計(jì)算三角三個(gè)頂點(diǎn)的坐標(biāo)位置;如果識(shí)別出來(lái)的是圓,那么就要計(jì)算這個(gè)圓的圓心坐標(biāo)以及半徑大小。在這個(gè)過(guò)程中,要用到步驟10 中獲取鼠標(biāo)軌跡信息。步驟40、根據(jù)必要參數(shù)利用系統(tǒng)提供的2D繪圖函數(shù)生成相應(yīng)的標(biāo)準(zhǔn)圖形并顯示出效果。本發(fā)明的貼近度函數(shù)包括直線、三角形、橢圓、圓、矩形、多邊形、圓弧、橢圓弧、函數(shù)曲線、樣條曲線等貼近度函數(shù),如(a) 一般直角三角形貼近度函數(shù)當(dāng)A < = 90時(shí),y = k*A/90,當(dāng)A > 90時(shí)y = l-k*(A-90)/90其中,A為所述步驟20中計(jì)算所得的任意一夾角的角度值,k為一個(gè)固定系數(shù),一般取0<k< 1(是在該范圍內(nèi)任意取嗎);(b)等腰直角三角形貼近度函數(shù)y = l-k*min(|B-45|,C-45 |)/45,其中,B、C為所述步驟20中計(jì)算所得的直角三角形的兩個(gè)底角的角度值,k為一固定系數(shù);(c)等邊三角形貼近度函數(shù)y = 1-1^/180*4-(|,其中4、(為所述步驟20中計(jì)算所得的三角形的任意兩個(gè)內(nèi)角的角度值,k為一個(gè)固定系數(shù);(d)平行四邊形貼近度函數(shù):y = l-k*l/180*Max(|A-C|,B_D |),其中 A、B、C、D 為所述步驟20中計(jì)算所得的四邊形的四個(gè)內(nèi)角的角度值,k是個(gè)固定系數(shù);(e)矩形貼近度函數(shù):y = l-k/90* (| A-90 | +1B-90 | +1 C-90 | +1D-90 ),其中 k 是個(gè)固定系數(shù),A、B、C、D為所述步驟20中計(jì)算所得的要識(shí)別的四邊形的四個(gè)內(nèi)角的角度值;(f)梯形貼近度函數(shù)y= l-k/180*Min(|A+B-180|, B+C-180 |),其中 k 是個(gè)固定系數(shù),A,B, C為所述步驟20中計(jì)算所得的要識(shí)別四邊形的任意三個(gè)內(nèi)角的角度值;(g)菱形貼近度函數(shù)
y = 1-k/(A+B+C+D)*KQ
其中A、B、C、D為所述步驟20中計(jì)算所得的要識(shí)別四邊形的四個(gè)內(nèi)角的角度值, KQ定義如下Maxl = max (| Α-Β |,| B-C |);Max2 = max (| C-D |,| D-A |);KQ = max (Maxl,Max2)。下面以畫(huà)三角形為例進(jìn)行說(shuō)明步驟10、在創(chuàng)建畫(huà)布窗口中,用GetDC(HWND hWnd)得到畫(huà)布設(shè)備句柄,在獲取鼠標(biāo)操作信息中,利用delphi開(kāi)發(fā)工具封裝好的消息處理函數(shù)得到需要的操作信息;也就是處理鼠標(biāo)的按下、拖動(dòng)、彈開(kāi)消息,即WM_LBUTT0ND0WN,WM_M0USEM0VE, WM_LBUTT0NUP。得到鼠標(biāo)軌跡信息,包括鼠標(biāo)按下的位置坐標(biāo),拖動(dòng)時(shí)的位置坐標(biāo),彈起時(shí)的位置坐標(biāo),將這些鼠標(biāo)軌跡信息保存起來(lái)。步驟20、先進(jìn)行圖形貼近度函數(shù)的設(shè)置預(yù)先設(shè)置好幾個(gè)公式,用來(lái)量化鼠標(biāo)軌跡跟所要識(shí)別圖形(包括直線、三角形、橢圓、圓、矩形、多邊形、圓弧、橢圓弧、函數(shù)曲線、B 樣條曲線)的貼近程度。如圖2所示,由用戶(hù)通過(guò)鼠標(biāo)在畫(huà)布窗口中畫(huà)圖,計(jì)算機(jī)由獲取的鼠標(biāo)軌跡信息, 比較鼠標(biāo)軌跡與標(biāo)準(zhǔn)圖形的貼近度(1)將鼠標(biāo)軌跡的坐標(biāo)作為整個(gè)算法輸入源;(2)計(jì)算拐點(diǎn),根據(jù)兩條直線的夾角,設(shè)置45度閥值,當(dāng)兩條直線的夾角大于這個(gè)閥值時(shí),認(rèn)為是一個(gè)拐點(diǎn),并將夾角處的位置即拐點(diǎn)A、B、C記錄下來(lái),同時(shí)記錄拐點(diǎn)個(gè)數(shù)3 ;(3)因?yàn)楣拯c(diǎn)個(gè)數(shù)是3,那么就初步判斷識(shí)別出來(lái)的圖形類(lèi)型為三角形,并將這三個(gè)拐點(diǎn)的坐標(biāo)A(xl,yl), B(x2, y2), C(x3, y3)作為三角形的頂點(diǎn)。根據(jù)兩點(diǎn)間的距離公式y(tǒng) = sqrt ((χ l_x2)"2+(y l-y2) "2);求得三條邊的長(zhǎng)度AB、AC、BC,根據(jù)三角形余弦公式COSA= (AB"2+AC"2-BC"2)/(2*AB*AC)、COSB= (AB"2+BC"2-AC1)/(2*AB*BC)、COSC= (BC"2+AC"2-AB"2) / (2*BC*AC)求得三個(gè)內(nèi)角A,B,C的值;將這三個(gè)內(nèi)角A,B,C的值作為參數(shù)帶入三角形的下級(jí)貼近度函數(shù)(如一般直角三角,等腰直角三角形等貼近度函數(shù))進(jìn)行計(jì)算,假設(shè)求出來(lái)的A = 30度,B = 88度,C = 62 度,具體如下(1)、一般直角三角形的判定,取k = 0.9;當(dāng)A = 30,A < 90,因此用貼進(jìn)度函數(shù)=y = k*A/90,算出yl = 0. 3 ;當(dāng)A = 88,A < 90,因此用貼近度函數(shù)y = k*A/90,算出 y2 = 0. 88 ;當(dāng)A = 62,A < 60,因此用貼近度函數(shù)y = k*A/90,算出 y2 = 0. 62 ;取yl,y2,y3中的最大值0. 88,即說(shuō)明一般直角三角形的貼近度為0. 88。O)、在(1)的基礎(chǔ)上判斷是不是等腰直角三角形,用等腰直角三角形的貼近度函數(shù),此時(shí)貼近度函數(shù)中A = 88、B = 30、C = 62
y = l-k*min (| B-45 |,| C-45 |) /45,取 k = 0. 9 ;算出y = 0.66。(3)、等邊三角形的判定,貼近度函數(shù)y = l-k/180*|A_C|,取 k = 2. 0 ;當(dāng) A = 30、C = 88,求得 yl = 0. 35 ;當(dāng) A = 30、C = 62,求得 y2 = 0.64 ;當(dāng) A = 88、C = 62,求得 y3 = 0. 76 ;這邊要求yl,y2, y3在數(shù)值上相差不多,并且越大才越是等邊三角形,很明顯 0. 35,0. 64,0. 76相差太大,因此認(rèn)定不是等邊三角形。綜合上面計(jì)算的,得到一般三角形的貼近度為0. 88,等腰直角三角形的貼近度為 0. 66,假設(shè)設(shè)定由一般直角三角形貼近函數(shù)算出的貼近度大于0. 80是認(rèn)定是一般直角三角形;由等腰直角三角形貼近函數(shù)算出的貼近度大于0. 75認(rèn)為是等腰直角三角形。因此最后可以判斷此三角形是一般的直角三角形。如果貼近度大小差不多,即貼近度判斷失效,那么就直接認(rèn)為是一般的三角形。步驟30、根據(jù)識(shí)別出的圖形類(lèi)型,并結(jié)合鼠標(biāo)軌跡信息,計(jì)算出生成標(biāo)準(zhǔn)圖形的必要參數(shù),即三角形的三個(gè)頂點(diǎn)的坐標(biāo)位置。接上面的例子,詳細(xì)說(shuō)明如下已知判斷出來(lái)的是一般直角三角形,在這一步上,就直接把A = 88這個(gè)角對(duì)應(yīng)的頂點(diǎn)作為直角頂點(diǎn)(因?yàn)樵谝话阒苯侨切蔚馁N近度函數(shù)上由A = 88算出的貼近度達(dá)到最大),拐點(diǎn)A位置的坐標(biāo)值A(chǔ)(xl,yl),并取拐點(diǎn)B,C中的任意一點(diǎn)作為直角三角形的另一頂點(diǎn),這里假設(shè)取B點(diǎn)(x2,y2),同時(shí)計(jì)算出AC兩點(diǎn)間的長(zhǎng)度,在向量AB方向上取一點(diǎn)P, 使得AP = AC, P點(diǎn)繞A點(diǎn)旋轉(zhuǎn)90度得到的點(diǎn)最為另一頂點(diǎn)C(x3,y3)的位置。步驟40、根據(jù)必要參數(shù)利用系統(tǒng)提供的2D繪圖函數(shù)生成相應(yīng)的標(biāo)準(zhǔn)圖形并顯示出效果,即調(diào)用相關(guān)的2D繪圖函數(shù)(如⑶I、⑶1+提供的一些畫(huà)圖函數(shù)接口)把圖形顯示在畫(huà)布上,形成如圖3所示的三角形。以上舉的例子是三角形,若是其它圖形,如橢圓或四邊形時(shí),與上述例子不同的是1、橢圓步驟10、獲取鼠標(biāo)軌跡信息;其可以利用預(yù)先封裝在畫(huà)布窗口的消息處理函數(shù)來(lái)獲得的。步驟20、在初步判斷出圖形時(shí),橢圓沒(méi)有貼近度函數(shù),可以跳過(guò)用貼近度函數(shù)計(jì)算和判斷的步驟,而直接進(jìn)入步驟30計(jì)算出生成標(biāo)準(zhǔn)圖形的必要參數(shù)步驟30、獲取鼠標(biāo)軌跡的外圍矩形,并把這個(gè)矩形作為橢圓的外接矩形,并用矩形兩條對(duì)角線的交點(diǎn)作為橢圓的中心;(如果這個(gè)矩形的長(zhǎng)寬比例接近1那么認(rèn)為這個(gè)橢圓是個(gè)正圓,若不接近1則認(rèn)為是一般橢圓),用兩條對(duì)角線的交點(diǎn)最為圓心, 設(shè)M、N表示矩形的長(zhǎng)和寬,那么一般橢圓的長(zhǎng)軸和短軸即為M、N;若是正圓,則半徑為 (Μ*0· 5+Ν*0· 5)*0· 5。步驟40、根據(jù)必要參數(shù)利用系統(tǒng)提供的2D繪圖函數(shù)生成相應(yīng)的標(biāo)準(zhǔn)圖形并顯示出效果。2、四邊形
根據(jù)步驟20、四邊形的貼近度函數(shù)包括(d)平行四邊形貼近度函數(shù):y = l-k*l/180*Max(|A_C|,B_D |),其中 A、B、C、D 為所述步驟20中計(jì)算所得的四邊形的四個(gè)內(nèi)角的角度值,k是個(gè)固定系數(shù);(e)矩形貼近度函數(shù):y = l-k/90* (| A-90 | +1B-90 | +1 C-90 | +1D-90 ),其中 k 是個(gè)固定系數(shù),A、B、C、D為所述步驟20中計(jì)算所得的要識(shí)別的四邊形的四個(gè)內(nèi)角的角度值;(f)梯形貼近度函數(shù)y= l-k/180*Min(|A+B-180|,B+C-180 |),其中 k 是個(gè)固定系數(shù),A,B, C為所述步驟20中計(jì)算所得的要識(shí)別四邊形的任意三個(gè)內(nèi)角的角度值;(g)菱形貼近度函數(shù)y = l-k/(A+B+C+D)*KQ其中A、B、C、D為所述步驟20中計(jì)算所得的要識(shí)別四邊形的四個(gè)內(nèi)角的角度值, KQ定義如下Maxl = max (| Α-Β |,| B-C |);Max2 = max (| C-D |,| D-A |);KQ = max (Maxl,Max2)。由獲取的鼠標(biāo)軌跡信息計(jì)算拐點(diǎn)位置和夾角,初步判斷出是哪種圖形類(lèi)型,再根據(jù)拐點(diǎn)位置,依據(jù)上述設(shè)計(jì)好的貼近度函數(shù),算出鼠標(biāo)軌跡跟哪個(gè)標(biāo)準(zhǔn)圖形的貼近度最大, 進(jìn)一步判斷得出識(shí)別出的更具體的圖形類(lèi)型。根據(jù)步驟30、計(jì)算出生成標(biāo)準(zhǔn)圖形的必要參數(shù)下面舉例說(shuō)明如何生成標(biāo)準(zhǔn)圖形的必要參數(shù),(1)如果判斷出來(lái)的是矩形,則取跟90度最貼近的那個(gè)角的頂點(diǎn)作為矩形的一個(gè)頂點(diǎn),比如四個(gè)角度依次為Z A = 91度,Z B = 80度,Z C = 110度,Z D = 79度,那么取 2八坐在的頂點(diǎn)位置々0^1,71)作為矩形的其中的一個(gè)頂點(diǎn),同時(shí)算出AB、BC、⑶的長(zhǎng)度,以 A為中心點(diǎn),沿著向量AB方向,長(zhǎng)度為AB的長(zhǎng)度值旋轉(zhuǎn)90度得到B點(diǎn)(x2,y2);以B為中心點(diǎn),沿著向量BA方向,長(zhǎng)度為BC的長(zhǎng)度值旋轉(zhuǎn)90度得到C點(diǎn)(x3,y3);以C為中心點(diǎn), 沿著向量CB方向,長(zhǎng)度為CD的長(zhǎng)度值旋轉(zhuǎn)90度得到D點(diǎn)(x4, y4)。則A(xl,y2)、B(x2, y2)、C(x3,y3)、D(x4,y4)作為矩形的頂點(diǎn)。(2)若果判斷出來(lái)的是菱形,那么取得軌跡線的外圍矩形,并把這個(gè)矩形兩條對(duì)角線的交點(diǎn)作為菱形的中心,假定四邊形四個(gè)頂點(diǎn)依次為A、B、C、D,那么對(duì)角線為AC、BD,取 AC, BD的長(zhǎng)度作為菱形對(duì)角線的長(zhǎng)度,從而得到修正后的四個(gè)點(diǎn)到坐標(biāo)A(xl,yl), B(x2, y2),C(x3,y3),D(x4,y4)。(3)如果判斷出來(lái)的是梯形,那么計(jì)算AB、BC、⑶、DA的斜率,選取不相鄰的,并且斜率之差最小的兩條直線作為梯形的上底和下底,假設(shè)AD為上底,BC為下底。A,B, D的坐標(biāo)不修正,直接采取之前的,C的坐標(biāo)要修正,修正方法是算出AD和BC的長(zhǎng)度,由B點(diǎn)出發(fā),沿著相鄰AD方向延長(zhǎng)BC長(zhǎng)度值得到修正后的C點(diǎn)。最后根據(jù)步驟40,由上述必要參數(shù)利用系統(tǒng)提供的2D繪圖函數(shù)生成相應(yīng)的標(biāo)準(zhǔn)圖形并顯示出效果。雖然以上描述了本發(fā)明的具體實(shí)施方式
,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說(shuō)明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。
權(quán)利要求
1.一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法,其特征在于包括如下步驟 步驟10、獲取鼠標(biāo)軌跡信息;步驟20、由獲取的鼠標(biāo)軌跡信息,比較鼠標(biāo)軌跡與標(biāo)準(zhǔn)圖形的貼近度,將與鼠標(biāo)軌跡貼近度最高的標(biāo)準(zhǔn)圖形作為識(shí)別出的圖形類(lèi)型;步驟30、根據(jù)識(shí)別出的圖形類(lèi)型,并結(jié)合鼠標(biāo)軌跡信息,計(jì)算出生成標(biāo)準(zhǔn)圖形的必要參數(shù);步驟40、根據(jù)必要參數(shù)利用系統(tǒng)提供的2D繪圖函數(shù)生成相應(yīng)的標(biāo)準(zhǔn)圖形并顯示出效^ ο
2.根據(jù)權(quán)利要求1所述的一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法,其特征在于所述步驟10中的鼠標(biāo)軌跡信息是利用預(yù)先封裝在畫(huà)布窗口的消息處理函數(shù)來(lái)獲得的。
3.根據(jù)權(quán)利要求2所述的一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法,其特征在于所述步驟20中,比較鼠標(biāo)軌跡與標(biāo)準(zhǔn)圖形的貼近度時(shí)包括下述步驟(1)將鼠標(biāo)軌跡的坐標(biāo)作為整個(gè)算法輸入源;(2)計(jì)算拐點(diǎn)位置和夾角,設(shè)置45度閥值,當(dāng)兩條直線的夾角大于這個(gè)閥值時(shí),認(rèn)為是一個(gè)拐點(diǎn),并將夾角處的位置即拐點(diǎn)記錄下來(lái),同時(shí)記錄拐點(diǎn)個(gè)數(shù);(3)根據(jù)拐點(diǎn)個(gè)數(shù)初步判斷出是哪種圖形類(lèi)型,再根據(jù)拐點(diǎn)位置和夾角的值,依據(jù)預(yù)先設(shè)計(jì)好的貼近度函數(shù),算出鼠標(biāo)軌跡跟哪個(gè)標(biāo)準(zhǔn)圖形的貼近度最大,進(jìn)一步判斷得出識(shí)別出的更具體的圖形類(lèi)型,如果標(biāo)準(zhǔn)圖形沒(méi)有設(shè)定貼近度函數(shù),則直接跳過(guò)貼近度函數(shù)的計(jì)算和判斷步驟而直接進(jìn)入步驟30。
4.根據(jù)權(quán)利要求3所述的一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法,其特征在于所述步驟(3)中,進(jìn)一步判斷更具體的圖形類(lèi)型時(shí),如果通過(guò)不同的貼近函數(shù)算出的貼近度相近時(shí),說(shuō)明貼近度函數(shù)失效,此時(shí),就直接由拐點(diǎn)數(shù)確定出圖形的類(lèi)型。
5.根據(jù)權(quán)利要求3所述的一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法,其特征在于 所述貼近度函數(shù)包括(a)一般直角三角形貼近度函數(shù)當(dāng)A <=90時(shí),y = k*A/90,當(dāng)A>90時(shí)y = l-k*(A-90)/90其中,A為所述步驟20中計(jì)算所得的任意一夾角的角度值,k為一個(gè)固定系數(shù),一般取0 < k < 1 (是在該范圍內(nèi)任意取嗎);(b)等腰直角三角形貼近度函數(shù)y= l-k*min(|B-45|,C-45 |)/45,其中,B、C為所述步驟20中計(jì)算所得的直角三角形的兩個(gè)底角的角度值,k為一固定系數(shù);(c)等邊三角形貼近度函數(shù)y= l_k/180*|A-C|,其中A、C為所述步驟20中計(jì)算所得的三角形的任意兩個(gè)內(nèi)角的角度值,k為一個(gè)固定系數(shù);(d)平行四邊形貼近度函數(shù)y= l-k*l/180*Max(|A-C|,B-D |),其中A、B、C、D為所述步驟20中計(jì)算所得的四邊形的四個(gè)內(nèi)角的角度值,k是個(gè)固定系數(shù);(e)矩形貼近度函數(shù):y= l-k/90* (| A-90 | +1B-90 | +1 C-90 | +1D-90 ),其中 k 是個(gè)固定系數(shù),A、B、C、D為所述步驟20中計(jì)算所得的要識(shí)別的四邊形的四個(gè)內(nèi)角的角度值;(f)梯形貼近度函數(shù):y= l-k/180*Min(|A+B-180|, B+C-180 |),其中k是個(gè)固定系數(shù),A,B, C為所述步驟20中計(jì)算所得的要識(shí)別四邊形的任意三個(gè)內(nèi)角的角度值;(g)菱形貼近度函數(shù)y = 1-k/(A+B+C+D)*KQ其中A、B、C、D為所述步驟20中計(jì)算所得的要識(shí)別四邊形的四個(gè)內(nèi)角的角度值,KQ定義如下Maxl = max (I A-B I,B-C |); Max2 = max (|C-D|,|D-A|); KQ = max (Max 1, Max2)。
全文摘要
本發(fā)明提供一種鼠標(biāo)軌跡識(shí)別并自動(dòng)生成圖形的方法,其包括步驟10、獲取鼠標(biāo)軌跡信息;步驟20、由獲取的鼠標(biāo)軌跡信息,比較鼠標(biāo)軌跡與標(biāo)準(zhǔn)圖形的貼近度,將與鼠標(biāo)軌跡貼近度最高的標(biāo)準(zhǔn)圖形作為識(shí)別出的圖形類(lèi)型;步驟30、根據(jù)識(shí)別出的圖形類(lèi)型,并結(jié)合鼠標(biāo)軌跡信息,計(jì)算出生成標(biāo)準(zhǔn)圖形的必要參數(shù);步驟40、根據(jù)必要參數(shù)利用系統(tǒng)提供的2D繪圖函數(shù)生成相應(yīng)的標(biāo)準(zhǔn)圖形并顯示出效果。本發(fā)明方法用于實(shí)現(xiàn)鼠標(biāo)軌跡圖形的識(shí)別,以解決在畫(huà)圖軟件上,用鼠標(biāo)充當(dāng)畫(huà)筆進(jìn)行書(shū)寫(xiě)大致圖形時(shí),可以自動(dòng)生成標(biāo)準(zhǔn)圖形。
文檔編號(hào)G06T11/80GK102411790SQ20111020741
公開(kāi)日2012年4月11日 申請(qǐng)日期2011年7月21日 優(yōu)先權(quán)日2011年7月21日
發(fā)明者丁萬(wàn)年, 何永安, 廖強(qiáng), 陳日良 申請(qǐng)人:福州銳達(dá)數(shù)碼科技有限公司