本發(fā)明涉及電子領(lǐng)域,特別是指一種書(shū)寫(xiě)筆跡分段平滑方法和系統(tǒng)。
背景技術(shù):
書(shū)寫(xiě)筆跡平滑算法,是計(jì)算機(jī)繪制書(shū)寫(xiě)筆跡效果的一種優(yōu)化,旨在減少繪制過(guò)程中筆跡的毛刺和折線是繪制效果更平滑更接近真實(shí)書(shū)寫(xiě)。
在白板書(shū)寫(xiě)時(shí),由于鼠標(biāo)上點(diǎn)的速度與坐標(biāo)的差異,如果直接把得到的點(diǎn)繪制出來(lái)會(huì)出現(xiàn)好多折線以及毛刺,例如windows畫(huà)圖板程序的效果。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提出一種書(shū)寫(xiě)筆跡分段平滑方法和系統(tǒng),能夠優(yōu)化書(shū)寫(xiě)效果,大幅度減少筆跡中的折線和毛刺。
基于上述目的本發(fā)明提供的書(shū)寫(xiě)筆跡分段平滑方法,包括步驟:
第一步,鼠標(biāo)落壓第一點(diǎn)作為分段起始點(diǎn)O,記錄O點(diǎn)坐標(biāo);
第二步,鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P并記錄P點(diǎn)坐標(biāo);然后,計(jì)算與起始點(diǎn)O的距離OP;
第三步,鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P1并記錄P1點(diǎn)坐標(biāo);然后,計(jì)算與P點(diǎn)的距離PP1;
第四步,計(jì)算獲得P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離,即計(jì)算OP加上PP1的長(zhǎng)度;
第五步,判斷獲得的坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度是否大于預(yù)先設(shè)置的長(zhǎng)度,若都不滿足則進(jìn)行步驟六,若滿足上面條件的任意一個(gè)則進(jìn)行步驟八;
第六步,根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中的坐標(biāo)點(diǎn),擬合并繪制出曲線,然后執(zhí)行步驟七;
第七步,判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則返回步驟三;若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡 繪制出來(lái),然后退出;
第八步,本段中所有坐標(biāo)點(diǎn)完成存儲(chǔ),根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中所有坐標(biāo)點(diǎn),擬合并繪制出曲線,然后執(zhí)行步驟九;
第九步,判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則將本段的結(jié)束點(diǎn)作為下一個(gè)分段的起始點(diǎn),然后返回步驟二;若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái),然后退出。
可選地,所述步驟一中將O點(diǎn)坐標(biāo)存儲(chǔ)在坐標(biāo)點(diǎn)存儲(chǔ)表中。
可選地,所述步驟四中還計(jì)算線段PP1與線段OP的夾角。
進(jìn)一步地,在執(zhí)行所述步驟四之后,調(diào)整P點(diǎn)的坐標(biāo)使得所述線段PP1與線段OP的夾角大于45度,然后將調(diào)整后的P點(diǎn)坐標(biāo)存儲(chǔ)在坐標(biāo)點(diǎn)存儲(chǔ)表中。
進(jìn)一步地,所述對(duì)于線段PP1與線段OP的夾角小于45度的坐標(biāo)值進(jìn)行調(diào)整采用的是加權(quán)平均法。
進(jìn)一步地,所述加權(quán)平均法設(shè)置的比例為3:4:3,調(diào)整后點(diǎn)P的坐標(biāo)為Px'=0.3*Ox+0.4*Px+0.3*P1x,Py'=0.3*Oy+0.4*Py+0.3*P1y。
進(jìn)一步地,在執(zhí)行所述步驟五之后,判斷所述線段PP1是否大于預(yù)先設(shè)置的像素閾值,若小于則去掉點(diǎn)P1,返回步驟四;若大于則將所述的點(diǎn)P1存儲(chǔ)到預(yù)先設(shè)置的坐標(biāo)點(diǎn)存儲(chǔ)表中。
進(jìn)一步地,所述預(yù)先設(shè)置的像素閾值為3至6。
進(jìn)一步地,所述預(yù)先設(shè)置的像素閾值為4.13。
可選地,所述坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值為10。
可選地,所述預(yù)先設(shè)置的P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度為40像素。
可選地,所述步驟四中還需要計(jì)算P1點(diǎn)到起始點(diǎn)O的直線距離L;然后,當(dāng)進(jìn)行步驟十時(shí),則是判斷獲得的坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度是否大于預(yù)先設(shè)置的長(zhǎng)度,或者直線距離L與P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離的比值是否在預(yù)先設(shè)置的范圍內(nèi)。
進(jìn)一步地,所述直線距離L與P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離的比值范圍為1.45至10之間。
進(jìn)一步地,所述根據(jù)坐標(biāo)點(diǎn)擬合、繪制曲線采用的都是貝塞爾方法。
另外,本發(fā)明還通過(guò)了一種書(shū)寫(xiě)筆跡分段平滑系統(tǒng),包括鼠標(biāo)點(diǎn)獲取單元、坐標(biāo)點(diǎn)處理單元和坐標(biāo)點(diǎn)擬合繪制單元,所述鼠標(biāo)點(diǎn)獲取單元鼠標(biāo)落壓第一點(diǎn)作為分段起始點(diǎn)O,記錄O點(diǎn)坐標(biāo);鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P并記錄P點(diǎn)坐標(biāo);鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P1并記錄P1點(diǎn)坐標(biāo);
所述坐標(biāo)點(diǎn)處理單元計(jì)算與起始點(diǎn)O的距離OP,并且計(jì)算獲得P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離,即計(jì)算OP加上PP1的長(zhǎng)度;判斷獲得的坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度是否大于預(yù)先設(shè)置的長(zhǎng)度;
若都不滿足則所述坐標(biāo)點(diǎn)處理單元與所述坐標(biāo)點(diǎn)擬合繪制單元相連,所述坐標(biāo)點(diǎn)擬合繪制單元根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中的坐標(biāo)點(diǎn),擬合并繪制出曲線;判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則所述坐標(biāo)點(diǎn)擬合繪制單元與所述鼠標(biāo)點(diǎn)獲取單元相連;若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái);
若滿足上面條件的任意一個(gè)則所述坐標(biāo)點(diǎn)處理單元與所述坐標(biāo)點(diǎn)擬合繪制單元相連,所述坐標(biāo)點(diǎn)擬合繪制單元將本段中所有坐標(biāo)點(diǎn)完成存儲(chǔ),根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中所有坐標(biāo)點(diǎn),擬合并繪制出曲線;判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則將本段的結(jié)束點(diǎn)作為下一個(gè)分段的起始點(diǎn),然后所述坐標(biāo)點(diǎn)擬合繪制單元與所述鼠標(biāo)點(diǎn)獲取單元相連;若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái)。
可選地,所述鼠標(biāo)點(diǎn)獲取單元將O點(diǎn)坐標(biāo)存儲(chǔ)在坐標(biāo)點(diǎn)存儲(chǔ)表中。
可選地,所述坐標(biāo)點(diǎn)處理單元還計(jì)算線段PP1與線段OP的夾角。
進(jìn)一步地,所述坐標(biāo)點(diǎn)處理單元計(jì)算獲得P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離之后,調(diào)整P點(diǎn)的坐標(biāo)使得所述線段PP1與線段OP的夾角大于45度,然后將調(diào)整后的P點(diǎn)坐標(biāo)存儲(chǔ)在坐標(biāo)點(diǎn)存儲(chǔ)表中。
進(jìn)一步地,所述對(duì)于線段PP1與線段OP的夾角小于45度的坐標(biāo)值進(jìn)行調(diào)整采用的是加權(quán)平均法。
進(jìn)一步地,所述加權(quán)平均法設(shè)置的比例為3:4:3,調(diào)整后點(diǎn)P的坐標(biāo)為Px'=0.3*Ox+0.4*Px+0.3*P1x,Py'=0.3*Oy+0.4*Py+0.3*P1y。
進(jìn)一步地,所述坐標(biāo)點(diǎn)處理單元還包括判斷所述線段PP1是否大于預(yù)先設(shè)置的像素閾值,若小于則去掉點(diǎn)P1;若大于則將所述的點(diǎn)P1存儲(chǔ)到預(yù)先設(shè)置的坐標(biāo)點(diǎn)存儲(chǔ)表中。
進(jìn)一步地,所述預(yù)先設(shè)置的像素閾值為3至6。
進(jìn)一步地,所述預(yù)先設(shè)置的像素閾值為4.13。
可選地,所述坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值為10。
可選地,所述預(yù)先設(shè)置的P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度為40像素。
可選地,所述坐標(biāo)點(diǎn)處理單元還包括計(jì)算P1點(diǎn)到起始點(diǎn)O的直線距離L;判斷獲得的坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度是否大于預(yù)先設(shè)置的長(zhǎng)度,或者直線距離L與P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離的比值是否在預(yù)先設(shè)置的范圍內(nèi)。
進(jìn)一步地,所述直線距離L與P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離的比值范圍為1.45至10之間。
進(jìn)一步地,所述根據(jù)坐標(biāo)點(diǎn)擬合、繪制曲線采用的都是貝塞爾方法。
從上面所述可以看出,本發(fā)明提供的書(shū)寫(xiě)筆跡分段平滑方法和系統(tǒng),通過(guò)鼠標(biāo)落壓第一點(diǎn)為起始點(diǎn)O;鼠標(biāo)移動(dòng)獲得點(diǎn)P,計(jì)算距離OP;鼠標(biāo)移動(dòng)獲得點(diǎn)P1,計(jì)算距離PP1,計(jì)算OP加PP1的長(zhǎng)度;判斷坐標(biāo)點(diǎn)數(shù)量是否大于設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P到達(dá)O的距離長(zhǎng)度是否大于設(shè)置的長(zhǎng)度,若都不滿足則根據(jù)存儲(chǔ)表中本段的坐標(biāo)點(diǎn),擬合曲線;判斷鼠標(biāo)是否抬起,若抬起則將整體曲線上所有點(diǎn)重新擬合;若滿足上面條件的任意一個(gè)則本段中所有坐標(biāo)點(diǎn)完成存儲(chǔ),根據(jù)本段中所有坐標(biāo)點(diǎn)擬合曲線;判斷鼠標(biāo)是否抬起,若沒(méi)有則將本段的結(jié)束點(diǎn)作為下一個(gè)分段的起始點(diǎn);若抬起則根據(jù)該整體曲線上所有點(diǎn)重新擬合。從而,所述書(shū)寫(xiě)筆跡分段平滑方法和系統(tǒng)能夠得到一條相對(duì)平滑的曲線,使得繪制效果更自然。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例書(shū)寫(xiě)筆跡分段平滑方法的流程示意圖;
圖2為本發(fā)明實(shí)施例書(shū)寫(xiě)筆跡分段平滑系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
在本發(fā)明的一個(gè)實(shí)施例中,如圖1所示,為本發(fā)明實(shí)施例書(shū)寫(xiě)筆跡分段平滑方法的流程示意圖,所述書(shū)寫(xiě)筆跡分段平滑方法包括:
步驟101,鼠標(biāo)落壓第一點(diǎn)作為分段起始點(diǎn)O,記錄O點(diǎn)坐標(biāo)。
步驟102,鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P并記錄P點(diǎn)坐標(biāo)。然后,計(jì)算與起始點(diǎn)O的距離OP。
步驟103,鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P1并記錄P1點(diǎn)坐標(biāo)。然后,計(jì)算與P點(diǎn)的距離PP1。
步驟104,計(jì)算獲得P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離,即計(jì)算OP加上PP1的長(zhǎng)度。
步驟105,判斷獲得的坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度是否大于預(yù)先設(shè)置的長(zhǎng)度,若都不滿足則進(jìn)行步驟106,若滿足上面條件的任意一個(gè)則進(jìn)行步驟108。
步驟106,根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中的坐標(biāo)點(diǎn),擬合并繪制出曲線,然后執(zhí)行步驟107。
步驟107,判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則返回步驟103;若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái),然后退出。
步驟108,本段中所有坐標(biāo)點(diǎn)完成存儲(chǔ),根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中所有坐標(biāo)點(diǎn),擬合并繪制出曲線,然后執(zhí)行步驟109。
步驟109,判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則將本段的結(jié)束點(diǎn)作為下一個(gè)分段的起始點(diǎn),然后返回步驟102;若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái),然后退出。
在本發(fā)明的另一個(gè)實(shí)施例中,所述的書(shū)寫(xiě)筆跡分段平滑方法包括:
步驟201,鼠標(biāo)落壓第一點(diǎn)作為分段起始點(diǎn)O,將O點(diǎn)坐標(biāo)存儲(chǔ)在坐標(biāo)點(diǎn)存儲(chǔ)表中。
步驟202,鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P并記錄P點(diǎn)坐標(biāo)。然后,計(jì)算 與起始點(diǎn)O的距離OP。
步驟203,鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P1并記錄P1點(diǎn)坐標(biāo)。然后,計(jì)算與P點(diǎn)的距離PP1。
步驟204,計(jì)算獲得P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離,即計(jì)算OP加上PP1的長(zhǎng)度。以及計(jì)算線段PP1與線段OP的夾角。
步驟205,判斷所述線段PP1與線段OP的夾角是否小于45度,若是則進(jìn)行步驟206,若不是則直接進(jìn)行步驟207。
步驟206,調(diào)整P點(diǎn)的坐標(biāo)使得所述線段PP1與線段OP的夾角大于45度,然后進(jìn)行步驟207。
優(yōu)選地,對(duì)于線段PP1與線段OP的夾角小于45度的坐標(biāo)值進(jìn)行調(diào)整采用的是加權(quán)平均法,其設(shè)置的比例為3:4:3。那么,調(diào)整后點(diǎn)P的坐標(biāo)為Px'=0.3*Ox+0.4*Px+0.3*P1x,Py'=0.3*Oy+0.4*Py+0.3*P1y。另外,將調(diào)整后的P點(diǎn)坐標(biāo)進(jìn)行存儲(chǔ),可以存儲(chǔ)在坐標(biāo)點(diǎn)存儲(chǔ)表中。
步驟207,判斷所述線段PP1是否大于預(yù)先設(shè)置的像素閾值,若小于則進(jìn)行步驟208,若大于則進(jìn)行步驟209。
作為實(shí)施例,預(yù)先設(shè)置的像素閾值為3至6。優(yōu)選地,像素閾值為4.13。
還需要說(shuō)明的是,步驟206和步驟207可以如上面所述的先進(jìn)行步驟206再進(jìn)行步驟207,也可以先進(jìn)行步驟207再進(jìn)行步驟206。
步驟208,去掉點(diǎn)P1,返回步驟204。
步驟209,將所述的點(diǎn)P1存儲(chǔ)到預(yù)先設(shè)置的坐標(biāo)點(diǎn)存儲(chǔ)表中。
步驟210,判斷獲得的坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度是否大于預(yù)先設(shè)置的長(zhǎng)度,若都不滿足則進(jìn)行步驟211,若滿足上面條件的任意一個(gè)則進(jìn)行步驟213。
在本發(fā)明的實(shí)施例中,所述坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值為10。較佳地,可以查看所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的點(diǎn)數(shù)量是否大于預(yù)先設(shè)置的數(shù)值為10。另外,預(yù)先設(shè)置的P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度為40像素。
步驟211,根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中的坐標(biāo)點(diǎn),擬合并繪制出曲線,然后執(zhí)行步驟212。
步驟212,判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則返回步驟203;若抬起則根 據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái),然后退出。
步驟213,本段中所有坐標(biāo)點(diǎn)完成存儲(chǔ),根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中所有坐標(biāo)點(diǎn),擬合并繪制出曲線,然后執(zhí)行步驟214。
步驟214,判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則將本段的結(jié)束點(diǎn)作為下一個(gè)分段的起始點(diǎn),然后返回步驟202;若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái),然后退出。
優(yōu)選地,上面所述的根據(jù)坐標(biāo)點(diǎn)擬合、繪制曲線采用的都是貝塞爾方法。
作為本發(fā)明的另一個(gè)實(shí)施例,在進(jìn)行步驟204時(shí),還需要計(jì)算P1點(diǎn)到起始點(diǎn)O的直線距離L。然后,當(dāng)進(jìn)行步驟210時(shí),則是判斷獲得的坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度是否大于預(yù)先設(shè)置的長(zhǎng)度,或者直線距離L與P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離的比值是否在預(yù)先設(shè)置的范圍內(nèi),若都不滿足則進(jìn)行步驟211,若滿足上面條件的任意一個(gè)則進(jìn)行步驟212。其中,所述直線距離L與P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離的比值范圍為1.45至10之間。
在本發(fā)明的另一個(gè)實(shí)施例中,如圖2所示,為本發(fā)明實(shí)施例書(shū)寫(xiě)筆跡分段平滑系統(tǒng)的結(jié)構(gòu)示意圖。所述書(shū)寫(xiě)筆跡分段平滑系統(tǒng)包括鼠標(biāo)點(diǎn)獲取單元1、坐標(biāo)點(diǎn)處理單元2和坐標(biāo)點(diǎn)擬合繪制單元3,其中鼠標(biāo)點(diǎn)獲取單元1鼠標(biāo)落壓第一點(diǎn)作為分段起始點(diǎn)O,記錄O點(diǎn)坐標(biāo)。然后,鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P并記錄P點(diǎn)坐標(biāo)。最后,鼠標(biāo)移動(dòng)獲得下一點(diǎn),記為P1并記錄P1點(diǎn)坐標(biāo)。
坐標(biāo)點(diǎn)處理單元302計(jì)算與起始點(diǎn)O的距離OP,并且計(jì)算獲得P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離,即計(jì)算OP加上PP1的長(zhǎng)度。然后,判斷獲得的坐標(biāo)點(diǎn)的數(shù)量是否大于預(yù)先設(shè)置的數(shù)值,或者P1點(diǎn)通過(guò)P點(diǎn)到達(dá)起始點(diǎn)O的距離長(zhǎng)度是否大于預(yù)先設(shè)置的長(zhǎng)度。
若都不滿足則坐標(biāo)點(diǎn)處理單元2與坐標(biāo)點(diǎn)擬合繪制單元3相連,坐標(biāo)點(diǎn)擬合繪制單元3根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中的坐標(biāo)點(diǎn),擬合并繪制出曲線。然后,判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則坐標(biāo)點(diǎn)擬合繪制單元3與鼠標(biāo)點(diǎn)獲取單元1相連。若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體 曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái)。
若滿足上面條件的任意一個(gè)則坐標(biāo)點(diǎn)處理單元2與坐標(biāo)點(diǎn)擬合繪制單元3相連,坐標(biāo)點(diǎn)擬合繪制單元3將本段中所有坐標(biāo)點(diǎn)完成存儲(chǔ),根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的本段中所有坐標(biāo)點(diǎn),擬合并繪制出曲線。然后,判斷鼠標(biāo)是否抬起,若沒(méi)有抬起則將本段的結(jié)束點(diǎn)作為下一個(gè)分段的起始點(diǎn),然后坐標(biāo)點(diǎn)擬合繪制單元3與鼠標(biāo)點(diǎn)獲取單元1相連。若抬起則根據(jù)所述坐標(biāo)點(diǎn)存儲(chǔ)表中存儲(chǔ)的該整體曲線上所有點(diǎn)重新擬合,形成最后的筆跡繪制出來(lái)。
需要說(shuō)明的是,鼠標(biāo)點(diǎn)獲取單元1、坐標(biāo)點(diǎn)處理單元2和坐標(biāo)點(diǎn)擬合繪制單元3的工作流程在上面已經(jīng)詳細(xì),在此不做重復(fù)說(shuō)明。
綜上所述,本發(fā)明提供的書(shū)寫(xiě)筆跡分段平滑方法和系統(tǒng),創(chuàng)造性地提出了分段式的筆跡繪制;通過(guò)每獲得一點(diǎn)段內(nèi)的擬合、繪制,以及整段式的擬合、繪制;而且,本發(fā)明判斷所述線段PP1與線段OP的夾角是否小于45度,從而將具有很尖的筆跡進(jìn)行優(yōu)化,去除了筆跡中的折線,使得筆跡更為平滑;另外,本發(fā)明判斷所述線段PP1是否大于預(yù)先設(shè)置的像素閾值,從而去除了在筆跡中存在的成團(tuán)或成疙瘩狀的節(jié)點(diǎn),去除了筆跡中的毛刺,大大改善了筆跡的順暢度;與此同時(shí),本發(fā)明所述的書(shū)寫(xiě)筆跡分段平滑方法和系統(tǒng)繪制效果更接近真實(shí)書(shū)寫(xiě);最后,整個(gè)所述的書(shū)寫(xiě)筆跡分段平滑方法和系統(tǒng)簡(jiǎn)便、緊湊,易于實(shí)現(xiàn)。
所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。