專利名稱:在計(jì)算機(jī)屏幕上驅(qū)動(dòng)進(jìn)行書寫和繪圖的虛擬筆的方法
技術(shù)領(lǐng)域:
本發(fā)明主要針對(duì)教師和學(xué)生,并且是一種在計(jì)算機(jī)屏幕上驅(qū)動(dòng)虛擬筆的方法,所 述虛擬筆以看起來類似于教師在真實(shí)黑板上書寫所使用的真實(shí)筆的方式書寫與繪圖。
背景技術(shù):
教室里廣泛使用的工具是筆和黑板。在黑板上,教師寫語句、繪制幾何形狀、寫化
子工、寸寸。在過去的幾年中,電子學(xué)習(xí)領(lǐng)域已經(jīng)取得了很大的進(jìn)步,并且存在很多用于產(chǎn)生 向?qū)W生顯示文字和圖片的多媒體顯示的可用軟件產(chǎn)品。然而,盡管這個(gè)技術(shù)有了進(jìn)步,但是甚至對(duì)于老練使用者來說仍舊很困難的是在 計(jì)算機(jī)屏幕上呈現(xiàn)虛擬筆,虛擬筆寫字和繪圖的方式像教師真實(shí)寫字一樣吸引人和真實(shí)。例如,為了寫標(biāo)記為50的字形“a” (圖1-5),教師通常從點(diǎn)51開始,從該點(diǎn)劃線 至點(diǎn)52,抬起筆并移動(dòng)筆到點(diǎn)53,劃線至點(diǎn)54,并抬起筆結(jié)束。在抬起筆以及從點(diǎn)52移動(dòng) 到點(diǎn)53時(shí),筆遵循非直線的軌跡56,這條軌跡取決于寫的速度、已畫最后一條線的形狀和 要畫的下一條線的形狀。而且,位于點(diǎn)51和52之間的第一條線的中間部分是直的,并且之 后書寫該中間部分的速度57將通常快于書寫該條線的初始和最后部分的速度。并且,如果 我們使用鋼筆(fountain-pen)來書寫,則該中間部分的粗度更寬58。并且,如果教師要繪制矩形60 (圖6-7)而不使筆脫離寫表面,例如從點(diǎn)61開始并 且畫至點(diǎn)62、63及64,那么當(dāng)筆到達(dá)點(diǎn)62時(shí)他在開始向點(diǎn)63畫豎直線之前必須停止片刻, 否則將由于方向突然改變而無法畫出直角,而是畫出圓角。點(diǎn)63和64也會(huì)發(fā)生相同的情 形。因此,為了軟件能夠在屏幕上驅(qū)動(dòng)虛擬筆寫出字形50或者畫出矩形60,使得虛擬 筆表現(xiàn)為像真筆一樣平滑與真實(shí),必須克服若干技術(shù)問題,列舉如下。第一,形成字形的線或者繪圖的線不必呈現(xiàn)在屏幕上的單個(gè)框架內(nèi),而是必須在 屏幕上一個(gè)接一個(gè)地以事先建立的順序繪制。第二,虛擬筆必須能夠改變繪制速度。例如,當(dāng)要繪制的線變得彎曲時(shí)繪制速度必 須降低,并且當(dāng)要繪制的線變成直線時(shí)繪制速度必須提高。第三,虛擬筆必須能夠改變線的粗度,正像例如使用真實(shí)的鋼筆書寫時(shí)所發(fā)生的 情形。第四,當(dāng)書寫方向突然改變時(shí),例如在字形“Z”或矩形的角度處,虛擬筆必須停止 片刻。第五,當(dāng)虛擬筆必須與書寫面脫離以及必須不書寫而進(jìn)行移動(dòng)時(shí),例如在同一個(gè) 詞的兩個(gè)連續(xù)字形之間移動(dòng)時(shí)或者從一個(gè)詞的結(jié)尾到下一個(gè)詞的開頭之間移動(dòng)時(shí),必須計(jì) 算筆的軌跡。第六,虛擬筆的圖像在計(jì)算機(jī)屏幕上移動(dòng)的方式必須是其筆尖總是很接近下一個(gè) 被繪制的像素,因?yàn)檎鎸?shí)的筆是這樣的,并且使用者必須能夠在書寫的任何時(shí)刻選擇另一個(gè)圖像。第七,如果虛擬筆使用連筆的書寫方式書寫一個(gè)詞的多個(gè)字形,則必須設(shè)置將多 個(gè)字形連起來的線。
發(fā)明內(nèi)容
本發(fā)明的目標(biāo)是提供一種方法,其通過解決上述問題允許即便不熟練的使用者驅(qū) 動(dòng)虛擬筆在計(jì)算機(jī)屏幕上以看上去與真正的筆一樣真實(shí)的方式例如書寫使用者本身在鍵 盤上鍵入的詞或者更一般地繪制圖形。該目標(biāo)可通過根據(jù)本發(fā)明如權(quán)利要求1所限定的方法來實(shí)現(xiàn)。從屬權(quán)利要求限定 本發(fā)明的多個(gè)有利方面。
參照附圖,通過對(duì)示例實(shí)施例的以下描述,本發(fā)明的另外特征和優(yōu)點(diǎn)將更為清晰, 該示例實(shí)施例是示例性的而非限制性的,其中圖1-5示出示例性示例手動(dòng)書寫字形“a”的步驟和問題;圖6-7示出在繪制矩形時(shí)在銳角處暫停的問題;圖8-15示出如何根據(jù)本發(fā)明產(chǎn)生圖1-5的示例性字形“a” ;圖16-17示出鍵入文本的步驟和設(shè)置相對(duì)參數(shù)的步驟;圖18示出重新獲得有關(guān)要書寫的字形的坐標(biāo)、要使用的插值類型和將這些坐標(biāo) 轉(zhuǎn)換為屏幕坐標(biāo)的信息的步驟。圖19示出重新獲得有關(guān)暫停、筆狀態(tài)(上/下)、虛擬筆進(jìn)行書寫的速度和粗度的 信息的步驟;圖20示出產(chǎn)生緩沖區(qū)的步驟,緩沖區(qū)包含必須完成每個(gè)象素的繪制的時(shí)刻;圖21示出根據(jù)坐標(biāo)、速度和之前計(jì)算的粗度繪制圖1-5的示例性字形“a”的步 驟;圖22-25示出當(dāng)書寫圖1_5的示例性字形“a”時(shí)虛擬筆脫離寫表面以及在第一筆 和第二筆之間移動(dòng)所必須遵循的軌跡。圖26-28示出了使用連筆書寫的問題以及必須如何修改每個(gè)單個(gè)字形以解決上 述問題。
具體實(shí)施例方式該方法可以分為兩個(gè)階段,稱為階段1和階段2。在階段1期間,產(chǎn)生字形和圖形并將其存儲(chǔ)在一個(gè)文件中。每個(gè)字形或圖形通過 從形成要繪制的線的點(diǎn)集中指定結(jié)點(diǎn)(knot point)的有序子集而產(chǎn)生。對(duì)于每個(gè)結(jié)點(diǎn),將 設(shè)置一些屬性。這些屬性包含允許虛擬筆書寫字形或繪制圖形所必需的所有信息,即坐 標(biāo)、插值和相對(duì)權(quán)重的類型、可能的暫停、在其間筆必須脫離寫表面并且進(jìn)行移動(dòng)而不書寫 的結(jié)點(diǎn)、書寫速度和粗度。在階段2期間,取回在階段1期間存儲(chǔ)在文件中的所有信息并且使用該信息在計(jì) 算機(jī)屏幕上驅(qū)動(dòng)虛擬筆。
階段1通過使用稱為“制造器(Maker) ”的應(yīng)用程序來執(zhí)行。階段2通過使用稱為“表演者(Player),,的應(yīng)用程序來執(zhí)行。階段1 產(chǎn)生 字形和圖形并將其存儲(chǔ)在文件中(圖8-15)。字形通過制造器產(chǎn)生。使用者可以通過僅僅使用鼠標(biāo)或鍵盤與制造器交互,而無 需任何繪圖板或類似工具。階段1步驟A 產(chǎn)生字形或圖形的結(jié)點(diǎn),以及設(shè)置其屬性(圖8-13)。例如,產(chǎn)生字形“a” (標(biāo)記為50)。首先參考圖8-10。使用者點(diǎn)擊鼠標(biāo)五次以按順序產(chǎn)生結(jié)點(diǎn)101、102、103、104和 105。在每次點(diǎn)擊后,制造器在緩沖區(qū)200中存儲(chǔ)包含所有被點(diǎn)擊的結(jié)點(diǎn)的最小矩形111的 寬度W和高度H,通過將其標(biāo)準(zhǔn)化為0與1之間來將其坐標(biāo)存儲(chǔ)在緩沖區(qū)201中,通過將這 些坐標(biāo)標(biāo)準(zhǔn)化來將這些坐標(biāo)插值(202)(通過使用諸如樣條等已知算法)到緩沖區(qū)200中 指定的矩形,以及顯示已插值的線203,線203即為虛擬筆將在表演者中繪制的實(shí)際線。要使用的插值類型及其參數(shù)和權(quán)重由使用者選擇,并且由表演者存儲(chǔ)在緩沖區(qū) 205 中。例如,制造器將結(jié)點(diǎn)101涂為綠色將結(jié)點(diǎn)105涂為紅色,以表示將根據(jù)使用者點(diǎn)擊 結(jié)點(diǎn)的順序繪制(利用表演者的虛擬筆)自結(jié)點(diǎn)101開始并且終止于結(jié)點(diǎn)105的線203。 然而,使用者可以使制造器顛倒存儲(chǔ)在緩沖區(qū)201中的結(jié)點(diǎn)的順序,以便制造器例如將結(jié) 點(diǎn)101涂成紅色并將結(jié)點(diǎn)105涂成綠色,以表示將繪制(利用表演者的虛擬筆)自結(jié)點(diǎn)105 開始并且終止于結(jié)點(diǎn)101的線203。使用者也可以移動(dòng)每個(gè)單個(gè)結(jié)點(diǎn),可以消除每個(gè)單個(gè) 結(jié)點(diǎn),還可以在舊的結(jié)點(diǎn)之間插入新的結(jié)點(diǎn),通過這樣的方式,線203的形狀達(dá)到預(yù)期的形 狀。對(duì)于每個(gè)結(jié)點(diǎn),使用者指定當(dāng)虛擬筆到達(dá)該點(diǎn)同時(shí)產(chǎn)生圖形時(shí)必須可能地暫停多 長(zhǎng)時(shí)間,并且最終制造器將這些數(shù)據(jù)存儲(chǔ)在緩沖區(qū)206中。線203不包含任何銳角,于是虛 擬筆必須繪制該線而不停止。因此,結(jié)點(diǎn)101、102、103、104和105的暫停時(shí)間將設(shè)為0。對(duì)于每個(gè)點(diǎn)擊的結(jié)點(diǎn),使用者還指定虛擬筆是否必須脫離寫表面。對(duì)于線203,虛 擬筆僅在已經(jīng)到達(dá)線的終點(diǎn)時(shí)才脫離寫表面。因此,使用者將結(jié)點(diǎn)101、102、103和104的 筆狀態(tài)設(shè)置為“向下”,將結(jié)點(diǎn)105的筆狀態(tài)設(shè)置為“向上”。制造器將這些數(shù)據(jù)存儲(chǔ)在緩沖 區(qū)207中。重要的是注意到每個(gè)字形或圖形必須分成多條線,線數(shù)目與真實(shí)的筆書寫該字形 或繪圖時(shí)的筆劃次數(shù)(不抬起或暫停)相同。之后,持續(xù)暫停大于0的結(jié)點(diǎn)或者筆狀態(tài)為 “向上”的結(jié)點(diǎn)將構(gòu)成線的終點(diǎn)。因此,結(jié)點(diǎn)105將構(gòu)成線的終點(diǎn)。對(duì)于每個(gè)點(diǎn)擊的結(jié)點(diǎn),使用者還指定該點(diǎn)下游的規(guī)定書寫速度。請(qǐng)注意,實(shí)際的書 寫速度將通過表演者及時(shí)考慮使用者在多媒體顯示期間設(shè)定的值計(jì)算得到。在制造器中, 使用者僅在必須以相同的速度畫線或者必須以較慢或較快的速度繪制線的某些部分時(shí)必 須進(jìn)行指定。例如,如果使用者想要虛擬筆繪制線203的中央直線部分的速度比繪制其起 始和終端部分要快,則使用者設(shè)定結(jié)點(diǎn)101、102、103、104和105的速度為例如80%、100%、 150%、100%和80%。之后,制造器將這些數(shù)據(jù)存儲(chǔ)在緩沖區(qū)208中。對(duì)于每個(gè)點(diǎn)擊的結(jié)點(diǎn),使用者還指定該點(diǎn)下游的書寫粗度。例如,如果使用者想要 虛擬筆繪制線203的中央直線部分比其起始和終端部分要粗,則結(jié)點(diǎn)101、102、103、104和105的粗度設(shè)置為例如100%、200%、400%、200%和100%。制造器將這些數(shù)據(jù)存儲(chǔ)在緩沖 區(qū)209中?,F(xiàn)在參考圖11-13。使用者為字形的下一條線重復(fù)之前的步驟,按序在結(jié)點(diǎn)106、 107、108、和109上點(diǎn)擊鼠標(biāo)四次。在每次點(diǎn)擊后,制造器將包含所有這些點(diǎn)擊的結(jié)點(diǎn)的最 小矩形的寬度W和高度H存儲(chǔ)在緩沖區(qū)200中,將其標(biāo)準(zhǔn)化的坐標(biāo)存儲(chǔ)在緩沖區(qū)201中, 插值202這些坐標(biāo),以及顯示被插值的線203和204,這些線是虛擬筆將在表演者中繪制的 實(shí)際的線。注意線203由結(jié)點(diǎn)101、102、103、104和105的插值產(chǎn)生,而線204由結(jié)點(diǎn)106、 107、108和109的插值產(chǎn)生。同樣對(duì)于結(jié)點(diǎn)106、107、108和109中的每一個(gè),使用者將指定 插值參數(shù)(緩沖區(qū)205),可能暫停的持續(xù)時(shí)間(緩沖區(qū)206),筆狀態(tài)(緩沖區(qū)207),該點(diǎn)下 游的規(guī)定書寫速度(緩沖區(qū)208)和該點(diǎn)下游的粗度(緩沖區(qū)209)。階段1步驟B 字形單元內(nèi)字形矩形的限定(圖14)。該步驟只針對(duì)字形執(zhí)行,對(duì)于畫圖必須跳過該步驟。單元410用于包含屬于同一字體的所有字形。矩形420在包含字形50的矩形中 是最小的。使用者在單元410內(nèi)設(shè)定矩形420的位置。制造器將矩形420相對(duì)單元410的 位置(LT)和尺寸(WH)標(biāo)準(zhǔn)化,并將這些值存儲(chǔ)在緩沖區(qū)220中。階段1步驟C 在文件中存儲(chǔ)字形和圖形(圖15)。屬于相同字體的字形通過針對(duì)每個(gè)字形存儲(chǔ)緩沖區(qū)220和緩沖區(qū)201、205、206、 207,208和209而存儲(chǔ)在文件中,緩沖區(qū)220包含該單元的數(shù)據(jù),而緩沖區(qū)201、205、206、 207、208和209(圖12-13)包含結(jié)點(diǎn)的屬性的數(shù)據(jù)。假設(shè)使用者已經(jīng)將與字形“a”50有關(guān) 的數(shù)據(jù)以及與具有相同樣式的其他字形有關(guān)的數(shù)據(jù)存儲(chǔ)在文件“Fontl”中。圖形通過針對(duì)每個(gè)圖形存儲(chǔ)緩沖區(qū)201、205、206、207、208和209而存儲(chǔ)在文件 中,緩沖區(qū)201、205、206、207、208和209包含結(jié)點(diǎn)屬性的數(shù)據(jù)。階段2 虛擬筆書寫和畫圖(圖16-28)。書寫和畫圖由表演者中的虛擬筆來執(zhí)行。首先描述如何完成字形,接下來描述如 何完成圖形。階段2步驟A 設(shè)定要書寫的文本和相關(guān)的參數(shù)(圖16-17)。使用者例如通過使用鍵盤輸入虛擬筆必須書寫的文本。例如,文本的第一個(gè)詞是 “animals” 511。使用者還指定文本的字體,例如選擇包含在文件“Fontl” 512中的字體。使用者還指定文本的字體大小(尺寸)、文本的第一個(gè)字形在屏幕上的位置、書寫 速度、線的粗度和顏色。例如,字體大小值為200、在屏幕上的位置為坐標(biāo)(10,10)、速度值 500像素每秒、粗度值為4像素和顏色為黑色。表演者分別將這些值存儲(chǔ)在緩沖區(qū)513、514、 515,516 和 517 中。使用者現(xiàn)在可以命令表演者開始驅(qū)動(dòng)虛擬筆進(jìn)行書寫。階段2步驟B:自文件讀取與要書寫的第一字形相關(guān)的數(shù)據(jù)(圖18-19)。要書寫的第一字形是字形“a”。所以,表演者自緩沖區(qū)512指定的文件即文件 “Fontl”讀取用于書寫該字形的數(shù)據(jù)即單元內(nèi)的其矩形(緩沖區(qū)220)及其結(jié)點(diǎn)的屬性。每 個(gè)結(jié)點(diǎn)的屬性是坐標(biāo)(緩沖區(qū)201),與要使用的插值類型相關(guān)的數(shù)據(jù)(緩沖區(qū)205),可能 暫停的持續(xù)時(shí)間(緩沖區(qū)206)、筆狀態(tài)(緩沖區(qū)207),該結(jié)點(diǎn)下游的書寫速度(緩沖區(qū)208) 和該結(jié)點(diǎn)下游的線的粗度(緩沖區(qū)209)。
階段2步驟C 計(jì)算要書寫的第一字形的坐標(biāo)(圖18-19)。表演者讀取緩沖區(qū)206和207以計(jì)算要書寫第一字形即字形“a”需要多少筆劃。 暫停時(shí)間大于0的每個(gè)結(jié)點(diǎn)或筆狀態(tài)為“向上”的每個(gè)結(jié)點(diǎn)視為筆劃結(jié)束。因此,字形“a” 的第一筆劃將包括初始的5個(gè)結(jié)點(diǎn),而第二筆劃將包括最后的4個(gè)結(jié)點(diǎn)。表演者(圖18)使用字體大小值(513)將包含單元內(nèi)的字形的矩形220轉(zhuǎn)換成 (操作611)屏幕坐標(biāo),將這些坐標(biāo)存儲(chǔ)在緩沖區(qū)612中,并使用這些坐標(biāo)將結(jié)點(diǎn)的坐標(biāo)201 轉(zhuǎn)換為(操作613)屏幕坐標(biāo),以及將它們存儲(chǔ)在緩沖區(qū)614中。之后,表演者使用存儲(chǔ)在緩 沖區(qū)205中的數(shù)據(jù)分別插值(操作615)形成第一筆劃和第二筆劃的結(jié)點(diǎn)的坐標(biāo)614,并且 將計(jì)算的坐標(biāo)存儲(chǔ)在緩沖區(qū)616中。最后,表演者使用緩沖區(qū)514的數(shù)據(jù)轉(zhuǎn)換(操作617) 坐標(biāo)616,從而獲得要繪制像素的實(shí)際坐標(biāo),并將其存儲(chǔ)在緩沖區(qū)711中。階段2步驟D 計(jì)算書寫第一字形的速度和粗度(圖19)。使用速度值(緩沖區(qū)515),表演者以像素每秒為單位改變621每個(gè)結(jié)點(diǎn)下游的書 寫速度208,將計(jì)算的值存儲(chǔ)在緩沖區(qū)622中,對(duì)這些值進(jìn)行插值623 (樣條插值),并將結(jié) 果存儲(chǔ)在緩沖區(qū)712中。使用粗度值(緩沖區(qū)516),表演者將每個(gè)結(jié)點(diǎn)下游線的粗度209變換為624像素, 將計(jì)算的值存儲(chǔ)在緩沖區(qū)625中,對(duì)這些值進(jìn)行插值(樣條插值)626,并將結(jié)果存儲(chǔ)在緩沖 區(qū)715中。階段2步驟E 計(jì)算書寫第一字形的每個(gè)像素的時(shí)間(圖20)。表演者使用緩沖區(qū)711和712的值計(jì)算書寫每個(gè)像素的時(shí)間,并將他們存儲(chǔ)在緩 沖區(qū)713中。階段2步驟F 書寫第一個(gè)字形的第一條線(圖21)?,F(xiàn)在表演者可開始驅(qū)動(dòng)虛擬筆。通過定位虛擬筆,使其尖端準(zhǔn)確地位于要繪制的第一像素右側(cè)的第一像素上,即 緩沖區(qū)711的第一項(xiàng),表演者在計(jì)算機(jī)屏幕上示出虛擬筆的圖像?,F(xiàn)在表演者可開始書寫字形的第一條線。關(guān)于要繪制什么以及如何繪制的信息包 含在緩沖區(qū)711、713和715中。事實(shí)上,要繪制的像素的坐標(biāo)存儲(chǔ)在緩沖區(qū)711中,而繪制 像素的速度和粗度分別存儲(chǔ)在緩沖區(qū)713和715中。表演者使計(jì)時(shí)器801啟動(dòng),并且在指向緩沖區(qū)711的第一像素之后立即開始使用 緩沖區(qū)713的第一項(xiàng)所指示的粗度以及緩沖區(qū)517中的顏色進(jìn)行繪制(圖17和21)。在此之后,表演者讀取計(jì)時(shí)器801的實(shí)際時(shí)間,尋找緩沖區(qū)713中其值大于實(shí)際時(shí) 間的第一項(xiàng),并且繪制這一項(xiàng)之前的且尚未繪制的所有像素。之后,表演者再次讀取計(jì)時(shí)器801的實(shí)際時(shí)間,等等,直到繪制完第一條線的所有 部分1、2、3、4和5。此時(shí),完成第一字形第一條線的書寫。應(yīng)當(dāng)注意到完成這些步驟所需循環(huán)的實(shí)際數(shù)目取決于使用者設(shè)定的速度的值 (圖17,緩沖區(qū)515)以及使用的計(jì)算機(jī)的速度。如果速度值很低并且/或者計(jì)算機(jī)很快, 則在數(shù)量等于構(gòu)成線本身的像素?cái)?shù)目的循環(huán)中繪制線。還應(yīng)當(dāng)注意在繪制期間,使用者可以改變繪制速度(圖17,緩沖區(qū)515)或者虛擬 筆的圖像,而在此情形下,表演者將使用下一循環(huán)中的新設(shè)置,根據(jù)W02006054126中的說明。階段2步驟G 虛擬筆脫離寫表面并且移至下一條線的開始位置(圖22-25)?,F(xiàn)在表演者必須將虛擬筆脫離寫表面并將其從像素851移至像素853,即移至要 繪制的下一條線的第一個(gè)像素。為了這樣做,表演者必須計(jì)算虛擬筆尖為了以真實(shí)的方式 脫離寫表面、移動(dòng)并落在寫表面上所必須遵循的三維軌跡。表演者兩次計(jì)算該軌跡在寫表面上的投影(圖24),一次通過使用最低速度(例如 80像素每秒),而另一種情形使用最快速度(例如2000像素每秒)。當(dāng)使用最低速度完成 計(jì)算時(shí),獲得直線861。事實(shí)上,當(dāng)速度很慢時(shí),軌跡不受剛剛繪制的線的形狀的影響,當(dāng)使 用最快的速度完成計(jì)算時(shí),剛剛繪制的線的最后幾個(gè)像素和要繪制的下一條線的前幾個(gè)結(jié) 點(diǎn)必須被插值(三次樣條),并且獲得曲線869。事實(shí)上,當(dāng)速度很快時(shí),軌跡在很大程度上 受剛剛繪制的線的最后部分的形狀和要繪制的下一條線的第一部分的形狀的影響。之后,表演者在考慮使用者設(shè)置的實(shí)際速度(緩沖區(qū)515、圖17和23)的情形下, 計(jì)算位于線861和曲線869間中間位置的曲線865 (圖24),并且表演者在緩沖區(qū)821中存 儲(chǔ)該結(jié)果。在此之后,通過估計(jì)穿過最后繪制的像素851、要繪制的下一個(gè)像素853和虛擬筆 筆尖的最高抬起點(diǎn)852的拋物線,表演者計(jì)算軌跡在z平面上的投影875 (圖25)。在所示 的示例中(圖25),假設(shè)點(diǎn)852與點(diǎn)851和853等距。如果使用者距離計(jì)算機(jī)屏幕的距離 為50cm,則假設(shè)最高抬起點(diǎn)852距離寫表面的距離為5cm,即點(diǎn)851和853之間的1000個(gè) 像素的距離。表演者將結(jié)果存儲(chǔ)在緩沖區(qū)822中?,F(xiàn)在表演者開始驅(qū)動(dòng),以將虛擬筆脫離寫表面、移動(dòng)虛擬筆以及將虛擬筆再次降 低到寫表面上。緩沖區(qū)821中的值將用于定位在寫表面上的筆圖像。緩沖區(qū)822中的值將 用于在抬起、移動(dòng)和降低期間旋轉(zhuǎn)、平移以及縮放筆圖像。計(jì)時(shí)器用于計(jì)時(shí)所有過程,類似 于在階段2的步驟F中所完成的(圖21,計(jì)時(shí)器801)。階段2步驟H 書寫第一字形的下一條線(圖21)。重復(fù)執(zhí)行步驟F、E、G,直到書寫完第一字形的所有線。在示出的示例中,虛擬筆書 寫包含線段(pieCe)6、7、8和9的線(圖21)。階段2步驟I 書寫第一個(gè)詞的下幾個(gè)字形。重復(fù)執(zhí)行步驟B至H,直到書寫完第一個(gè)詞的所有字形。如果希望同比例字體書寫,則第二個(gè)字形的第一像素的橫坐標(biāo)將設(shè)置為緩沖區(qū) 514中值的和(圖18),加上最后繪制的字形的像素寬度(緩沖區(qū)612,圖18),加上固定的間 距值(由字體大小乘以常數(shù)C1給定(緩沖區(qū)513,圖18)),加上粗度(緩沖區(qū)516,圖19)。 通常常數(shù)C1設(shè)置為0. 12,但是不同的值可以由使用者設(shè)定,存儲(chǔ)在包含字形的文件中,并 且在階段2的步驟B期間讀取。階段2步驟J 讀取接下來的幾個(gè)詞。重復(fù)步驟B到H,直到書寫完文本的所有詞。連續(xù)詞之間的間距的計(jì)算方式類似于步驟I中所完成的方式。但是,使用常數(shù) C2(而不是常數(shù)C1)。通常常數(shù)C2設(shè)置為0.30。線間距計(jì)算的方式如下將最后書寫的行 的縱坐標(biāo)和字形單元的高度乘字體大小(緩沖區(qū)513,圖18)除以常數(shù)C3求和。通常常數(shù) C3設(shè)置為0. 55。常數(shù)C2和C3的不同值可以由使用者設(shè)置,存儲(chǔ)在包含字形的文件中,并且在階段2的步驟B期間讀取。繪制圖形的過程圖形以類似于字形的方式進(jìn)行繪制,但是更為容易,因?yàn)榭梢蕴^步驟I和J,并 且步驟B僅僅需要選擇要繪制的圖形,例如通過從列表中選擇。連體書寫(圖26-28)當(dāng)教師利用連體書寫方式書寫詞時(shí),每個(gè)單個(gè)字形必須與前幾個(gè)字形和后幾個(gè)字 形相連接。因此,給定字形的形狀不是固定的,而是根據(jù)前幾個(gè)字形和后幾個(gè)字形變化。例 如,字形“b”的形狀901,902,903和904 (圖26)彼此不同,因?yàn)樗麄兦懊婊蚝竺娴淖中尾?同,并且之后將每個(gè)字形“b”連接到前面的字形、后面的字形的線可能不同。因此,為了允許虛擬筆利用連體書寫方式來書寫文本,必須為每個(gè)單獨(dú)的字形分 配各種形狀。這將通過將每單個(gè)字形分成三部分來完成初始部分,中央部分和最后部分。 初始和最后部分的形狀將分別受到后面的字形和前面的字形的影響,而中央部分的形狀保 持不變。為了做到這一點(diǎn),必須對(duì)上述的階段1和2作出一些變化。首先,在已將字形存儲(chǔ)在文件中(階段1的步驟C)之后,需要一個(gè)新步驟,以通過 制造器允許使用者將每個(gè)字形的所有結(jié)點(diǎn)分成三個(gè)子集初始結(jié)點(diǎn)的子集、中央結(jié)點(diǎn)的子 集和最后結(jié)點(diǎn)的子集。在字形“a”(910)(圖形27)中,例如,結(jié)點(diǎn)911到912、913到914和 915到916分別構(gòu)成初始、中央和最后子集。與此類似,在字形“0”(920)中,結(jié)點(diǎn)921到 922,923到924、925到926分別構(gòu)成初始、中央和最后子集,并且在字形“b” (930)中,結(jié)點(diǎn) 931到932,933到934和935到936分別構(gòu)成初始、中央和最后子集。之后,針對(duì)每對(duì)字形,使用者必須產(chǎn)生將第一字形的中央部分連接到第二字形的 中央部分的線的結(jié)點(diǎn)、修改第一字形的結(jié)點(diǎn)的最后子集和第二字形的初始子集。這是通過 制造器完成的,方式類似于階段1的步驟A。對(duì)于一對(duì)字形“ab” 940 (圖28),例如,產(chǎn)生結(jié) 點(diǎn)941到942,而對(duì)于一對(duì)字形“ob” 950產(chǎn)生結(jié)點(diǎn)951到952。之后將所有這些數(shù)據(jù)存儲(chǔ)在最初存儲(chǔ)單個(gè)字形的同一文件中。對(duì)階段2也略作修改,只是不允許單個(gè)字形的讀取,但允許單對(duì)字形的讀取。例 如,為了使用連體書寫方式書寫詞“animalS”511(圖16),表演者可以以下方式繼續(xù)。第 一,執(zhí)行步驟B到H,但是限于該詞的第一個(gè)字形的初始和中央部分。第二,重復(fù)步驟B到H 以書寫將第一字形連接到該詞第二字形的線。第三,重復(fù)步驟B到H以書寫該詞的第二個(gè) 字形的中央部分。第四,重復(fù)步驟B到H以書寫將第二個(gè)字形連接到該詞的第三個(gè)字形的 線。等等,直到該詞結(jié)束,重復(fù)步驟B到H以書寫該詞的最后字形的中央部分和最后部分。 顯然,當(dāng)字形存儲(chǔ)在文件中時(shí)(階段1的步驟C),必須設(shè)置緩沖區(qū)以指定是否必須連接字 形,并且之后表演者將讀取該緩沖區(qū)。本方法解決了上述所有技術(shù)問題。特別是,即使不熟練的使用者也可產(chǎn)生字形和 圖形,并且可以指定構(gòu)成這些字形和圖形的線的書寫順序、這些線的規(guī)定速度和粗度以及 在有角度的地方的可能暫停,從而解決前四個(gè)和第六個(gè)技術(shù)問題。而且,該方法允許虛擬筆脫離寫表面,沿著準(zhǔn)時(shí)計(jì)算的軌跡移動(dòng),以及落在寫表面 上,就像一支真實(shí)的筆必須在同一字形的連續(xù)筆劃之間、同一個(gè)詞的連續(xù)字形之間以及同 一文本的連續(xù)詞之間移動(dòng)時(shí)所做的那樣,從而解決了第五個(gè)技術(shù)問題。
最后,該方法允許虛擬筆利用連體書寫方式書寫文本,從而解決了第七個(gè)和最后 的技術(shù)問題。因此,通過使用該方法,即便不熟練的使用者也可能在計(jì)算機(jī)屏幕上驅(qū)動(dòng)虛擬筆, 以類似于教師在真實(shí)的黑板上書寫時(shí)所用真筆的方式進(jìn)行書寫和繪圖。具體實(shí)施例的前述說明將根據(jù)概念點(diǎn)全面展現(xiàn)本發(fā)明,以便其他人通過應(yīng)用當(dāng)前 的知識(shí)而不需要進(jìn)一步的研究即能夠?yàn)楦鞣N應(yīng)用程序修改和/或調(diào)整實(shí)施例,同時(shí)不偏離 本發(fā)明,并且因此應(yīng)當(dāng)理解這種調(diào)整和修改被認(rèn)為是具體實(shí)施例的等價(jià)物。為此,實(shí)現(xiàn)本文 描述的不同功能的方式和材料可具有不同的特性而不偏離本發(fā)明的范圍。應(yīng)當(dāng)理解本文使 用的措辭或術(shù)語用于說明的目的而并非為了限制。
權(quán)利要求
一種在屏幕上產(chǎn)生輸出的方法,所述輸出由利用虛擬筆或類似物繪制的、線形式的圖形或字形構(gòu)成,所述方法包括以下步驟由使用者產(chǎn)生所述圖形或字形,作為由多個(gè)結(jié)點(diǎn)分開的一系列線部分,每個(gè)結(jié)點(diǎn)具有至少一對(duì)坐標(biāo);為每個(gè)結(jié)點(diǎn)賦予一個(gè)參數(shù),所述參數(shù)選自插值的類型和相對(duì)權(quán)重、筆狀態(tài)(自寫表面向上/向下),可能暫停的持續(xù)時(shí)間、所述結(jié)點(diǎn)的下游書寫速度、所述結(jié)點(diǎn)下游的線粗度或以上參數(shù)的組合;為要繪制的每個(gè)圖形/字形存儲(chǔ)所述結(jié)點(diǎn)和相關(guān)參數(shù);自所存儲(chǔ)的結(jié)點(diǎn)和參數(shù)生成輸出,所述輸出包括所述筆跟隨所述結(jié)點(diǎn)的軌跡;所述軌跡由所述結(jié)點(diǎn)之間的可見線部分或不可見線部分形成,其中所述筆的所述軌跡考慮所述結(jié)點(diǎn)的所述每個(gè)參數(shù)的值和/或所述結(jié)點(diǎn)之間插值的所述每個(gè)參數(shù)的值。
2.根據(jù)權(quán)利要求1所述在屏幕上產(chǎn)生輸出的方法,其中所述產(chǎn)生步驟由使用者通過具 體使用鼠標(biāo)和/或鍵盤運(yùn)行產(chǎn)生應(yīng)用程序(制造器)執(zhí)行。
3.根據(jù)權(quán)利要求2所述在屏幕上產(chǎn)生輸出的方法,其中在所述產(chǎn)生步驟期間,使用者 通過點(diǎn)擊鼠標(biāo)產(chǎn)生圖形/字形,每次鼠標(biāo)點(diǎn)擊對(duì)應(yīng)一個(gè)結(jié)點(diǎn)。
4.根據(jù)權(quán)利要求3所述在屏幕上產(chǎn)生輸出的方法,其中在每次鼠標(biāo)點(diǎn)擊之后,所述應(yīng) 用程序?qū)悬c(diǎn)擊的結(jié)點(diǎn)的最小矩形的寬度(W)和高度(H)存儲(chǔ)在一緩沖區(qū)內(nèi),再將 標(biāo)準(zhǔn)化在0與1之間的這些結(jié)點(diǎn)的坐標(biāo)存儲(chǔ)在所述緩沖區(qū)中。
5.根據(jù)權(quán)利要求4所述在屏幕上產(chǎn)生輸出的方法,其中所述結(jié)點(diǎn)的所述坐標(biāo)在已經(jīng) 標(biāo)準(zhǔn)化并存儲(chǔ)之后通過預(yù)定算法進(jìn)行插值并被標(biāo)準(zhǔn)化為所述矩形,所述矩形顯示被插值的 線。
6.根據(jù)權(quán)利要求1所述在屏幕上產(chǎn)生輸出的方法,其中所述結(jié)點(diǎn)可以通過拖動(dòng)它們被 移動(dòng),特別是使用鼠標(biāo)或鍵盤,或者所述結(jié)點(diǎn)可以被消除,并且新的結(jié)點(diǎn)可以插入到現(xiàn)有結(jié) 點(diǎn)之間。
7.根據(jù)權(quán)利要求1所述在屏幕上產(chǎn)生輸出的方法,其中所述生成輸出的步驟由使用者 通過運(yùn)行輸出生成應(yīng)用程序(表演者)來執(zhí)行,該應(yīng)用程序在屏幕上生成所述虛擬筆書寫 所述圖形/字形的輸出。
8.根據(jù)權(quán)利要求2和7所述在屏幕上產(chǎn)生輸出的方法,其中所述產(chǎn)生應(yīng)用程序(制造 器)將存儲(chǔ)的、選自第一和第二參數(shù)的一個(gè)參數(shù)與第一結(jié)點(diǎn)和最后的結(jié)點(diǎn)關(guān)聯(lián),如果所述 第一結(jié)點(diǎn)與所述第一參數(shù)關(guān)聯(lián)且第二結(jié)點(diǎn)與所述第二參數(shù)關(guān)聯(lián),則所述軌跡插值由所述虛 擬筆通過所述輸出生成應(yīng)用程序(表演者)沿自所述第一結(jié)點(diǎn)向所述第二結(jié)點(diǎn)的方向繪制 的所述結(jié)點(diǎn),或者如果所述第一結(jié)點(diǎn)與所述第二參數(shù)關(guān)聯(lián)且所述第二結(jié)點(diǎn)與所述第一參數(shù) 關(guān)聯(lián),則所述軌跡插值由所述虛擬筆通過所述生成輸出應(yīng)用程序沿相反方向繪制的所述結(jié) 點(diǎn)o
9.根據(jù)權(quán)利要求7所述在屏幕上產(chǎn)生輸出的方法,其中所述產(chǎn)生應(yīng)用程序(制造器) 將存儲(chǔ)的參數(shù)與每個(gè)結(jié)點(diǎn)關(guān)聯(lián),所述參數(shù)選自下列參數(shù)構(gòu)成的組插值曲線類型參數(shù),其與已知的插值算法關(guān)聯(lián),所述輸出生成應(yīng)用程序(表演者)根據(jù) 與該參數(shù)對(duì)應(yīng)的選定插值算法從所述結(jié)點(diǎn)開始繪制插值曲線;暫停參數(shù),所述虛擬筆通過所述輸出生成應(yīng)用程序(表演者)在所述結(jié)點(diǎn)上停留與所述暫停參數(shù)對(duì)應(yīng)的時(shí)間;“向下”參數(shù)和“向上”參數(shù),如果該結(jié)點(diǎn)與“向下”參數(shù)關(guān)聯(lián),則所述輸出生成應(yīng)用程序 (表演者)顯示所述虛擬筆的筆尖接觸所述寫表面以及使所述虛擬筆繪制從該結(jié)點(diǎn)開始到 下一個(gè)結(jié)點(diǎn)的插值線的片段,或者如果該結(jié)點(diǎn)與“向上”參數(shù)相關(guān)聯(lián),則所述輸出生成應(yīng)用 程序(表演者)顯示所述虛擬筆的筆尖脫離所述寫表面并且使所述虛擬筆沿著插值線的所 述片段移動(dòng)而不進(jìn)行繪制;速度參數(shù),所述輸出生成應(yīng)用程序(表演者)使所述虛擬筆沿著自該結(jié)點(diǎn)開始至下一 結(jié)點(diǎn)的插值線的所述片段以一速度進(jìn)行繪制或移動(dòng),所述速度以和所述這些結(jié)點(diǎn)相關(guān)的速 度參數(shù)成比例的方式變化; 粗度參數(shù),所述輸出生成應(yīng)用程序(表演者)使所述虛擬筆以一粗度繪制自該結(jié)點(diǎn)開 始至下一結(jié)點(diǎn)的插值線的所述片段,所述粗度以和所述這些結(jié)點(diǎn)相關(guān)的粗度參數(shù)成比例的 方式變化;包含字形的矩形的尺寸參數(shù)和所述矩形在單元內(nèi)的位置參數(shù),所述輸出生成應(yīng)用程序 (表演者)將字形與所述尺寸參數(shù)和所述位置參數(shù)關(guān)聯(lián),從而相同字體的多個(gè)字形可以正 確排列并且均一地設(shè)置尺寸;包含一串字形中每個(gè)字形的矩形單元的尺寸參數(shù)和所述矩形單元的規(guī)定字體尺寸參 數(shù),所述輸出生成應(yīng)用程序(表演者)將所述矩形單元參數(shù)與一連串所述字形所構(gòu)成的文 本關(guān)聯(lián)。
10.根據(jù)權(quán)利要求9所述在屏幕上產(chǎn)生輸出的方法,其中所述產(chǎn)生應(yīng)用程序(制造器) 如果產(chǎn)生一系列字形,則將相同風(fēng)格的字形、所述矩形單元和所述規(guī)定字體尺寸存儲(chǔ)在字 體文件(Font)中,并且其中所述輸出生成應(yīng)用程序(表演者)如果生成具有相同風(fēng)格的一 系列字形則自鍵盤接收與所述系列字形對(duì)應(yīng)的輸入并且自所述字體文件(Font)讀取所述 字形、所述矩形單元和所述規(guī)定字體尺寸。
11.根據(jù)權(quán)利要求7和8所述在屏幕上產(chǎn)生輸出的方法,其中所述輸出生成應(yīng)用程序 (表演者)最初在所述屏幕上的一位置繪制所述虛擬筆的圖像,使得其筆尖非常接近所述 第一結(jié)點(diǎn)ο
12.根據(jù)權(quán)利要求10所述在屏幕上產(chǎn)生輸出的方法,其中如果所述虛擬筆必須從與 “向上”參數(shù)關(guān)聯(lián)的第一結(jié)點(diǎn)朝與“向下”參數(shù)關(guān)聯(lián)的第二結(jié)點(diǎn)移動(dòng),則所述輸出生成應(yīng)用程 序(表演者)使所述虛擬筆跟隨模擬所述筆脫離所述寫表面的三維軌跡移動(dòng)。
13.根據(jù)權(quán)利要求12所述在屏幕上產(chǎn)生輸出的方法,其中如果所述虛擬筆必須從與 “向上”參數(shù)關(guān)聯(lián)的第一結(jié)點(diǎn)朝與“向下”參數(shù)關(guān)聯(lián)的第二結(jié)點(diǎn)移動(dòng),則所述輸出生成應(yīng)用程 序(表演者)通過確定所述第一結(jié)點(diǎn)上的速度以及之后插值所述第一結(jié)點(diǎn)和所述第二結(jié)點(diǎn) 之間作為所述速度的函數(shù)的所述軌跡在所述寫表面上的投影而繼續(xù)運(yùn)行,所述軌跡考慮所 述速度從而自其脫離所述寫表面的時(shí)刻產(chǎn)生所述筆的持續(xù)移動(dòng)。
14.根據(jù)權(quán)利要求12所述在屏幕上產(chǎn)生輸出的方法,其中如果所述虛擬筆必須從與 “向上”參數(shù)關(guān)聯(lián)的第一結(jié)點(diǎn)朝與“向下”參數(shù)關(guān)聯(lián)的第二結(jié)點(diǎn)移動(dòng),則所述輸出生成應(yīng)用程 序(表演者)旋轉(zhuǎn)、平移以及縮放所述虛擬筆在脫離所述寫表面和再次落到所述寫表面上 之間的圖像。
15.根據(jù)權(quán)利要求2和7所述在屏幕上產(chǎn)生輸出的方法,其中可以選擇連體書寫開/關(guān)參數(shù),從而在連體書寫方式下,所述產(chǎn)生應(yīng)用程序(制造器)在已經(jīng)將字形存儲(chǔ)在文件中之 后將每個(gè)字形的所有結(jié)點(diǎn)分成三個(gè)子集初始結(jié)點(diǎn)子集、中央結(jié)點(diǎn)子集和最后結(jié)點(diǎn)子集,并 且之后對(duì)于每對(duì)相鄰字形,產(chǎn)生連接第一字形的中央結(jié)點(diǎn)子集的結(jié)點(diǎn)和第二字形的中央結(jié) 點(diǎn)子集的結(jié)點(diǎn)的線,同時(shí)更改第一字形的結(jié)點(diǎn)的最后子集和第二字形的初始子集,以便所 述輸出生成應(yīng)用程序(表演者)將前一字形的最后結(jié)點(diǎn)的確定結(jié)點(diǎn)連接到接下來字形的最 后結(jié)點(diǎn)的確定結(jié)點(diǎn)。
全文摘要
一種在計(jì)算機(jī)屏幕上驅(qū)動(dòng)虛擬筆的方法,所述虛擬筆在虛擬黑板上書寫和畫圖,以模擬真實(shí)筆在真實(shí)黑板上的書寫。字形和圖形(50)通過從形成要繪制的線(50)的點(diǎn)集指定結(jié)點(diǎn)(106、107、108、109)的子集產(chǎn)生。有關(guān)結(jié)點(diǎn)的所有屬性,如坐標(biāo)(201)、暫停、速度、粗度等,存儲(chǔ)在一個(gè)文件中。接下來,使用者在鍵盤上鍵入要書寫的詞或自列表選擇要繪制的圖形。此時(shí),要書寫的字形或要繪制的圖形的結(jié)點(diǎn)的所有屬性從文件獲得并且被插值,并且獲得的數(shù)據(jù)用于驅(qū)動(dòng)虛擬筆以看起來類似于真實(shí)筆的方式進(jìn)行書寫和畫圖,其在銳角處暫停、脫離以及落在虛擬黑板的寫表面、改變繪制的粗度和速度、使用印刷體字母或連體書寫方式。
文檔編號(hào)G06T11/20GK101878488SQ200880102346
公開日2010年11月3日 申請(qǐng)日期2008年8月4日 優(yōu)先權(quán)日2007年8月8日
發(fā)明者M·皮爾基奧 申請(qǐng)人:M·皮爾基奧