專利名稱:三維字符生成設備及三維圖形數據生成設備的制作方法
技術領域:
本發明涉及用于利用其輪廓線從展示字符的2D顯示(representation)的2D數據等等來生成展示3D顯示的3D數據的三維(3D)數據生成設備。更具體地本發明涉及用于字符及圖形的3D字符數據生成設備及3D圖形數據生成設備。
背景技術:
傳統的3D字符數據生成設備公開在,例如名為“3-D CharacterGenerating Device”(“3-D字符發生設備”)的日本公開專利申請No.63-103380中。下面參照
圖1描述作為第一項傳統技術的這一設備。
2D字符輸入單元140輸入一個2D字符,該字符作為x-y平面上的字符被存儲在存儲單元120內。根據該輸入的2D字符,通過z方向校正單元130的用戶操作來設計3D字符形狀。在這一操作期間,用戶觀看顯示單元110。該字符的各個點的z坐標在x-z投影面112以及y-z投影面113上被改變以將輸入的2D字符變換成3D字符。在其上作出這一校正的3D字符被顯示在3D投影面114上以便觀看。區域背景輸入單元150輸入圖像數據。根據該圖像數據,把一個圖像加到存儲于存儲單元120的3D字符的表面上,并且該加有圖像的3D字符被顯示在3D投影面114上。在此技術中,3D字符不是自動生成的,而是由用戶利用x-z投影面112或是y-z投影面113作出調整來生成的。
目的在于自動地生成3D字符的技術公開在,例如名為“FormConverting Method,a Recording Medium Storing a Procedure of theConverting Method,and a Form Converting Device”的日本公開專利申請No.11-53578中。利用該第二項傳統技術,根據表示2D平面中字符形狀的輪廓數據只生成字符的側平面。因此該項傳統技術不生成一個完整的3D字符,而是只生成該3D字符的一部分。
日本公開專利申請No.11-53579公開了“Form ConvertingMethod,a Recording Medium Storing the Conversion Procedure,and aForm Converting Device”。根據該第三項傳統技術,輸入2D位圖字體字符,并且構成該位圖字體字符的各個位數據集被校正成3D形式。然后合成這些位數據集以產生3D形式的整個字符。這一位圖字體字符可能具有粗糙的輪廓。因此必須采用對每個字符使用多個位的位圖字體以便最小化字符的粗糙輪廓。
根據第一項傳統技術,人工生成3D字符,增加了操作者的操作負擔并占用了大量的處理時間。因此第一項傳統技術不能實時地生成3D字符。第二項傳統技術試圖自動生成3D字符,但是該項技術僅僅生成表示3D字符的側平面的數據而不生成該字符的前部和背部平面,而這兩個平面是用于3D字符顯示的重要元素。因此由第二項傳統技術所生成的數據是不完全的并且沒有用處。第三項傳統技術能夠提供3D字符。但是,由于它是從位圖數據生成3D字符,因此導致3D字符具有粗糙的輪廓。當這些字符被用在計算機圖形(CG)中時,通過CG操作后這些字符的輪廓變得更為粗糙,這樣字符的品質大為降低。另外,當所有的位圖數據被變換成某一品質的3D字符時,需要大量的數據。
發明內容
本發明是為解決上述問題而做出的并且目的在于提供一種能夠容易地生成高質量的3D數據的設備。更具體地,本發明的目的在于提供一種能夠利用有關字符和圖形的2D輪廓數據實時地自動生成3D數據的設備。另外,該設備能夠生成表示遠高于基于位圖字體字符和圖形的3D數據生成設備的質量的字符和圖形的3D數據。本發明的設備還能夠提供在3D字符和圖形的表面上的各種紋理圖案。此外,本發明還能夠生成底下具有一個基底的3D字符以及雕刻在基底上的3D字符。由此可見,本發明提供了一種能夠顯示各種3D字符的3D字符數據生成設備。
利用用于從2D字符數據生成3D字符數據的3D字符數據生成設備能夠實現上述的目的。該3D字符數據生成設備包括輪廓確定單元,用于根據2D字符數據確定(a)第一輪廓,該輪廓是包含在一個字符內的一個字符部分的輪廓;以及(b)第二輪廓,該輪廓是形成在該字符中的一個孔的輪廓;包含關系確定單元,用于確定字符部分的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分單元,用于把由包含關系確定單元確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中該劃分單元還劃分由包含關系確定單元未確定的第一輪廓所包圍的整個區域;以及側面生成單元,用于移動含有該劃分區域的字符部分的復本,并基于該復本的頂點以及原始字符部分的頂點生成一個側平面。
對于這一結構,本設備能夠自動地實時生成3D字符數據而不需向操作者施加過多的操作負擔,該數據具有比基于位圖字體的3D字符數據更高的質量。
這里,2D字符數據可能是在具有坐標的2D平面內定義的用以表示第一和第二輪廓的輪廓數據。輪廓確定單元可以(a)獲得輪廓數據;(b)把所獲得的輪廓數據中的第一輪廓數據與第二輪廓數據區別開;以及(c)根據第一和第二輪廓數據分別確定第一和第二輪廓。
這里,劃分單元可以把(a)由包含關系確定單元確定的第一輪廓所包圍的區域以及(b)由包含關系確定單元未確定的第一輪廓所包圍的整個區域視為一個結構元素,把每一個結構元素劃分成凸多邊形,并生成表示該被劃分結構元素的結構元素數據。
這里,側面生成單元可以在與2D平面垂直的方向上移動劃分結構元素的復本,并根據該復本的頂點以及原始結構元素的頂點生成代表一個側平面的側面數據。
這里,第一輪廓數據可以包含一個點序列,該點序列表示第一輪廓并被按照順時針或逆時針方向排列,以及第二輪廓數據可以含有一個點序列,該點序列表示第二輪廓并被按照與表示第一輪廓的點序列的排列方向相反的方向排列。廓確定單元可以根據各個點序列的方向來作出區別。
這里,包含關系確定單元可以包括第一檢測單元,用于檢測圍繞第一輪廓的第一矩形;第二檢測單元,用于檢測圍繞第二輪廓的第二矩形;第一確定單元,用于把各個檢測的第一矩形與檢測的第二矩形進行比較,并確定圍繞第二輪廓的至少一個第一矩形;第二確定單元,用于確定由該至少一個第一矩形之中的最里面的第一矩形所圍繞的第一輪廓;以及關系信息生成單元,用于把所確定的第一輪廓視為圍繞第二輪廓的唯一的第一輪廓,并生成表示該唯一的第一輪廓與第二輪廓之間的包含關系的包含關系信息。
這里,包含關系確定單元可以包括第一檢測單元,用于檢測圍繞第一輪廓的第一矩形;第二檢測單元,用于檢測圍繞第二輪廓的第二矩形;長度檢測單元,用于檢測(a)從第二矩形的重心到第一矩形的一個邊的長度;以及(b)從該重心到與所檢測的第一矩形對應的字符部分有關的點序列中的一個點的長度之中的最短距離;以及關系信息生成單元,用于(a)為組成該字符的每個字符部分選擇由長度檢測單元檢測的最短長度之中的最短長度;(b)判斷與所選最短長度有關的第一輪廓是否是含有第二輪廓的唯一的第一輪廓;以及(c)生成表示該唯一的第一輪廓與第二輪廓之間的包含關系的包含關系信息。
利用這一結構,由其輪廓所表示的字符被用幾何學分析以清楚地確定字符結構。這就使得該字符的各個字符部分被以3D顯示。這就是說,本發明設備使得3D字符是否具有分層結構變得清楚,并且本設備因此能夠生成具有高清晰度的3D顯示,當字符圖形或動畫片被編輯時,對于該設備每個字符都被劃分。
這里,上述3D字符數據生成設備可以進一步包括紋理坐標生成裝置,用于(a)生成包圍結構元素的頂部和底部平面的最小正方形;(b)以這樣的方式,即最小正方形包圍定義頂部和底部平面的點的序列來變換該最小正方形;(c)確定該變換最小正方形的各個坐標;(d)用正方形的邊長除各個確定的坐標;(e)把各個被除的坐標視為映射坐標;(f)計算定義該生成側平面的點序列中的每兩個相鄰點之間的長度總和,與從該序列的起始點開始至一給定點結束的那些點之中的每兩個相鄰點之間的長度總和之間的第一比值;(g)計算從底平面至頂平面的高度與一個給定點的高度之間的第二比值;以及(h)根據第一比值和第二比值生成紋理坐標。
這一結構生成紋理坐標,并因此而可以把各種紋理圖案應用于3D字符的表面。
這里,上述3D字符數據生成設備可以進一步包括數據插入單元,用于(a)用一個預定值除點序列中的兩個相鄰點之間的平均長度,這兩個相鄰點被包含在第一輪廓數據中或是第二輪廓數據中,從而產生一個標準長度;以及(b)在兩個相鄰點之間插入至少一個中間點以便使這兩個相鄰點之間的長度等于或短于該標準長度。
這里,上述3D字符數據生成設備可以進一步包括一個重劃分單元,用于重新劃分由劃分單元所產生的凸多邊形。
對于該結構,中間點被插到字符及孔輪廓點序列中,并且劃分的多邊形被重新劃分成更小的多邊形。這就提高了3D字符的品質。
上述目的還能夠由一種3D字符數據生成設備實現,該設備包括接收單元,用于接收一個字符代碼和一個基底代碼,它們分別與一個字符和一個基底有關;字符/基底形狀存儲單元,用于存儲該字符的輪廓數據,以及存儲該基底的3D數據;字符/基底形狀獲取單元,用于獲得與所接收的字符代碼和基底代碼相應的存儲的輪廓數據以及存儲的3D數據;字符分析單元,用于(a)根據所得到的輪廓數據分析該字符的輪廓與形成在該字符中的孔的輪廓之間的包含關系,其中該包含關系表示出該字符的輪廓包含該孔的輪廓;(b)確定該字符的一個結構元素;以及(c)計算使得該字符落在該基底的頂平面上的條件;基底形狀生成單元,用于根據所計算的條件變換3D數據;頂部/底部劃分單元,用于把每個確定的結構元素分成凸多邊形;以及字符側面生成單元,用于移動各個劃分的結構元素以生成3D字符的頂平面,底平面,以及側平面。
上述目的還能夠由一種3D字符數據生成設備實現,該設備包括接收單元,用于接收一個字符代碼和一個基底代碼,它們分別與一個字符和一個基底有關;字符/基底形狀存儲單元,用于存儲該字符的輪廓數據,以及存儲該基底的3D數據;字符/基底形狀獲取單元,用于獲得與所接收的字符代碼和基底代碼相應的存儲的字符輪廓數據以及存儲的基底輪廓數據;字符/基底分析單元,用于(a)根據所得到的字符輪廓數據分析該字符的輪廓與形成在該字符中的孔的輪廓之間的包含關系,其中該包含關系表示出該字符的輪廓包含該孔的輪廓;(b)確定該字符的一個結構元素;以及(c)根據得到的該基底的輪廓數據,分析該基底的輪廓與一個形成在該基底中的孔的輪廓之間的包含關系,其中該包含關系表示出該基底輪廓包含該孔的輪廓;(d)確定該基底的一個結構元素;以及(e)計算使得該字符落在該基底的輪廓內的條件;字符/基底劃分單元,用于(a)把每個確定的結構元素分成凸多邊形;(b)根據所計算的條件把代表該基底的各個結構元素的數據進行變換;以及(d)把與該變換數據有關的各個結構元素分成凸多邊形;以及字符/基底生成單元,用于移動各個劃分的結構元素以生成3D字符的頂平面,底平面,以及側平面。
這里,字符/基底生成單元可以生成具有傾斜形狀的側平面。
上述目的還能夠由一種3D字符數據生成設備實現,該設備包括接收單元,用于接收一個字符代碼和一個基底代碼,它們分別與一個字符和一個基底有關;字符/基底形狀存儲單元,用于存儲該字符的輪廓數據,以及存儲該基底的3D數據;字符/基底形狀獲取單元,用于獲得與所接收的字符代碼和基底代碼相應的存儲的字符輪廓數據以及存儲的雕刻基底輪廓數據;字符/基底分析單元,用于(a)根據所得到的字符輪廓數據分析該字符的輪廓與形成在該字符中的孔的輪廓之間的包含關系,其中該包含關系表示出該字符的輪廓包含該孔的輪廓;(b)確定該字符的一個結構元素;(c)計算使得該字符落在該雕刻基底的輪廓內的條件;(d)根據所計算的條件變換該雕刻基底的輪廓數據;(e)根據變換輪廓數據分析該雕刻基底的輪廓與一個形成在該雕刻基底中的孔的輪廓之間的包含關系,其中該包含關系表示出該雕刻基底的輪廓包含該孔的輪廓;(f)確定該雕刻基底的底平面的一個結構元素;(g)把表示字符輪廓的點序列視為表示孔輪廓的點序列,并把表示孔輪廓的點序列視為表示字符輪廓的點序列,這樣就生成了該字符的新的輪廓數據;(h)把新的輪廓數據與雕刻基底的變換輪廓數據組合在一起,這樣就生成了組合輪廓數據;以及(i)根據該組合輪廓數據分析和變換輪廓數據有關的輪廓與和新輪廓數據有關的輪廓之間的包含關系以確定雕刻基底頂平面的一個結構元素;字符/基底劃分單元,用于把由字符/基底分析單元確定的各個結構元素分成凸多邊形;以及字符/基底側面生成單元,用于移動雕刻基底的各個劃分的結構元素以生成頂平面,底平面,和側平面,以及用一個預定深度來移動該字符頂平面的結構元素以生成該雕刻基底的一個凹處部分的底表面和側表面。
這里,字符/基底側面生成單元生成具有一個傾斜形狀的側平面。
利用該結構,能夠生成在底下具有一個基底的字符或是其上雕刻了字符的雕刻。另外,能夠生成作為這一字符及基底的側平面的各種傾斜形狀。于是,可以根據需要靈活地生成各種類型的3D字符。
上述目的還可以由從2D圖形數據生成3D圖形數據的3D圖形數據生成設備實現,該設備包括輪廓確定單元,用于根據2D圖形數據確定(a)第一輪廓,該輪廓是包含在一個圖形內的一個圖形部分的輪廓;以及(b)第二輪廓,該輪廓是形成在該圖形中的一個孔的輪廓;包含關系確定單元,用于確定圖形部分的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分單元,用于把由包含關系確定單元確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中該劃分單元還劃分由包含關系確定單元未確定的第一輪廓所包圍的整個區域;以及側面生成單元,用于移動含有該劃分區域的圖形部分的復本,并基于該復本的頂點以及原始圖形部分的頂點生成一個側平面。
對于該結構,本設備能夠利用2D圖形的輪廓數據實時地自動生成3D圖形數據而不須給操作者增加操作負擔,即使當一個孔在該圖形上形成時。另外,由本設備的3D數據生成的3D圖形具有比根據位圖字體生成的3D圖形更高的質量。
從上述解釋中顯而易見,本發明產生了巨大的新穎的效果。
為了實現上述目的,本發明可以體現為一種方法,例如3D字符數據生成方法以及3D圖形數據生成方法,包括由本發明的上述設備的特有單元所執行的處理步驟。本發明還可以體現為包括這些步驟的一種程序。這一程序不僅可以存儲在3D字符數據生成設備以及3D圖形數據生成設備的ROM(只讀存儲器)中,還可以存儲在諸如被經銷的CD-ROM光盤的一個記錄介質上。還可以經由通信網以及其它傳輸媒體來經銷該程序。
圖面說明本發明的這些及其它目的,優點和特征將從下面結合附圖對本發明具體實施例的描述中變得更為清晰。
其中圖1是表示用于生成3D字符的傳統設備的功能結構的方框圖;圖2是表示本發明第一實施例的3D字符數據生成設備的功能結構的方框圖;圖3示出如何描繪(trace)字符輪廓線點序列及孔序列;圖4是表示對中文字符“回”進行形狀分析的情形的框圖;圖5是表示圖4所示詳細包含關系分析處理的流程圖;圖6示出一種狀態,其中將第一連接方式應用于中文字符“田”,并且給表示該字符的點序列重新編號;圖7A示出當將第一種三角形劃分方法應用于字符“田”時得到的處理結果;圖7B示出當將第二種三角形劃分方法應用于字符“田”時得到的處理結果;圖8示出當將第二種三角形劃分方法應用于俄文字符“ё”時得到的處理結果;圖9是表示由側面生成單元執行的字符面生成處理流程的流程圖;圖10A是表示用于垂直移動字符的頂平面的第一移動方法的示意圖;圖10B是表示用于垂直移動字符的頂平面的第二移動方法的示意圖;圖10C是表示用于垂直移動字符的頂平面的第三移動方法的示意圖;圖10D是表示用于垂直移動字符的頂平面的第四移動方法的示意圖;圖11是表示第二實施例的3D字符數據生成設備的功能結構的方框圖;圖12A示出傾斜側面的最簡單外部形狀;圖12B示出用于生成用于該傾斜側面的一個中間輪廓的方法;圖13是表示中間輪廓生成處理的流程圖;圖14A是表示生成構成一凸側面的兩個中間輪廓的情形的示意圖;圖14B是表示生成構成一凹側面的兩個中間輪廓的情形的示意圖;圖15A示出一個具有半圓凸起形狀的側面;圖15B示出一個具有半圓凹入形狀的側面;圖15C是表示用于計算具有半圓凸起形狀的側面的中間輪廓上各個值的方法的示意圖;圖16示出一種狀態,其中模型的傾斜形狀被生成;圖17A示出當第一實施例的字符頂平面被垂直提升時所獲得的側面形狀;圖17B示出其截面是投影凸六邊形的傾斜形狀的一個例子;圖17C示出根據兩個中間輪廓生成的傾斜形狀,其頂部及底部平面的邊緣相對于它們各自的輪廓移動相同的角度以構成一凸梯形形狀的截面;圖17D示出該模型的一種傾斜形狀;圖18是表示第三實施例的3D字符數據生成設備的方框圖;圖19示出中間點被插入到用于字符“回”的兩個點之間的一個例子;圖20是表示把一個原始矩形重新劃分成四個三角形的處理的流程圖;圖21是表示以重劃分級“r”來重新劃分一個三角形的處理的流程圖;圖22A示出一種利用該三角形的側面的中點來劃分三角形的方法;圖22B示出一種狀態,其中將重劃分級“0”一次增至“r”;圖23是表示第四實施例的3D字符數據生成設備的功能結構的方框圖;圖24示出帶有基底的字符;圖25是表示第五實施例的3D字符數據生成設備的功能結構的方框圖;圖26是表示第六實施例的3D字符數據生成設備的功能結構的方框圖;圖27A示出一個雕刻的頂平面;圖27B示出該雕刻的凹處部分的底表面;以及圖27C示出該雕刻的底平面。
下文參照附圖具體地描述基于第一至第六實施例的本發明。第一實施例圖2是表示本發明第一實施例的3D字符數據生成設備101的功能結構的方框圖。該3D字符數據生成設備101包括字符代碼輸入單元1,輪廓數據獲取單元2,輪廓數據存儲單元3,形狀分析單元4,頂部/底部劃分單元5,側面生成單元6,以及形狀數據輸出單元7。
字符代碼輸入單元1是一個諸如鍵盤及鼠標的輸入單元,并且將輸入信號進行轉換以生成一個字符代碼以及一個諸如ASCII(美國信息交換標準代碼)和JIS(日本工業標準)代碼的圖形符號代碼。將該生成的字符代碼輸出到輪廓數據獲取單元2。
輪廓數據獲取單元2從輪廓數據存儲單元3獲得與由字符代碼輸入單元1輸出的字符代碼對應的輪廓數據。
輪廓數據存儲單元3存儲與字符代碼及字體有關的輪廓數據。不同字體的相同字符與不同的輪廓數據有關。這就是說,輪廓數據存儲單元3存儲與字符代碼及字體有關的輪廓數據。由輪廓數據獲取單元2獲得的輪廓數據輸出到形狀分析單元4。
每一組輪廓數據均包括以下信息點的總數;確定曲線類型的標識符;起始點的坐標數據(輪廓數據所表示的坐標用2D中的x-y來表示);確定用于連接這些點的方式(諸如用直線來連接它們的方式或是采用曲線方式)的標識符;以及表示構成一個字符的輪廓的點(或控制點)序列的坐標的點序列坐標數據。這一組輪廓數據對應于形成一個字符的字符部分(稍后描述),因此對應于組成字符的字符部分的總數的輪廓數據組構成一個集。
一般用直線或是2D B-樣條曲線來連接兩個點。當將不同的B-樣條曲線連接時,形成一條連續的曲線。當用直線連接點時,相應的點序列坐標數據指示兩個終點。當用曲線連接點時,相應的點序列坐標數據指示構成該曲線的控制點。當連接起點和終點時,就形成一條封閉的曲線。這樣的封閉曲線表示一個字符的輪廓曲線。注意輪廓數據中的點序列坐標數據指示用于本實施例的x-y坐標。為了3D字符的顯示,使用z坐標軸來指示高度方向。
有些字符含有一個孔并因此而具有“環形”結構。因此,在輪廓數據中具有兩種點序列,即構成字符輪廓的點序列以及構成字符內的孔的輪廓的點序列。下文中,將前者稱作“字符輪廓點序列”,將后者稱作“孔輪廓點序列”。
其它字符,例如中文字符“回”,可以由不同的“字符部分”組成。字符部分指的是一個不與該字符的任何其它部分相連的部分。例如,上述字符“回”由一個外部字符部分“口”和一個內部字符部分“口”組成。俄文字符“ё”由三個字符部分組成,及兩個點“.”以及“e”。因此每一個字符部分具有一個字符輪廓點序列,某些字符部分可以含有一個或多個孔輪廓點序列。
為了把字符輪廓點序列與孔輪廓點序列區別開來,這些點被安排在相反的方向上。對于本實施例,在輪廓數據存儲單元3中做出此區別,以這樣一種方式來存儲點序列坐標數據字符輪廓點序列以順時針方向描繪,而孔輪廓點序列以逆時針方向描繪。注意,方向及輪廓點序列的這一組合是沒有規律的。另一方面有可能提供一個標識符來區分這兩種點序列,盡管這會增加存儲在輪廓數據存儲單元3中的數據量。
圖3示出字符及孔輪廓點序列是如何按照如上所述被描繪的。該圖中,字符輪廓點序列用順時針排列的黑點“P0”至“P9”來表示,孔輪廓點序列用逆時針排列的白點“P10”至“P15”來表示。
形狀分析單元4判斷輪廓數據中相應于所接收的字符代碼的點序列坐標數據是關于字符輪廓點序列的還是孔輪廓點序列的。下面參照圖3來描述這一判斷過程。
(1)當從輪廓數據獲得的點序列由點“P0”,“P1”,---“Pn”組成時,找出構成關于兩個相鄰向量“PiPi+1”和“Pi+1Pi+2”的內積的角“θi+1”,這兩個相鄰向量是為形成點序列而生成的。(此處,i=0,1,---n;并且Pn+1=P0,這是用于下文解釋的情形。)在向量為“P0P1”和“P1P2”的情形下,例如,角“θ1”構成內積。
(2)找出與角“θi+1”有關的這兩個向量的交積。當交積是正值時添加加號。當交積是負值時添加減號。按順序計算的角“θi+1”的總和變成為±2π。
(3)找出構成(1)和(2)中得到的加有正負號的內積的角“θi+1”的總和。如果總和為-2π,則判定該點序列坐標數據是用于順時針排列的字符輪廓。如果總和為+2π,則判定該點序列坐標數據是用于逆時針排列的孔輪廓。
當上述(3)中的判定表明該字符僅僅是由字符輪廓點序列組成時,將執行下述操作以找出“邊框”,并且形狀分析信息(稍后描述),以及輪廓數據被輸出到頂部/底部劃分單元5。當字符輪廓點序列及孔輪廓點序列均存在用于該字符時,如稍后所述分析這些輪廓點序列之間的包含關系。
下面參照圖3所示用數字“0”作為例子來描述用于確定字符輪廓點序列的邊框的操作。(1) 在字符輪廓點序列之中,確定x坐標上的最小值“xo-min”和最大值“xo-max”,以及y坐標上的最小值“yo-min”和最大值“yo-max”。(2) 確定由基于上述(1)中獲得的四個點點“A”(xo-min,yo-max),點“B”(xo-max,yo-max),點“C”(xo-max,yo-min),及點“D”(xo-min,yo-min)構成的四邊形“ABCD”。把該四邊形“ABCD”視為邊框。注意,盡管在數學符號中一般按逆時針來排列頂點,但對于本實施例,點“A”至“D”的四個頂點以順時針排列以使其與字符輪廓點序列的點的排列順序一致。(3) 通過計算“L=side AB+side BC”來計算長度“L”,也就是,邊框“ABCD”的全部邊長的一半。
在上述操作后,將下述信息存儲在輪廓數據存儲單元3中點序列坐標數據;邊框數;每個邊框的四個頂點的坐標(或坐標“xo-min”,“xo-max”,“yo-min”,及“yo-max”);以及所有邊的全長。類似地對于孔輪廓點序列,確定構成邊框“abcd”的四個坐標“xh-min”,“xh-max”,“yh-min”,以及“yh-max”并存儲在輪廓數據存儲單元3中。
例如,字符“回”由外部件“囗”及內部件“口”的兩個字符輪廓點序列構成,并且這兩個輪廓點序列構成一個集。字符“回”還可以由外部件“囗”及內部件“口”內的兩個孔的孔輪廓點序列構成,這兩個孔輪廓點序列構成另一個點序列集。因此,對于字符“回”,根據兩個字符輪廓點序列生成兩個邊框“ABCD”,以及根據兩個孔輪廓點序列生成兩個邊框“abcd”。
之后,進行包含關系判斷以確定字符輪廓點序列集與孔輪廓點序列集之間的包含關系。如下所述,對組成各個孔輪廓點序列的邊框的四個坐標進行判斷。包含關系判斷當滿足下述不等式時,該不等式中所指出的孔輪廓被判定為包含在該不等式中所指出的字符輪廓內。
不等式xo-min<xh-min<xh-max<xo-max andyo-min<yh-min<yh-max<yo-max這一判斷結果也許表明一個單獨的孔輪廓點序列被包含在多個字符部分的字符輪廓點序列中,或是表明一個孔輪廓點序列似乎被包含在字符輪廓點序列中,盡管事實上不是這樣。這一情形有可能出現,例如,對于字符“固”和“店”。在此情形中,需要校正包含關系判斷結果。根據下述校正規則做出校正。校正規則校正規則是當字符的一個孔被包含在多個字符部分的輪廓內時,該孔被包含在最里面字符部分的輪廓內。
下面描述用于這一校正規則的兩種特定方法。第一種方法如下。第一種方法通過比較先前已計算的兩個字符部分的長度“L”來作出對兩個字符部分的兩個不同輪廓的包含關系判斷。將具有較短“L”的字符部分確定為是里面的字符部分。該第一方法僅占用很短的計算時間并實現了高速判斷。利用該方法,當特殊的字體被用于字符時,不必一直正確地做出包含判斷。下述第二種方法盡管需要較長的計算時間,但實現了更為穩定的包含關系判斷。第二種方法(1) 對于字符輪廓點序列的邊框做下述判斷。這里,假設多個字符部分被確定為含有一個孔,各個字符部分的邊框的坐標為“xoj-min”,“xoj-max”,“yoj-min”,及“yoj-max”(“j”是分配給含有該孔的字符輪廓的索引,并且j=1至n)。當對于具有索引“k”的字符部分下述條件中所示的所有不等式均被滿足時,判定該孔被包含在這一字符部分內。條件(1)xoj-min<xok-min,yoj-min<yok-min,xok-max<xoj-max,及yok-max<yoj-max,其中“j”和“k”為給定值,并且j≠k。當不滿足上述條件(1)時執行下面的操作(2)。當滿足條件(1)時,下述等式被滿足。xok-min=max(xoj-min)yok-min=max(yoj-min)xok-max=min(xoj-max)yok-max=min(yoj-max)因此,通過首先從“max(xoj-min)=xok-min”找出“k”(通過在當字符部分“j”的一個邊框的最小x坐標大于其它邊框的x坐標時把字符部分“j”視為字符部分“k”)就能夠做出上述判斷,然后判定是否滿足其余的三個等式。(2) 當不滿足上述條件(1)時,計算孔輪廓點序列的邊框的重心與各個字符輪廓之間的最短長度。在這些字符輪廓之中,確定對應于全部所計算長度的最短長度的字符輪廓,并判定該孔包含在所確定的字符輪廓內。這里,上述“孔輪廓點序列的邊框的重心與各個字符輪廓之間的最短長度”是指從上述重心到字符輪廓上的點以及從上述重心到字符輪廓的一個邊的兩個最短長度之外的一個最小值。根據通常的歐幾里德距離(和的平方根值)計算從該重心到字符輪廓上的一個點的長度。利用下面的算術表達式來計算從該重心到字符輪廓的一個邊的長度。這里,假設字符輪廓點序列包括點“P0(p0x,p0y)”,“P1(p1x,p1y)”,---“Pn(pnx,pny)”;孔邊框的重心是“C(cx,cy)”;以及從重心“C”到邊“PkPk+1”的垂足為“H(hx,hy)”。表達式a=pk+1x-pkx,b=pk+1y-pky,d=Cx-pkxe=Cy-pkyα=(a*d+b*e)/(a**2+b**2)hx=α*a+pkxhy=α*a+pky(其中k=0,1,2,---,n;以及Pn+1=P0;并且“X**Y”表示“X的Y次方”)。之后,如果滿足“min(pkx,pk+1x)≤hx≤max(pkx,pk+1x)”以及“min(pky,pk+1y)≤hy≤max(pky,pk+1y)”,那么用下面的等式來計算從重心“C”到邊的長度“|CH|”。如果不滿足下面的表達式,就表示從重心到該邊不存在長度,并因此而執行對于另一個邊的操作。
|CH|=(|PkC*PkPk+1|)/|PkPk+1|
=|d*b-a*e|/(a**2+b**2)**(1/2)字符的形狀分析信息能夠用表示字符的結構層次的樹形結構信息來表示。例如,當點序列“LB”包含在點序列“LA”內時,形狀分析信息能夠用“LA-LB”來表示。形狀分析信息被輸出到頂部/底部劃分單元5。
下面參照圖4和5,用中文字符“回”作為字符例子來描述形狀分析單元4的上述處理。
圖4是表示對字符“回”執行格式分析的情形的示意圖。圖5是表示圖4所示包含關系分析的詳細處理的流程圖。如圖4所示,字符“回”包括四個點序列構成外字符部分“囗”的輪廓的點序列401;構成外字符部分“囗”的孔的輪廓的點序列402;構成內字符部分“口”的輪廓的點序列403;構成內字符部分“口”的孔的輪廓的點序列404。
從輪廓數據獲取單元2接收組成字符“回”的點序列之后,對每一個點序列,形狀分析單元4用上面描述的方法來判斷該點序列是字符輪廓點序列還是孔輪廓點序列(步驟S405)。之后判斷結果表明點序列401(Lo-1)和403(Lo-2)是字符輪廓點序列(406),而點序列402(Lh-1)和404(Lh-2)是孔輪廓點序列(407)。對字符輪廓點序列401和403,計算邊框和長度“L”(步驟S408)。對孔輪廓點序列402和404,計算邊框(步驟S409)。
之后,執行包含關系分析以確定包含孔輪廓點序列402(Lh-1)和404(Lh-2)的字符輪廓點序列(步驟S410)。
對于步驟S410中的包含關系分析,確定字符輪廓點序列Lo-1和Lo-2的邊框以及孔輪廓點序列Lh-1和Lh-2的邊框(步驟S501)。之后,形狀分析單元4判斷孔輪廓點序列的確定邊框是否包含在字符輪廓點序列的確定邊框內(步驟S502和S503)。對字符和孔輪廓點序列的每一個組合做出該判斷(步驟S504和S501-S503)。對字符“回”,判定字符輪廓點序列Lo-1包含孔輪廓點序列Lh-1和Lh-2,以及字符輪廓點序列Lo-2包含孔輪廓點序列Lh-2(411)。
如果上述判斷結果表明一個單獨的孔輪廓點序列被包含在多個字符輪廓點序列內,那么必須僅確定一個包含這個孔輪廓點序列的字符輪廓點序列。因此,應當如下所述校正該包含關系(步驟S412,S413,以及S505)。
首先確定孔輪廓點序列中的一個,然后確定所有包含該確定的孔輪廓點序列的字符輪廓點序列(例如,“N”個點序列,其中“N”表示數目)。在所確定的“N”個字符輪廓點序列中,利用前述的第一方法或第二方法中的上述操作(1)來確定最里面的字符輪廓點序列(步驟S506和S509)。
如果沒有確定這一最里面的字符輪廓點序列(步驟S507),則執行第二方法中的上述操作(2)以確定最里面的字符輪廓點序列(步驟S508和S510)。
上述處理的結果是,字符“回”的包含關系被校正為表示出內部孔輪廓點序列Lh-2僅僅被包含在內部字符輪廓點序列Lo-2中。于是,用于該字符的形狀分析信息能夠用樹形結構來表示(414)。
當字符(或字符部分)不包含任何孔時,該字符的形狀分析信息表示出該字符具有平展的結構而沒有分層,該形狀分析信息被送到頂部/底部劃分單元5,與含有孔的字符的情形中相同。利用樹形結構,字符的“結構元素”(或字符部分)可由形狀分析信息表示為“僅外形”或“外形和孔”,該形狀分析信息是從形狀分析單元4得到的。這里,“結構元素”是指字符或字符部分的一個元素,在其上進行多邊形劃分(稍后描述)。該元素可以是(a)由字符點序列所確定的字符輪廓包圍的并包含該字符點序列的一個區域;或是(b)由字符輪廓所包圍的但排除掉由孔點序列確定的孔輪廓所包圍的部分的一個區域,其中字符點序列及孔點序列包含在內。
頂部/底部劃分單元5執行對于上述各個結構元素的凸多邊形劃分。本實施例采用三角形來作為凸多邊形的一個例子以描述凸多邊形劃分處理。
當被劃分的結構元素包含孔輪廓點序列時,頂部/底部劃分單元5將孔輪廓點序列連接到字符輪廓點序列(下文中,這一操作被稱為“連接操作”)以生成一個單獨的輪廓點序列。頂部/底部劃分單元5先于劃分操作而執行這一操作。同時,頂部/底部劃分單元5改變分配給點序列內的點的編號以表明這些點的一種排列順序。基于所規定的輪廓數據,該連接操作將字符輪廓連接到孔輪廓中以便產生允許該字符以一唯一筆畫被描繪的點序列坐標數據。可用下面的兩種連接方法來執行連接操作。
圖6示出一種狀態,其中將第一連接方法應用于中文字符“回”并對點序列中的點重新分配點編號。下面參照圖6來描述第一連接方法。第一連接方法(1) 根據每個孔的孔輪廓點序列,找出x-y坐標的最大值“x-max”和“y-max”,以及x-y坐標的最小值“x-min”和“y-min”。之后,獲得各個孔的中心坐標((x-max+x-min)/2,(y-max+y-min)/2)。(2) 找出最接近所獲得的中心坐標的字符輪廓點。下文中,將這一字符輪廓點稱作“接近點”。通過計算x-y坐標的和的平方,而不是計算根以便減少計算工作量來獲得中心坐標與該接近點之間的長度。當為字符的一個孔找出一個接近點后,為了同一字符的另一個孔而將該找出的接近點從候選接近點中排除以避免重疊。在圖6所示的例子中,孔615的接近點是字符輪廓點序列上的點“4”。(3) 找出最接近所得到的接近點的一個孔輪廓點,并將編號以這樣的方式重新分配給構成孔輪廓點序列的點,即將該最接近的孔輪廓點設為起始點。例如,當孔輪廓點最初被分配了編號{P0,P1,...Pk,...Pm},其中點Pk最接近接近點時,向這些點分配如下的新編號{Pk,...Pm,P0,P1,...Pk-1}。圖6中,在孔615的孔輪廓點序列的點之中,點“2”最接近接近點“4”。因此,該孔輪廓點序列的點被重新分配由{2,3,0,1}組成的編號。(4) 該孔輪廓點序列被嵌入到字符輪廓點序列中,并給它們重新分配編號。例如,假設字符輪廓點序列的點按照{Q0,Q1,Q2...Qi,Qi+1,...Qn}的順序排列,其中點“Qi”作為接近點,而作為上述操作(3)的結果,孔輪廓點序列的點按照{P0,P1,...Pm}的順序排列。那么將孔輪廓點序列嵌入到字符輪廓點序列中以產生由點{Q0,Q1,Q2...Qi,{P0,P1,...Pm,P0},Qi,Qi+1,...Qn}構成的一個點序列。該產生的點序列中的點被重新分配由{0,1,2,...i,i+1,...i+m+1,i+m+2,i+m+3,...n+m+3}構成的編號。當存在多個孔時,從分配了較小編號的一個接近點開始按順序執行嵌入操作,以便連接所有的點。下面更具體地描述圖6的情形,為便于解釋假設只將孔615的孔輪廓點序列嵌入。字符輪廓點序列中的點按照{0,1,...4,...11}的順序排列,而孔輪廓點序列中的點,作為上述操作(3)的結果,按照{0,1,2,3}的順序排列。點“4”作為孔615的接近點,嵌入有孔輪廓點序列的點序列中的點按照{0,1,...4,{0,1,2,3,0},4,...11}的順序排列。對該點序列,分配新編號為{0,1,...4,5,...9,10,...17}。當對其它孔616-618同樣執行上述連接(嵌入)操作時,所連接的輪廓點序列被分配編號{0,1,...35},如圖6所示。下文中,將分配了新編號的這一連接點序列稱作合成點序列。
之后,頂部/底部劃分單元5利用例如一個表格將該合成輪廓點序列與原始輪廓及孔輪廓點序列聯系起來,并將它放入到輪廓數據存儲單元3內。注意,該合成輪廓點序列包括重疊點,因此將標識符分配給這些重疊點然后放入到輪廓數據存儲單元3內。
下面描述第二連接方法,該方法擴展了第一方法中所用的算法以便處理不常見的字符(或字符部分)。第二連接方法(1) 集中于一個字符孔,并計算從該集中孔的點序列中的各個點到字符輪廓點序列的各個點的長度以從所計算的長度中確定最短長度。還計算從孔點序列中的各個點到字符輪廓的各個邊的長度以從所計算的長度中確定一個最短長度。(2) 從上述得到的兩個最短長度中選擇一個更短的長度,并將該選擇的最短長度識別為對應于該集中孔。還識別(a)一個點,該點是孔輪廓點序列中的對應于所選最短長度的點;以及(b)一個點,該點是字符輪廓點序列中的對應于所選最短長度的點,或是一個由孔輪廓點在字符輪廓的一個邊上所形成的垂足。(3) 以這樣一種方式向孔輪廓點序列中的點重新分配編號,即將上述(2)識別出的孔輪廓點設為起始點。例如,當將孔輪廓點最初按照{0,1,...k,...m}的順序排列,其中點“k”最接近接近點時,向這些孔輪廓點重新分配由{k,...m,0,1,...k-1}組成的編號。(4) 當在上述(2)識別出一個字符輪廓點時,將孔輪廓點序列嵌入字符輪廓點序列中,并給這些點序列中的點重新分配編號。假設,例如,將構成字符輪廓點序列的點按照{0,1,2,...i,i+1,...n}的順序排列,其中點“i”最接近孔輪廓點序列中的起始點,并且在上述操作(3)之后將構成孔輪廓點序列的點按{0,1,2,...m}的順序排列。當該孔輪廓點序列被嵌入到字符輪廓點序列時,由按照{0,1,2,...i,{0,1,...m,0},i,i+1,...n}的順序排列的點組成一個連接點序列。然后給該連接點序列中的點重新分配由{0,1,2,...i,i+1,...i+m+1,i+m+2,i+m+3,...n+m+3}組成的連續編號。然后將該合成點序列與孔輪廓點序列中的起始點,進行連接操作前的未連接孔輪廓點序列及字符輪廓點序列,以及表示點“i”,“i+1”,“i+m+1”,“i+m+2”是重疊點的信息一起放入輪廓數據存儲單元3中。
當在上述操作(2)識別出字符輪廓的一條邊上的垂足時,將該垂足嵌入到字符輪廓點序列中,并重新分配編號。例如,當垂足出現在由字符輪廓點序列中的點“k”和點“k+1”構成的邊上時,該垂足被嵌入到點“k”和點“k+1”之間。之后,按照與上述方式相同的方式將孔輪廓點序列嵌入到字符輪廓點序列中,并給這些輪廓點序列中的點重新分配編號。當將兩個輪廓點序列連接以產生合成點序列時,將上述垂足(最新嵌入的字符輪廓點“k+1”)視為被嵌入的一個接近點。然后將所產生的合成點序列與孔輪廓點序列的起始點,未連接的孔輪廓點序列及字符孔輪廓點序列,以及表示點“k+1”,“k+2”,“k+m+3”,“k+m+4”是重疊點的信息一起放入輪廓數據存儲單元3中。(5) 當字符包括多個孔時,對每個孔重復上述操作(1)-(4)。注意,上述操作(4)中被確定為重疊點的點不能被用在操作(1)中最短長度的計算中。
下面描述用于一個結構元素的兩種不同的三角形劃分方法。
下文首先描述第一種三角形劃分方法。對平面上的一個點序列做用于凸閉合三角形劃分算法的研究。在它們之中,Dulaunay三角形劃分算法是公知的。作為點序列的凸閉合計算算法,Graham及Quickhull算法是可用的。因此,當字符的一個結構元素僅僅包括一個字符輪廓并具有凸外形時,可根據Dulaunay算法對該字符進行三角形劃分。從上述解釋顯而易見,雖然許多字符的結構元素包括一個孔,但字符的外形通常是如字符“ぁ”所示的凹多邊形。下面所述的第一方法是結合了上述算法以在字符的結構元素上執行三角形劃分的一種改進方法。(1) 在先前操作中所產生的合成點序列的重疊點的各個集合中,刪除較大編號的重疊點。從中刪除了重疊點的這一合成點序列被稱作點序列“B”。該點序列“B”與刪除前的合成點序列之間的對應用表格形式來表示,并放入到輪廓數據存儲單元3中。這就是說,該表格將合成點序列與其原始的未連接點序列以及點序列“B”聯系起來。(2) 根據Graham或Quickhull算法生成點序列“B”的一個凸閉合。(3) 如果該結構元素的輪廓點序列與一個單獨的字符外形相對應,并且所生成的凸閉合的外形的點序列與連接前的字符輪廓的點序列相同,那么指派標識符“0”。其它情形中指派標識符“1”。(4) 根據Dulaunay算法將上述操作(1)中生成的凸閉合劃分成三角形。如果標識符為“0”,從上述(1)開始執行對下一個結構元素的操作。如果標識符為“1”,進到下面的操作(5)。(5) 計算上述操作(4)中所生成的各個三角形的重心。(6) 這里,假設構成合成點序列的點是“P0”,“P1”,---“Pm”。從點序列“B”的點中,參照上述表格找到與點“Pi”和點““Pi+1”對應的點,并將所找到的點假定為點“Q”和“R”。計算關于含有將“QR”作為其邊的三角形的重心“Ci”的向量“PiPi+1”與“PiCi”的叉積(至多有兩個重心“Ci”)。當存在兩個含有邊“QR”的三角形時,對三角形的每一個重心計算叉積。
當計算出的叉積為正值并且構成字符的空間被定義為右旋坐標系時,該三角形是在字符外形的凹入部分或是在字符孔中構成。該三角形因此而被廢除。在左旋坐標系情形中,當計算出的叉積為負值時將該三角形廢除。對i=0,...m-1的情形按順序重復上述操作。注意,當點“Pi”和點“Pi+1”都是重疊點時,點序列“B”包括在點“Pi”之后的重疊點“Pj-1”(對應于點“Pi”)以及在點“Pi+1”之后的重疊點“Pj”(對應于點“Pi+1”)(也就是,i<j-1)。因此,在該表中設置一個終止標識符以用于阻止在對邊“PiPi+1”作三角形刪除判斷后對邊“Pj-1Pj”作判斷。當對“i=m-1”情形的操作已經完成時,對剩余的結構元素中的每一個重復從(1)-(6)的操作。
圖7A示出將第一種三角形劃分方法應用于字符“田”的一個例子。圖中編號為分配給點序列“B”的編號。用點序列“B”中的三個點的組合來表示一個劃分的三角形。當該組合中的三個點在右旋坐標系中按逆時針方向排列時,將含有這些點的平面定義為前面。當這些點按順時針方向排列時,將含有這些點的平面定義為后面。(當然有可能將順時針方向與后面聯系起來,而將逆時針方向與前面聯系起來)。可以如下所述來判斷三個點的方向。假設構成三角形的三個點是點“P”,“Q”,和“R”,計算向量“PQ”和“PR”的叉積。根據計算出的叉積的正負號,就能夠判斷出方向。例如,當計算出的叉積具有右旋坐標系中的正號時,由“P-Q-R”表示的順序為逆時針方向,由“P-R-Q”表示的順序為順時針方向。在左旋坐標系中能夠同樣做出這一判斷。注意,一般將順時針方向定義為前面。
下面描述第二種三角形劃分方法。這里,假設向在先前操作中產生的合成點序列分配了由“P0”,“P1”,...“Pm”組成的編號。上述表格存儲示為“1”的一個標識符以用于字符輪廓凹入部分中的一個點以及孔輪廓的一個點。通過計算從字符輪廓點序列生成的兩個向量“PiPi+1”和“Pi+1Pi+2”的叉積能夠檢測出凹入部分上的一個點。當計算出的叉積具有右旋坐標系中的正號時,點“Pi+1”是凹入部分上的點(對于左旋坐標系,做相反的判斷)。(1) 計算向量“P0P1”和“P1P2”的叉積,并得到其符號。(下述解釋是用于右旋坐標系的情形,盡管通過施加一個相反符號也能夠將本方法用于左旋坐標系)注意,當剩余點數達到作為下面步驟(2b)所執行的點刪除的三個時,不執行獲得叉積的計算。在此情形下,由于由這三個點構成的三角形是用于執行劃分操作的最后一個三角形,因此將最后的三個點按照它們當前的排列順序存儲起來,并中斷該處理。(2a) 當步驟(1)計算出的叉積為負值時,對出現在(a)孔輪廓;及(b)點序列“B”的字符輪廓的凹入部分之一上的點做出關于該點是否被包含在三角形“P0P1P2”內的判斷。當滿足下列三個條件時該點被判定為包含在三角形內(a)向量“P0P1”與通過將點“P0”連到判斷點所構成的向量的叉積具有正號;(b)向量“P1P2”與通過將點“P1”連到判斷點所構成的向量的叉積具有正號;以及(c)向量“P2P0”與通過將點“P2”連到判斷點所構成的向量的叉積具有正號。(2b) 當步驟(2a)中的判斷結果表明判斷點未包含在該三角形內時,按此順序(與順時針方向一致的順序)存儲三個點“P1”,“P1”和“P2”,通過從點序列“B”中刪除點“P1”來生成一個新的點序列。之后對三角形“P0P2P3”,執行從步驟(1)開始的上述操作。(2c) 當步驟(2a)中的判斷結果表明判斷點被包含在三角形“P0P1P2”內時,通過將點“P0”移到點序列“B”的末尾來生成一個新的點序列。之后,對三角形“P1P23”,執行從步驟(1)開始的上述操作。(2d) 當步驟(1)計算出的叉積為正值或零時,通過將點“P0”移到點序列“B”的末尾來生成一個新的點序列。之后,對三角形“P1P2P3”,執行從步驟(1)開始的上述操作。
圖7B示出將第二種劃分方法應用于字符“田”所得到的處理結果。圖中編號為分配給已執行了連接操作的合成點序列的編號。通過將多個邊與上述處理所生成的三角形組合在一起,也能夠執行基于一個多邊形的劃分處理。
用第二種劃分方法得到的處理結果還在圖8示出,其中將此第二種劃分方法應用于俄文字符“ё”。
當將第一種三角形劃分方法應用于各個結構元素時,產生下列兩個數據集點序列“B”的坐標數據(本實施例的該數據為2D形式);以及三點數據,該數據利用點序列“B”上三個點的索引來表示代表各個劃分三角形的三個點。在通常的右旋坐標系中,當這樣的三個點對應于字符底平面的一個結構元素時,按順時針方向排列這三個點。當這樣的三個點對應于字符頂平面的結構元素時,按逆時針方向排列這三個點。另一方面,當應用第二種三角形劃分方法時,產生下列兩個數據集合成點序列的坐標數據(本實施例為2D形式);以及三點數據,該數據利用合成點序列的索引來表示各個劃分三角形的三個點。索引表面數據中的各個“索引”指的是表示劃分三角形的一個頂點的標識符。例如,三角形“P1P2P3”對應于頂點“1”,“2”,“3”。
根據第一和第二種三角形劃分方法所生成的這些數據集的格式一般被稱作“索引表面數據”。注意,在左旋坐標系中,將點序列中的點按照與右旋坐標系中相反的方向排列。這樣,頂部/底部劃分單元5生成用于各個結構元素的頂部和底部平面的索引表面數據。頂部/底部劃分單元5向側面生成單元6輸出所生成的索引表面數據。
當從頂部/底部劃分單元5接收索引表面數據后,側面生成單元6從輪廓數據存儲單元3獲得表示各個結構元素的未連接字符及孔輪廓點序列的數據,對這些點序列未執行連接操作。然后側面生成單元6將收到的索引表面數據擴展為3D形式。下面參照圖9和10描述由側面生成單元6執行的用于將索引表面數據擴展為3D形式的側面形成操作。
圖9是表示該操作處理流程的流程圖。圖10A-10D是表示用于在高度方向上移動字符的頂平面以將索引表面數據擴展為3D形式的四種方法的示意圖。
作為初始化,側面生成單元6將底平面的索引表面數據中的點序列坐標數據擴展為3D形式,并把“0”設為z坐標。類似地,側面生成單元6把“0”設為3D底平面的點序列(下文,稱為“底部點序列”)的z坐標(步驟S901)。
之后,確定在高度方向上移動頂平面的方法(步驟S902)。根據該確定方法,用于各個頂平面結構元素的索引表面數據中的點序列坐標數據的z坐標,以及3D頂平面的點序列(下文,稱為“頂部點序列”)的z坐標被確定。
圖10A是表示第一移動方法的示意圖。用該方法將頂平面垂直提升到高度方向上的高度“h”處。在此情形中,將值“h”設為用于各個頂平面結構元素的索引表面數據中輪廓點序列坐標數據的z坐標。類似地,通過將原始輪廓點序列的點序列坐標數據擴展為3D形式,其中將“h”設為z坐標(步驟S903)來生成頂部點序列。
圖10B是表示第二移動方法的示意圖。利用該第二種方法,通過在標準向量“v”(vx,vy,vz)方向上的平行移動來移動頂平面。在此情形中,將用于各個頂平面結構元素的索引表面數據中的點序列坐標數據擴展為3D形式,其中將值“0”設為z坐標。之后將對應于標準向量“v”的坐標加到點序列坐標數據的坐標中。類似地,通過在z坐標中設置“0”而將原始輪廓點序列的點序列坐標數據擴展為3D形式并通過加上對應于標準向量“v”的坐標值(步驟S904)來生成頂部點序列。
圖10C是表示第三移動方法的示意圖。利用該第三種方法,首先將字符縮小或放大,然后將其移到垂直方向上的高度“h”處。在此情形中,將用于各個頂平面結構元素的索引表面數據中的點序列坐標數據縮小或放大,然后擴展為3D形式,其中將高度“h”設為z坐標以便產生頂部點序列(步驟S905)。
圖10D是表示第四移動方法的示意圖。利用該第四種方法,利用旋轉來移動頂平面,并因此而預先提供一個旋轉軸向量和一個旋轉角“θ”。在此情形中,將用于各個頂平面結構元素的索引表面數據中的點序列坐標數據擴展為3D形式,其中將值“0”設為z坐標。在該坐標上執行由旋轉軸向量和旋轉角“θ”確定的旋轉變換,并計算變換坐標值。類似地,將原始輪廓點序列的輪廓點序列坐標數據擴展為3D形式,其中將值“0”設為z坐標以產生頂部點序列。在頂部點序列的坐標上執行由旋轉軸向量和旋轉角“θ”確定的旋轉變換,并計算變換坐標值(步驟S906)。
從上述處理顯而易見,將相同的編號分配給擴展為3D形式的上述輪廓點序列的底部及頂部點序列。如上所述,側面生成單元6生成用于擴展成3D形式的各個頂平面及底平面結構元素的索引表面數據(步驟S907),并將該索引表面數據輸出到形狀數據輸出單元7。
當用{P’n}來表示各個結構元素的底部點序列并用{Pn}來表示其頂部點序列時,能夠生成作為右旋坐標系中按順時針方向排列的四邊形“PiP’iP’i+1Pi+1”的一個側平面。(在左旋坐標系中上述點按逆時針方向排列。)索引表面數據格式中表示該側平面的數據是用下述數據構成的(a)點序列坐標數據(本例中用{Q2n}來表示),其中頂部點序列后為底部點序列;以及(b)索引數據“QiQi+nQi+1Qi+n+1”。所生成的用于各個側平面結構元素的這一索引表面數據被輸出到形狀數據輸出單元7。
形狀數據輸出單元7從側面生成單元6接收用于頂平面及底平面的索引表面數據以及用于側平面的索引表面數據。然后形狀數據輸出單元7利用分層表示法將收到的索引表面數據放在一起,并將它輸出到外圍設備(例如3D圖形顯示單元)。當數據格式需要被變換時,首先執行格式變換然后再輸出數據。
如上所述,本實施例確定了字符孔與字符外形或字符部分之間的包含關系以便實現3D顯示,對于本實施例,甚至每一個字符部分都被劃分以用于3D顯示。第二實施例上述第一實施例描述了3D字符生成處理的一個例子,其中將字符的頂平面在z軸方向上直線提升,并且線性地構成用于3D字符的側平面。第二實施例描述了這樣一個例子,其中為3D字符側平面提供一個中間輪廓,并且根據該中間輪廓而生成具有各種傾斜形狀的字符側面。在本實施例中,與第一實施例所述相同的部件將不再描述。
圖11是表示本實施例的3D字符數據生成設備201的功能結構的方框圖。3D字符數據生成設備201包括取代側面生成單元6的斜側面生成單元11,還包括取代單元7的形狀數據輸出單元12。下面詳細描述3D字符數據生成設備201。
斜側面生成單元11不僅接收頂部/底部劃分單元5的輸出,還從輪廓數據存儲單元3接收未執行連接操作的用于字符及孔輪廓的點序列坐標數據。然后斜側面生成單元11將用于各個底平面結構元素的索引表面數據中的點序列坐標數據擴展為3D形式,并把“0”設為z坐標。類似地,斜側面生成單元11通過將用于原始輪廓點序列的輪廓點序列坐標數據擴展為3D形式,并設置“0”作為z坐標來生成底部點序列。
之后,斜側面生成單元11將底平面結構元素垂直提升到高度“h”處,并通過把“h”設為z坐標而將用于各個頂平面結構元素的索引表面數據中的點序列坐標數據擴展為3D形式。類似地,斜側面生成單元11通過將用于原始輪廓點序列的輪廓點序列坐標數據擴展為3D形式,并把“h”設為z坐標來生成頂部點序列。用于各個3D頂部及底部平面結構元素的索引表面數據被輸出到形狀數據輸出單元12(盡管這不是稍后所描述的模型(mold type)的傾斜形狀情形)。
圖12A和12B示出斜面的一種外形以及如何生成該斜面的中間輪廓。
圖12A示出一種最簡單的斜面形狀。如圖所示,在字符頂平面與字符底平面之間生成一個中間輪廓1220。用這樣一種方式來構成一個斜面通過對角截開字符的一個側平面而得到的截面構成一個凸六邊形。通過放大字符的頂部(或底部)輪廓1210(或1230)來生成該字符的中間輪廓120。通過縮小字符頂(或底)平面的孔輪廓來生成字符孔的中間輪廓。
通過向內并對角地截開字符的一個側平面而使其截面構成一個凹六邊形來生成另一種斜面形狀。在此情形中,通過縮小該字符的頂(或底)平面的輪廓1210(或1230)來生成該字符的中間輪廓。通過放大字符頂(或底)平面的孔輪廓來生成字符孔的中間輪廓。通過放大或縮小該字符輪廓或孔輪廓可以提供字符的中間輪廓及字符孔的中間輪廓的其它組合。
下面參照圖12A及圖13的流程圖來描述用于生成中間輪廓的一種方法。
如上所述,各個結構元素的輪廓需要被放大或縮小以生成中間輪廓。通過找出結構元素輪廓的法向向量,并在該垂直方向上移動結構元素輪廓點序列中的點來獲得一個中間輪廓。為了放大,正向移動該法向向量,而為了縮小,則反向移動該法向向量。下面描述中間輪廓生成方法,假設結構元素輪廓點序列上的點為“P0”,“P1”...“Pn”。中間輪廓生成方法(1) 找出向量“pi=PiPi+1”1340(即,含有起始點“Pi”和終點“Pi+1”的向量“pi”)。這里,假設最后找到的向量是“pn=PnP0”(即,向量“pn”包含(a)起始點“pn”,該點是點序列的最后一個點;以及(b)終點“P0”,該點是點序列上的起始點)(步驟S1301)。(2) 根據下述算法找出對于各個向量“pi=(pix,piy)”的法向向量“Ni=(Nix,Niy)”(步驟S1302)。找到兩個法向向量。
當pix*piy≠0Nix=±1/(1+(pix/piy)**2)**(1/2)-Niy=±+(pix/piy)*1/(1+(pix/piy)**2)**(1/2)當pix=0,piy≠0Nix=±1,Niy=0當pix≠0,piy=0Nix=0,Niy=±1從上述找到的兩個法向向量之外,選擇一個滿足下列表達式的法向向量。
表達式pix*Niy-piy*Nix>0(3) 根據下述表達式找出對于輪廓點序列的各個點“Pi”的法向向量“Npi=(Npxi,Npyi)”(S1303)。
Npi=(Ni-1+Ni)/||Ni-1+Ni||=((Ni-1x+Nix)/((Ni-1x+Nix)**2+(Ni-1y+Niy)**2))**(1/2),(Ni-1y+Niy)/((Ni-1x+Nix)**2+(Ni-1y+Niy)**2))**(1/2)注意,如下所述找到“NP0”。
NP0=(Nn+N0)/||Nn+N0||=((Nnx+N0x)/(Nnx+N0x)**2+(Nny+N0y)**2))**(1/2),(Nny+N0y)/((Nnx+N0x)**2+(Nny+N0y)**2))**(1/2))(4) 假設輪廓點序列的放大/縮小量是“L”,以及如下計算“αi”(步驟S1304)。稍后將專門描述放大/縮小量“L”。
αi=L/cosθi=L/(NpixNix+NpiyNiy)注意,就結構元素來說,上述表達式中的分母不可能變為“0”或更低。因此當分母變為“0”或更低時將引起錯誤。(5) 當結構元素輪廓的各個點為“Pi”時,根據下述表達式找出中間輪廓的與點“Pi”對應的點“Pi’”1242。由“Pi’”所代表的點組成構成放大的中間輪廓的點序列(步驟S1306)。
Pi’=Pi+αiNPi關于縮小的中間輪廓的點“Pi’”,用下述表達式找出該點“Pi’”(步驟S1307)。
Pi’=PiαiNPi下面參照圖12A描述利用上述生成的中間輪廓點序列,頂部點序列,以及底部點序列來生成一個側平面的方法。
通過把“h/2”(即,從底平面至頂平面長度的一半)設為z坐標而將中間輪廓的點序列擴展為3D形式。注意,能夠把“0”與“h”之間的任何值交替地設成為z坐標。這里,假設由“Pn”及“Pn+1”來表示的頂部點序列分別對應于中間輪廓點序列“Pcn”和“Pcn+1”,以及底部點序列“Pn”和“Pn+1”。當頂平面的輪廓被連接到中間輪廓時,生成一個側平面“PnPn+1Pcn+1Pcn”(在順時針方向情形中)。當中間輪廓被連接到底平面的輪廓時,生成一個側平面“PcnPcn+1Pn+1’Pn’”。
因此,由頂平面輪廓及中間輪廓構成的用于該側平面的索引表面數據被表示為點序列“Qi”...“Qn”,“Qn+1”...“Q2n”,該點序列是通過把中間輪廓點序列附加到頂部點序列(其包括n個點)而生成的。在逆時針方向情形中,按順序構成索引“Qi”,“Qi+1”,“Qi+n”。類似地,生成由中間輪廓和底平面輪廓構成的用于側平面的索引表面數據。
下面參照圖14描述用于生成一個典型的斜面形狀的方法,該方法中頂平面及底平面的邊緣被移動。通過改進上述生成中間輪廓的方法以便生成兩個中間輪廓來實現該方法。用于生成這樣兩個中間輪廓的方法基本上與上述方法相同。
圖14A是表示由兩個中間輪廓構成的凸側面的示意圖。與字符的頂平面和底平面相比,字符的這一側面凸出。這兩個中間輪廓包括靠近頂平面的第一中間輪廓1411以及靠近底平面的第二中間輪廓1412。頂平面的邊緣相對于該頂平面移動角“θ1”,底平面的邊緣相對于該底平面移動角“θ2”。中間輪廓1411和1412被從字符輪廓1410放大。
從圖14A顯而易見,當頂平面字符輪廓1410被放大以生成該中間輪廓時,滿足“tanθi=hi/Li”。因此能夠得出“hi=Li tanθi”。在此情形中,必須滿足“i=1或2”。完成該計算后,計算“h0=h-(h1+h2)”。把“h0+h2(=h-h1)設為第一中間輪廓1411的z坐標,把“h2”設為第二中間輪廓1412的z坐標。這樣就生成了擴展為3D形式的點序列。盡管需要注意在當前情形中存在兩個中間輪廓,但仍然可以用與上述生成一個中間輪廓基本相同的方式來生成側平面。
圖14B是表示與圖14A相反的有兩個中間輪廓生成的凹側面形狀的示意圖。在此情形中,雖然其生成方法基本上與上述圖14A中的方法相同,但卻是通過縮小頂平面輪廓1420來生成兩個中間輪廓的。
下面參照圖15描述用于生成字符的彎曲側面形狀的方法。利用多邊形來近似曲線并生成與該多邊形匹配的許多中間輪廓來實現該方法。下述的解釋是在假定該曲線(基于該曲線生成所述中間輪廓)為二次曲線,例如圓,拋物線,以及樣條曲線而作出的。下面首先描述圖15A所示為半圓形凸起形狀的側面形狀。這里,假設放大量為“L”,提升高度為“h(≥2L)”,生成的中間輪廓數為“2n+1”,本例中“n=2”。
從圖15A顯而易見,相對于“h/2”高度處,即高度“h”的中心處的一個中心中間輪廓1511來對稱地生成中間輪廓。因此,一旦生成中心中間輪廓1511以上(或以下)的中間輪廓,就能夠利用對稱性來生成中間輪廓1511以下(或以上)的其余中間輪廓。按照與上述方法相同的方法能夠生成側平面。生成中間輪廓的關鍵在于如何得到用于這些中間輪廓(除中心中間輪廓1511外)的放大量以及它們的z坐標。下面參照圖15C描述該計算方法。
對于圖15C所示的例子,假設中心中間輪廓1511為中間輪廓“0”,其它的中間輪廓被編號為“1”,“2”,...,其中離中間輪廓“0”越遠的中間輪廓的編號越大。用下列表達式來得到中間輪廓“i”的放大量“Li”以及z坐標“zi”。在下列表達式中,“r”表示對應于傾斜形狀的圓的半徑,并且i=0,1,...n。
Li=L-r(1-cos(2iθ/(n+1)))zi=h/2±hi=h/2±rsin(2iθ/(n+1))r=1/2L(L**2+h**2/4)θ=arctan(2L/h)注意,正值“zi”表示中間輪廓的z坐標高于中心中間輪廓1511,而負值“zi”表示中間輪廓的z坐標低于中心中間輪廓1511。
圖15B是出一個凹側面形狀的外部視圖。對于該凹側面,盡管z坐標“zi”與上述圖15A所述情形相同,但上述帶有負號的“Li”被用作為縮小量。
下面描述側斜面采用了拋物線形狀的一種情形。如同上述半圓傾斜形式中的,假設生成的中間輪廓數為“2n+1”,一個中間輪廓的放大/縮小量為“Li”,其z坐標為“zi”其中i=0,1,...n。對于凹拋物線側面形狀,用下列表達式來獲得z坐標“zi”以及放大/縮小量為“Li”。
Li=L(1-i**2/(n+1)**2)zi=h/2±ih/2(n+1)=h(1±i(n+1))/2
注意,正值“zi”表示中間輪廓的z坐標高于中心中間輪廓1511,而負值“zi”表示中間輪廓的z坐標低于中心中間輪廓1511。
對于凹拋物線側面形狀,帶有負號的值“Li”被用作為縮小量,而z坐標“zi”與上述凸拋物線側面形狀中的情形相同。
當側面形狀采用二次樣條曲線時,從“0”至“h”的參數被用作為底平面與頂平面之間的虛z坐標。該樣條曲線是根據上述參數以及頂平面與底平面之間的一個給定控制點而生成的。該控制點由3D字符數據生成設備201的用戶輸入。注意,頂平面與底平面的終點被固定為“0”。由該樣條曲線構成的凸/凹的程度即為放大/縮小量。參數的z坐標為中間輪廓的z坐標。這樣,根據該二次樣條曲線生成中間輪廓,然后用與上述方式類似的方式來生成字符的側平面。
最后,參照圖16描述用于生成模型的傾斜形狀的方法。該模型傾斜形狀能夠用上述方法的改進方法來生成,利用該方法可生成兩個中間輪廓。下面表示用于生成一個三層模型的傾斜形狀的過程。(1) 按照所述方法生成下述中間輪廓輪廓1610和1611,它們與結構元素的原始輪廓相同(不過這兩個輪廓的z坐標不必相同);通過縮小原始輪廓而生成的兩個輪廓1620和1621;以及通過放大原始輪廓而生成的兩個輪廓1630和1631。(2) 假設提升高度為“h”,該高度值可從外圍設備輸入,或者是一個缺省值。將兩個縮小的中間輪廓1620和1621的z坐標分別確定為“h”和“2h/3”,以及將與原始輪廓相等的兩個中間輪廓1610和1611的z坐標分別確定為“2h/3”和“h/3”。將兩個放大的中間輪廓1630和1631的z坐標分別確定為“h/3”和“0”。(3) 將由所述縮小輪廓1620和1621中的較高中間輪廓1620所構成的平面視為頂平面結構元素。將“h”設為該較高中間輪廓1620的點序列的z坐標(即,該頂平面是由具有z坐標“h”的縮小的中間輪廓1620生成)。(4) 將由所述放大輪廓1630和1631中的較低中間輪廓1631所構成的平面視為底平面結構元素。將“0”設為該較低中間輪廓1631的點序列的z坐標(即,該底平面是由具有z坐標“0”的放大的中間輪廓1631生成)。(5) 按照與上述方式相同的方式將縮小的中間輪廓1620的點連接到輪廓1621的對應點以生成最高層的側平面1622。(6) 按照與上述方式相同的方式將縮小的中間輪廓1621(具有z坐標“2h/3”)的點連接到中間輪廓1610(具有z坐標“2h/3”)的對應點以生成中間層的頂部水平平面1615。(7) 按照與上述方式相同的方式將中間輪廓1610的點連接到中間輪廓1611的對應點以生成中間層的側平面1612。(8) 按照與上述方式相同的方式將中間輪廓1611(具有z坐標“h/3”)的點連接到放大的中間輪廓1630(具有z坐標“h/3”)的對應點以生成底層的頂部水平平面1625。(9) 按照與上述方式相同的方式連接放大的中間輪廓1630與1631的對應點以生成底層的側平面1632。
當按照上述方法生成頂部及底部平面時,只要執行用于原始結構元素的三角形劃分,那么輪廓索引的對應就不會改變。因此,只需要縮小或放大索引表面數據中的點序列坐標數據。既然這樣,用于原始頂部及底部平面結構元素的索引表面數據不被輸出到形狀數據輸出單元12。而是將這里所生成的索引表面數據輸出。
形狀數據輸出單元12利用分層表示法把頂部及底部平面結構元素的索引表面數據與傾斜側平面結構元素的索引表面數據組合在一起。然后形狀數據輸出單元12將其輸出到外圍。當數據格式需要變換時,首先執行格式變換,然后輸出該變換數據。
圖17A-17D示出根據第一和第二實施例的四種傾斜形狀。
圖17A示出按照第一實施例的第一種方法在垂直方向上提升字符的頂平面而生成的側面形狀。如圖所示,將該側面形狀稱為“非斜型”。圖17B示出其截面為如圖14A所示投影凸六邊形的傾斜形狀。圖17C示出基于兩個中間輪廓而生成的傾斜形狀。對于該傾斜形狀,頂平面及底平面的邊緣相對于其各自的輪廓被移動相同角度以構成一個具有凸梯形形狀的截面。圖17D示出圖16所示模型的傾斜形狀。
如已描述的,本實施例的3D字符數據生成設備生成中間輪廓,基于該輪廓生成側平面。結果,能夠自動生成3D字符的各種側面形狀。第三實施例本實施例描述一種3D字符數據生成設備301,該設備在字符點與孔輪廓點序列之間插入點來生成具有較高清晰度的3D顯示。在下述解釋中,對與上述結構元素相同的結構元素不再描述。
圖18是表示本實施例3D字符數據生成設備301的功能結構的方框圖。該3D字符數據生成設備301包括下述本實施例獨有的單元輪廓數據插入單元21;頂部/底部重劃分單元22;以及紋理坐標生成單元24。設備301還包括分別取代單元6及單元7的側面生成單元23以及形狀數據輸出單元25。下面詳細描述該3D字符數據生成設備301。
輪廓數據插入單元21從形狀分析單元4接收字符及孔輪廓點序列,并在這些輪廓點序列中插入點以生成具有較高清晰度的3D顯示。下面描述用于把點插入到字符及孔輪廓點序列中的方法。(1) 計算從形狀分析單元4發出的各個字符及孔輪廓點序列的每兩個相鄰點之間的全長。還計算包含在各個輪廓點序列中的點的總數。(2) 用計算出的點的總數除所計算出的全長以產生一個平均長度。用對應于清晰度的給定等級數字除所產生的平均長度以產生一個標準長度。(3) 當孔輪廓點序列或字符孔輪廓點序列的兩個相鄰點之間的長度比所產生的標準長度長時,生成一個中間點以將兩個點之間的長度縮小到標準長度或是更短。在上述(1)產生的線或曲線中的一個上生成該中間點并表示在存儲于輪廓數據存儲單元3的輪廓數據中。當將一個中間點插在現有點序列上時,給這些點重新分配編號而不改變其排列順序。
圖19示出一個例子,該例中中間點被插到字符“回”的點序列中。如圖所示,三個中間點被插到字符輪廓點序列1911的各個邊上,兩個中間點被插到孔輪廓點序列1912的各個邊上。類似地,一個中間點被插到字符及孔輪廓點序列1913和1914的各個邊上。
這樣,中間點被插到各個結構元素的輪廓數據中,輪廓數據因此而被校正。然后輪廓數據插入單元21向頂部/底部劃分單元5輸出該校正的輪廓數據。
頂部/底部重劃分單元22進一步劃分由頂部/底部劃分單元5所劃分的三角形。由于下述原因而執行該劃分處理。由頂部/底部劃分單元5生成的三角形的頂點依靠字符輪廓點序列而存在。結果,當字符輪廓被彎曲或扭轉時,該字符輪廓被線性地變形,這樣就生成具有一個非正常形狀的字符。通過重新劃分由頂部/底部劃分單元5所劃分的三角形能夠阻止這一情形。
下面參照圖20-22描述重劃分方法。
圖20是表示將一個原始三角形劃分成四個三角形的重劃分過程的流程圖。
圖22A是用于描述使用三角形的一個邊的中點的重劃分方法的圖。
圖22A所示的重劃分方法用于本實施例。按照該方法,找出一個三角形的各個邊的中點,通過連接所找出的中點來產生三條線段。因此,每當一個三角形被劃分時三角形的數目就擴大四倍。
這里,假設由頂部/底部劃分單元5生成的合成點序列用{P
,P[1],...P[n]}來表示,字符輪廓點序列用{Po
,Po[1],...P0[I]}來表示,孔輪廓點序列用{Ph[x]
,Ph[x][1],...Ph[x][kx]}來表示。下面描述應用于由索引序列{a,b,c}表示的一個三角形多邊形的重劃分方法的算法。(1) 計算|a-b|,|b-c|,以及|c-a|的值。(2) 當滿足等式|a-b|=1時,計算線段“P[a]P[b]”的中點“Pab”,將“Pab=P[last+1]”附加到該點序列的末尾,并存儲一索引“last+1=α”。(3) 當滿足表達式“|a-b|≠1”以及“(a,b)≠(lastorg,0)&(a,b)≠(0,lastorg)”時(“lastorg”表示執行劃分前得到的點序列的索引的最后值),核查是否已找到“P[a]P[b]”的中點“Pab”。若是,把“α”存為該中點,并把該中點從核查表刪除,這在稍后描述。若還未找到中點“Pab”,就尋找中點“Pab”,把“Pab=P[last+1]”附加到該點序列的末尾,并把一對索引“(a,b)”,以及“α”存入核查表。因此,該核查表包括索引對以及由該索引對生成的一個索引。在此核查中,以隨機順序比較這些對。(4) 對|b-c|以及|c-a|執行上述(2)和(3)中的操作,對|b-c|存儲索引“β”,對|c-a|存儲索引“γ”。(5) 移動定義該三角形的索引序列{a,b,c},以及代之以附加定義四個三角形的四個索引序列,名為{a,α,γ},{b,β,α},{c,γ,β},以及{α,β,γ}。
下面描述根據上述重劃分操作的結果來重新構造一個字符輪廓點序列的處理。對一個原始字符輪廓的點序列執行下述操作。(1) 對一個字符點序列{Po
,Po[1]...Po[n]},尋找各個段“Po[I]Po[I+1]”(I=0,1,...n;并且Po[n+1]=Po
)的中點“W[I]”。(2) 用2乘該字符點序列{Po
,Po[1]...Po[n]}的索引使之變為{Po
,Po[2],Po[4],Po[6]...Po[2n]},并把“Po[2I+1]”作為“W[I]”插到該變化了的點序列中。于是,從重劃分的三角形中生成了一個新的字符點序列{Po
,Po
,Po[2]...Po[2n],Po[2n+1]}。
通過執行與上述類似的操作,同樣能夠得到對應于重劃分的三角形的一個新的孔輪廓點序列。
根據上述重劃分方法,一個原始三角形被劃分成四個三角形,從而使三角形的數量擴大了四倍。這里,假設重劃分前的初始狀態是級“0”,以及一次重劃分操作使級數增1。那么,在級“r”三角形的數量擴大了4r倍。
對于上述重劃分方法,必須執行r次重劃分操作以達到重劃分級“r”。下面參照圖21和22B描述用于只通過一次重劃分操作就將此重劃分級增至“2”或更高的一種方法。
圖21是表示該重劃分操作的處理流程的流程圖。
圖22B示出當執行使重劃分級從“0”增至“r”的一個重劃分操作時所得到的一種狀態。
在圖22B中,“α[I]”(I=0,1,...2**r-2)是線段“P[a]P[b]”的劃分點“Pab[α[I]]”的索引。劃分點“Pab[α[I]]”可以按如下所述得到。
Pab[α[I]]={(I+1)P[b]+(2**r-I-1)P[a]}/2**r類似地,“β[I]”(I=0,1,...2r-2)是線段“P[b]P[c]”的劃分點“Pbc[β[I]]”的索引。劃分點“Pbc[β[I]]”可以按如下所述得到。
Pbc[β[I]={(I+1)P[c]+(2**r-I-1)P[b]}/2**r類似地,“γ[I]”(I=0,1,---2r-2)是線段“P[c]P[a]”的劃分點“Pca[γ[I]]”的索引。劃分點“Pca[γ[I]]”可以按如下所述得到。
Pca[γ[I]]={(I+1)P[a]+(2**r-I-1)P[c]}/2**r同樣地,“ζ[I][k]”(I=0,1,---2**r-3;并且0≤k≤I)是線段“P[α][γ]”的劃分點“Pαγ[ζ[I][k]]”的索引。劃分點“Pαγ[ζ[I][k]]”可以按如下所述得到。
Pαγ[ζ[I][k]]={(I+1-k)P[α[I+1]]+(k+1)P[γ[2**r-I-3]]}/(I+2)下面描述基于上述劃分點的重劃分方法的一種算法。(1) 計算|a-b|,|b-c|,以及|c-a|的值。(2) 當滿足等式|a-b|=1時,找出線段“P[a]P[b]”的劃分點“Pab[α[I]]”(I=0,1,...2**r-2),把該劃分點作為“Pab=P[last+1+I]”附加到點序列的末尾,并存儲索引“last+1+I=α[I]”。(3) 當滿足表達式“|a-b|≠1”以及“(a,b)≠(lastorg,0)&(a,b)≠(0,lastorg)”時(“lastorg”表示執行劃分前得到的點序列的索引的最后值),核查是否已找到線段“P[a]P[b]”的劃分點“Pab[α[I]]”。若是,把“α[I]”存為該劃分點的索引,并從核查表中刪除該劃分點,這在稍后將描述。如果還未找到劃分點“Pab[α[I]]”,則尋找此劃分點“Pab[α[I]]”,將“Pab=P[last+1+I]”附加到點序列的末尾,并存儲索引“last+1+I=α[I]”。與此同時,把一對索引“(a,b)”,以及“α[I]”存入核查表。因此,該核查表包括該索引對以及由該索引對生成的一個索引。在此核查中,以隨機順序比較這些對。(4) 對|b-c|以及|c-a|執行上述(2)和(3)中的操作,并尋找線段“P[b]P[c]”以及線段“P[c]P[a]”的劃分點。如果需要則附加這些劃分點。根據需要存儲一對索引“(b,c)”和“β[I]”,以及一對索引“(c,a)”和“α[I]”。(5) 當r>1,尋找線段“P[α][γ]”的上述劃分點“Pαγ[ζ[I][k]]”,把找到的劃分點附加到點序列的末尾,并存儲索引“last+1+I(I+1)/2+k=ζ[I][k]”(I=0,1,...2**r-3;并且0≤k≤I)。(6) 當r=1,移動定義該三角形的索引序列{a,b,c},并代之以附加定義四個三角形的四個索引序列,名為{a,α
,γ
},{b,β
,α
},{c,γ
,α
},以及{α
,β
,γ
}。(7) 當r>1,移動定義該三角形的索引序列{a,b,c},并代之以附加定義4)r個三角形的下述索引序列。根據“I”(I=0,1,...2**r-1)執行計算。
當I=0附加索引序列{a,α
,γ[2**r-2]}來代替。
當I=1附加{α
,α[1],ζ
},{α
,ζ
,γ[2**r-2]},以及{γ[2**-2],ζ
,γ[2**-3]}的索引序列。
當I=2附加{α[1],α[2],ζ[1]
},{α[1],ζ[1]
,ζ
},{ζ
,ζ[1]
,ζ[1][1]},{ζ
,ζ[1][1],γ[2**r-3]},以及{γ[2**r-3],ζ[1][1],γ[2**r-4]}的索引序列。
當3≤I≤2r-2附加{α[I-1],α[I],ζ[I-1]
}以及{α[I-1],ζ[I-1]
,ζ[I-2]
}的索引序列,并重復地附加序列對{ζ[I-2][k],ζ[I-1][k],ζ[I-1][k+1]}以及{ζ[I-2][k],ζ[I-1][k+1],ζ[I-2][k+1]}(0≤k≤I-3;并且該對的附加被重復I-2次),以及附加{ζ[I-2][I-2],ζ[I-1][I-2],ζ[I-1][I-1]},{ζ[I-2][I-2],ζ[I-1][I-1],γ[2**r-1-I]},以及{γ[2**r-1-I],ζ[I-1][I-1],γ[2**r-2-I]}。
當I=2**r-1附加{α[2**r-2],b,β
}以及{α[2**r-2],β
,ζ[2**r-3]
}的索引序列,以及重復地附加序列對{ζ[2**r-3][k],β[k],β[k+1]}以及{ζ[2**r-3][k],β[k+1],ζ[2**r-3][k+1](0≤k≤2**r-4;并且該對的附加被重復2**r-3次),以及附加序列{ζ[2**r-3][2**r-3],β[2**r-3],β[2**r-2]},{ζ[2**r-3][2**r-3],β[2**r-3],γ
},以及{γ
,ξβ[2**r-2],c}。
下面描述重建字符輪廓點序列的處理。(1) 對一個字符輪廓點序列{Po
,Po[1]...Po[n]},尋找當字符輪廓點序列被分成2**r個三角形(I=0,1,...n;Po[n+1]=Po
;以及k=0,1,...2**r-2)時所得到的線段“Po[I]Po[I+1]”的劃分點“W[I][k]”。每一個劃分點“W[I][k]”是利用下述表示式找到的。
W[I][k]={(k+1)Po[1+1]+(2**r-k-1)Po[1]}/2**r(2) 用2**r乘字符點序列{Po
,Po[1]...Po[n]}的索引以生成一個點序列{Po
,Po[2**r],Po[2*2**r],Po[3*2**r]...Po[n*2**r]},并把“Po[I*2**r+k+1]”作為“W[I][k]”附加到所生成的點序列中(I=0,1,...n;并且k=0,1,...2**r-2)。這就生成了一個由重劃分的三角形所構成的新的字符輪廓點序列{Po
,Po[1],Po[2],Po[3],Po[4],...Po[n*2**r],Po[n*2**r+1]},Po[(n+1)*2**r-1]}。通過執行與上述操作類似的操作也能夠重建孔輪廓的點序列。
當頂部/底部重劃分單元22存儲對應于原始重劃分級“0”的數據時,通過從重劃分級“0”一直執行重劃分就變得有可能把一個精細劃分的三角形倒退成一個粗略劃分的三角形。例如,當重劃分級“r”需要被降為“p”時,首先廢除用于級“r”的數據,然后通過在級“0”處開始重劃分來生成用于級“p”的數據。這就能夠提供看起來好像是級“r”處的重劃分狀態直接被變換為級“p”處的重劃分狀態的一種重劃分狀態變換。
側面生成單元23以與第一實施例的側面生成單元6以及第二實施例的斜側面生成單元11相類似的方式生成用于各個字符結構元素的頂平面,底平面,以及側平面的索引表面數據。然后側面生成單元23將生成的索引表面數據輸出到紋理坐標生成單元24。
紋理坐標生成單元24生成含有頂部和底部平面的最小可能的正方形。該生成的正方形被以這樣一種方式平行于其自身移動,即該正方形的最低點在原點與底平面的最低點相重合。然后紋理坐標生成單元24尋找該變換了的點序列的坐標,并用該正方形的邊長除所找到的坐標。除后的坐標被用作為對應于標準化外延正方形的坐標的映射坐標。對于側平面,紋理坐標生成單元24為構成各個字符輪廓和孔輪廓的一條封閉曲線尋找周長(即,點序列的每兩個相鄰點之間的長度的總和)。然后紋理坐標生成單元24分配,作為表示起始點與各個點之間的長度的參數(0≤s≤1)的,(a)從起始點到各個點的長度;與(b)周長的比率。(起始點被分配參數“0”和“1”。)至于高度方向,底平面被分配“t=0”,而頂平面被分配“t=1”。
紋理坐標或者也可以如下來確定。提供含有一個結構元素(或全部結構元素)的一個柱面。在該柱面中定義柱面坐標系,并且將該結構元素的一個頂點從該柱面的中心坐標伸出以產生在柱面坐標系中的坐標。利用柱面坐標系中的這一坐標能夠就確定紋理坐標。在此情形中,該柱面坐標系需被標準化。另一方面,可以使用含有一個結構元素(或全部結構元素)的一個球面。在該球面中定義極坐標,并且將該結構元素的一個頂點從該球面的中心伸出以產生在極坐標系中的坐標。利用極坐標系中的這一坐標就能夠確定紋理坐標。在此情形中,極坐標系需被標準化。
上述生成的紋理坐標被作為一個點序列以這樣一種方式附加到索引表面數據中,即紋理坐標的順序與該索引表面數據中點序列坐標數據內所指示的坐標順序一致。然后紋理坐標生成單元24將它們輸出到形狀數據輸出單元25。
形狀數據輸出單元25接收用于各個頂部及底部結構元素的索引表面數據,紋理坐標被附加到其上,并且還接收用于各個側面結構元素的索引表面數據,紋理坐標被附加到其上。然后形狀數據輸出單元25利用分級表示法把它們放到一起,并將其輸出到外圍。當該數據的格式需被變換時,首先執行格式變換,然后輸出變換后的數據。
如已經描述的,本實施例的3D字符數據生成設備在字符及孔輪廓點序列的點之間插入點,并基于這些點來執行多邊形劃分。這就使得有可能生成具有高清晰度的3D字符。第四實施例第一實施例描述了生成3D字符的一個例子。本實施例描述在3D字符下提供具有柱面形狀或其它形狀的一個基底的例子。本實施例中與第一實施例內相同的結構元素不再描述。
圖23是表示第四實施例的3D字符數據生成設備401的功能結構的方框圖。3D字符數據生成設備401包括本實施例特有的一個基底生成單元35。3D字符數據生成設備401還包括下列單元取代字符代碼輸入單元1的字符/基底代碼輸入單元31;取代輪廓數據獲取單元2的輪廓/基底數據獲取單元32;取代輪廓數據存儲單元3的輪廓/基底數據存儲單元33;取代形狀分析單元4的字符/基底分析單元34;取代側面生成單元6的字符側面生成單元36;以及取代形狀數據輸出單元7的字符/基底數據輸出單元37。下面詳細描述上述的3D字符數據生成設備401。
與第一實施例的字符代碼輸入單元1一樣,字符/基底代碼輸入單元31也是一個諸如鍵盤及鼠標的輸入單元。字符/基底代碼輸入單元31將一個輸入信號進行變換以生成諸如ASCII碼和JIS碼的一個字符代碼,以及確定基底形狀的一個基底代碼。該生成的字符代碼及基底代碼被輸出到輪廓/基底數據獲取單元32。
輪廓/基底數據獲取單元32從輪廓/基底數據存儲單元33獲取與上述字符代碼有關的字符輪廓數據,以及與上述基底代碼有關的3D基底數據。
輪廓/基底數據存儲單元33以與第一實施例的輪廓數據存儲單元3相類似的方式預先存儲與字符代碼有關的輪廓數據。輪廓/基底數據存儲單元33另外還存儲與基底代碼有關的3D基底數據。
所得到的輪廓數據及3D基底數據被輸出到字符/基底分析單元34。注意,該3D基底數據包括確定哪一平面為基底的頂平面的信息。
字符/基底分析單元34為一個字符生成形狀分析信息,如同第一實施例的形狀分析單元4所作的。形狀分析信息為每個孔確定含有該孔的一個唯一的字符部分。字符/基底分析單元34還計算下列值對應于整個字符的邊框;該邊框的中心坐標;對應于該基底的3D邊框(一個長方體);對應于該基底的頂平面的邊框的中心坐標;以及基底定標量。下面描述基底定標量。通過把一個預定的邊緣量加到該字符的邊框來產生一個“放大的矩形”。該基底定標量是當該字符邊框被以這樣一種方式移動,即該字符邊框的中心與基頂(base-top)邊框的中心相重合時允許該放大的矩形被包含在基底頂平面的邊框內的最小量。字符的形狀分析信息被發送到頂部/底部劃分單元5,在單元5中按照第一實施例所描述的對該信息進行處理。該放大矩形的中心坐標,基底頂平面的中心坐標,以及基底定標量被發送到基底生成單元35。
基底生成單元35利用從字符/基底分析單元34發送的基底定標量在3D基底數據上執行定標變換。之后,基底生成單元35以這樣一種方式,即定標變換后所得到的基底中心坐標與該字符的基底中心坐標相一致來與其自身平行地移動該定標變換了的3D基底數據。然后基底生成單元35校正所移動基底的3D坐標,并把該變換的3D基底數據輸出到字符/基底數據輸出單元37。
字符側面生成單元36根據各個結構元素生成頂平面,底平面,側平面,以及斜側面,并將它們輸出到字符/基底數據輸出單元37,如同第一實施例的側面生成單元6以及第二實施例的斜側面生成單元11所做的。
字符/基底數據輸出單元37接收下列數據集基底生成單元35所發送的3D基底數據;以及基于結構元素的用于各個頂部,底部,側平面的索引表面數據。字符/基底數據輸出單元37利用分層表示法把這些數據集放在一起,并將其輸出到外圍。當數據格式需要被變換成某一格式時,首先把該數據表示為索引表面數據,然后變換為某一格式內的數據。
圖24示出具有根據第四實施例生成的一個基底的3D字符“田”的外部視圖。
如已描述的,本實施例基于3D基底數據生成一個基底,并在3D字符下提供該生成的基底。這樣,本實施例能夠呈現裝飾用的3D字符,增加了裝飾性顯示的多樣性。第五實施例上述第四實施例描述了基于3D基底數據生成具有一個基底的3D字符的例子。本實施例描述基于該基底的輪廓數據來生成具有一個基底的3D字符的例子。注意,本實施例中與第四實施例內相同的結構元素將不再描述。
圖25是表示第五實施例的3D字符數據生成設備501的功能結構的方框圖。3D字符數據生成設備501包括字符/基底代碼輸入單元41,輪廓數據獲取單元42,輪廓數據存儲單元43,字符/基底分析單元44,多邊形劃分單元45,側面生成單元46,以及字符/基底數據輸出單元47。下面詳細描述上述3D形狀生成單元501。
與第一實施例的字符代碼輸入單元1一樣,字符/基底代碼輸入單元41也是一個諸如鍵盤及鼠標的輸入單元。字符/基底代碼輸入單元41將一個輸入信號進行變換以生成諸如ASCII碼和JIS碼的一個字符代碼,以及確定基底的輪廓數據的一個基底代碼。該生成的字符代碼及基底代碼被發送到輪廓數據獲取單元42。
輪廓數據獲取單元42從輪廓數據存儲單元43獲得與上述字符代碼有關的字符輪廓數據,以及與上述基底代碼有關的輪廓數據。
輪廓數據存儲單元43預先存儲與字符代碼有關的輪廓數據,如第一實施例的輪廓數據存儲單元3所做的。輪廓數據存儲單元43還另外存儲與基底代碼有關的輪廓數據。對于其上形成有一個孔的基底,輪廓數據存儲單元43還存儲該孔的輪廓數據。
輪廓數據獲取單元42把用于該字符以及該基底的所得到的輪廓數據的兩個集合輸出到字符/基底分析單元44。
字符/基底分析單元44分別地為該字符和該基底生成形狀分析信息,如第一實施例的形狀分析單元4所做的。所生成的形狀分析信息為字符的各個孔確定含有該孔的一個唯一的字符部分。對于其上構成有一個孔的基底,該形狀分析信息定含有該孔的一個基底。這樣,該形狀分析信息表示出孔與字符或基底之間的包含關系。
如同在第四實施例內的,字符/基底分析單元44還計算下列值對應于整個字符的邊框;該邊框的中心坐標;對應于整個基底的邊框;對于該基底的該邊框的中心坐標;以及基底定標量。下面描述基底定標量。通過把一個預定的邊緣量加到該字符的邊框來產生一個“放大的矩形”。該基底定標量是當該字符邊框被以這樣一種方式移動,即該邊框的中心與基底邊框的中心相重合時允許該放大的矩形被包含在基底邊框內的最小量。用于該字符及該基底的形狀分析信息,字符邊框的中心坐標,基底邊框的中心坐標,以及基底定標量被發送到多邊形劃分單元45。
多邊形劃分單元45對字符結構元素執行與第一實施例所述相同的操作。對基底結構元素,多邊形劃分單元45利用基底定標量在基底結構元素上執行定標變換。之后,多邊形劃分單元45用這樣一種方式,即基底邊框的中心與字符邊框的中心相重合來與其自身平行地移動該基底數據。然后多邊形劃分單元45對基底的移動數據執行與對字符結構元素所執行的操作相同的操作。因此,多邊形劃分單元45為該字符及該孔的每個結構元素生成索引表面數據,并將其輸出到字符/基底側面生成單元46。
字符/基底側面生成單元46生成各個字符結構元素以及基底結構元素的頂平面,底平面,以及側平面或是斜側面,如同第一實施例的側面生成單元6和第二實施例的斜側面生成單元11所做的。字符/基底側面生成單元46還通過對應于上升高度的值在下面以及在z軸方向上與其自身平行地移動基底結構元素。當通過旋轉變換生成該基底的側平面時,用對應于初始旋轉變換的值在該基底的側平面上執行相反的旋轉變換。通過執行這些操作,字符/基底側面生成單元46分別為該字符和該基底的頂部,底部,以及側面結構元素生成索引表面數據,并把它輸出到字符/基底數據輸出單元47。
字符/基底數據輸出單元47接收字符和基底的這一索引表面數據,利用分層表示法把它們放在一起,并把它輸出到外圍。當數據需要被變換為使用柱面坐標或極坐標的數據格式時,該數據首先被變換成數據格式,然后輸出。
注意,在第四和第五實施例中,可以省略3D字符的底平面,這是因為底平面被連接到基底上因此是不可見的。這一省略能夠減少數據總量。
如已經描述的,本實施例基于該基底的輪廓數據生成具有柱面形狀或其它形狀的一個基底,并在3D字符下提供該生成的基底。這樣,本實施例能夠呈現裝飾用的3D字符,增加了裝飾性顯示的多樣性。第六實施例第六實施例描述生成3D雕刻版的一個例子。注意,本實施例中與上述實施例內相同的結構元素將不再描述。
圖26是表示第六實施例的3D字符數據生成設備601的功能結構的方框圖。3D字符數據生成設備601包括字符/雕刻代碼輸入單元51,輪廓數據獲取單元52,輪廓數據存儲單元53,字符/雕刻分析單元54,多邊形劃分單元55,側面生成單元56,以及字符/雕刻數據輸出單元47。下面詳細描述上述的3D形狀生成單元601。
與第一實施例的字符代碼輸入單元1一樣,字符/雕刻代碼輸入單元51也是一個諸如鍵盤及鼠標的輸入單元。字符/雕刻代碼輸入單元51將一個輸入信號進行變換以生成諸如ASCII碼和JIS碼的一個字符代碼。字符/雕刻代碼輸入單元51還生成確定一雕刻基底的輪廓數據的雕刻代碼。該生成的字符代碼及雕刻代碼被發送到輪廓數據獲取單元52。
輪廓數據獲取單元52從輪廓數據存儲單元53獲得與上述字符代碼有關的字符輪廓數據,以及與上述雕刻代碼有關的輪廓數據。
輪廓數據存儲單元53預先存儲與字符代碼有關的輪廓數據,如第一實施例的輪廓數據存儲單元3所做的。輪廓數據存儲單元43還另外存儲與雕刻代碼有關的雕刻基底的輪廓數據。對于其上形成有一個孔的雕刻基底,輪廓數據存儲單元53還存儲該孔的輪廓數據。
輪廓數據獲取單元52把所得到的用于該字符以及該雕刻基底的輪廓數據輸出到字符/雕刻分析單元54。
字符/雕刻分析單元54計算下列值對應于整個字符的矩形邊框;該矩形邊框的中心坐標;對應于整個雕刻基底的矩形邊框;對于該雕刻基底的該矩形邊框的中心坐標;以及雕刻定標量。下面描述雕刻定標量。通過把一個預定的邊緣量附加到該字符的矩形邊框來產生一個“放大的矩形”。該雕刻定標量是當該字符邊框被以這樣一種方式移動,即該邊框的中心與雕刻基底的邊框中心相重合時允許該放大的矩形被包含在雕刻基底邊框內的最小量。這之后,字符/雕刻分析單元54利用該雕刻定標量在雕刻基底輪廓的點序列上執行定標變換。然后分析單元54把被以這樣的方式,即定標變換后生成的雕刻基底輪廓的矩形邊框的中心坐標與該字符的矩形邊框的中心坐標相一致來與其自身平行地移動的雕刻基底輪廓的定標變換點序列視為雕刻基底的新的輪廓數據。
字符/雕刻分析單元54還按照與第一實施例的形狀分析單元4相類似的方式分別地為字符輪廓數據和雕刻基底的新輪廓數據生成形狀分析信息。生成的形狀分析信息為字符的每個孔確定含有該孔的一個唯一的字符部分。對其上形成有一個孔的雕刻基底,形狀分析信息確定含有該孔的雕刻基底。這樣,形狀分析信息表示出孔與字符或雕刻基底之間的包含關系。用于雕刻基底輪廓的形狀分析信息與該雕刻基底的底平面對應。形狀分析單元54還按照與第一實施例的形狀分析單元4相類似的方式生成對應于該雕刻基底的頂平面的另一個形狀分析信息。該形狀分析信息是為其中組合有下述兩個數據集的數據產生的(a)字符輪廓點序列,該序列上的點按照用于排列點以構成一個字符孔的順序來排列;以及(b)孔輪廓點序列,該序列上的點按照用于排列點以構成一個字符輪廓的順序來排列。
多邊形劃分單元55執行對于該字符及雕刻基底的每一個頂部及底部結構元素的操作,如同第一實施例的頂部/底部劃分單元5所做的。圖27A-27C示出執行多邊形劃分后得到的狀態的例子。在該例子中,顯示出該字符及雕刻基底的頂部和底部平面。作為上述操作的結果,多邊形劃分單元55生成用于該字符和雕刻基底的各個頂部/底部平面結構元素的索引表面數據,并把它輸出到側面生成單元56。
側面生成單元56生成雕刻基底的各個結構元素的頂平面,底平面,以及側平面或是斜側面,如第一實施例的側面生成單元6以及第二實施例的斜側面生成單元11所做的。之后,側面生成單元56在下面相對于該雕刻基底的頂平面的z軸方向位置的z軸方向上移動字符的各個頂平面結構元素,這樣就生成雕刻基底頂平面上凹坑部分的底表面。最后,側面生成單元56按照與第一實施例的側面生成單元6相類似的方式,通過連接構成凹坑部分的底表面的點,以及構成雕刻基底頂平面的對應點來生成該凹坑部分的側平面。當這樣做時,側面生成單元56把索引順序變為與上述第一實施例相反的順序。
作為上述操作的結果,側面生成單元56生成用于該字符和雕刻基底的頂部,底部,以及側面結構元素的索引表面數據,并把它們輸出到字符/雕刻數據輸出單元57。
字符/雕刻數據輸出單元57接收字符及雕刻基底的這一索引表面數據,利用分層表示法把它們放在一起,并把它輸出到外圍。當該數據需要被變換成使用柱面坐標或極坐標的數據格式時,該數據首先被進行變換,然后輸出。
如已經描述的,本實施例的3D字符數據生成設備601能夠基于雕刻基底的輪廓數據生成含有3D字符的一個雕刻。這就實現了具有凸形的3D字符的復雜顯示。
通過在字符序列中的各個字符上按順序執行操作,可以把上述第一至第六實施例的操作應用于一個字符序列。通過把一個單獨字符的邊框放大成字符序列的邊框,然后執行上述操作,還可以做到給字符序列提供一個唯一的(雕刻)基底。
通過主要使用對其中具有一個孔的字符進行處理的例子已經對上述實施例進行了描述。然而,根據本發明的上述設備能夠生成使得帶有孔的高清晰度3D圖形能被自動顯示的3D數據。
工業實用性本發明的3D字符生成設備以及3D圖形生成設備作為用來生成用于在計算機圖形中顯示3D字符及3D圖形的3D數據的3D數據生成設備非常有用。本發明的設備作為字幕發生器(“字幕拍錄裝置”)也是很有用的,該自幕發生器生成被用于廣播屏幕的編輯設備所用的或是被用在網站頁上的3D字符及3D圖形。當3D字符及3D圖形是從其輪廓數據中生成時,本發明的設備尤其有用。
權利要求
1.一種三維(3D)字符數據生成設備,用于從二維(2D)字符數據生成三維字符數據,包括輪廓確定裝置,用于根據二維字符數據確定(a)第一輪廓,該輪廓是包含在一個字符內的一個字符部分的輪廓;以及(b)第二輪廓,該輪廓是形成在該字符中的一個孔的輪廓;包含關系確定裝置,用于確定字符部分的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分裝置,用于把由包含關系確定裝置確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中該劃分裝置還劃分由包含關系確定裝置未指定的第一輪廓所包圍的整個區域;以及側面生成裝置,用于移動含有劃分區域的字符部分的復本,并基于該復本的頂點以及原始字符部分的頂點生成一個側平面。
2.如權利要求1的三維字符數據生成設備,其中二維字符數據是在具有坐標以表明第一輪廓和第二輪廓的二維平面內定義的輪廓數據,其中輪廓確定裝置用于(a)獲得輪廓數據;(b)把所獲得的輪廓數據中的第一輪廓數據與第二輪廓數據區別開;以及(c)根據第一和第二輪廓數據分別確定第一和第二輪廓。
3.如權利要求2的三維字符數據生成設備,其中劃分裝置把(a)由包含關系確定裝置確定的第一輪廓所包圍的區域以及(b)由包含關系確定裝置未確定的第一輪廓所包圍的整個區域視為一個結構元素,把每一個結構元素劃分成凸多邊形,并生成表示該被劃分結構元素的結構元素數據。
4.如權利要求3的三維字符數據生成設備,其中側面生成裝置在與二維平面垂直的方向上移動劃分結構元素的復本,并根據該復本的頂點以及原始結構元素的頂點生成代表一個側平面的側面數據。
5.如權利要求4的三維字符數據生成設備,其中第一輪廓數據含有一個點序列,該點序列表示第一輪廓并被按照順時針或逆時針方向排列,其中第二輪廓數據含有一個點序列,該點序列表示第二輪廓并被按照與表示第一輪廓的點序列的排列方向相反的方向排列以及其中輪廓確定裝置根據各個點序列的方向來作出區別。
6.如權利要求5的三維字符數據生成設備,其中包含關系確定裝置包括第一檢測單元,用于檢測圍繞第一輪廓的第一矩形;第二檢測單元,用于檢測圍繞第二輪廓的第二矩形;第一確定單元,用于把各個檢測到的第一矩形與檢測到的第二矩形進行比較,并確定圍繞第二輪廓的至少一個第一矩形;第二確定單元,用于確定由除該至少一個第一矩形之外的一個最里面的第一矩形所圍繞的第一輪廓;以及關系信息生成單元,用于把所確定的第一輪廓視為圍繞第二輪廓的唯一第一輪廓,并生成表示該唯一的第一輪廓與第二輪廓之間的包含關系的包含關系信息。
7.如權利要求6的三維字符數據生成設備,其中側面生成裝置包括頂部/底部生成單元,用于根據(a)生成的結構元素數據;以及(b)通過在與二維平面垂直的方向上移動該結構元素數據的復本而得到的數據來生成表示三維圖形的頂部和底部平面的頂部/底部數據,其中所生成的頂部/底部數據包括表示頂部和底部平面的邊緣的邊緣數據;中間輪廓生成單元,用于根據該邊緣數據生成表示一個中間輪廓的中間輪廓數據;以及側面生成單元,用于連接該中間輪廓的頂點與該邊緣的頂點以生成側平面以及側面數據。
8.如權利要求7的三維字符數據生成設備,其中中間輪廓生成單元通過如下方式來生成中間輪廓數據(a)計算由頂平面或是底平面的一個邊緣頂點之外的兩個相鄰點所構成的向量的法向向量,這兩個相鄰點代表該向量的起始點和終點;(b)根據如下方式來確定一個中間點,該點與起始點對應并存在于中間輪廓上用一個系數乘該法向向量而得到的x-y坐標;起始點的x-y坐標;以及預定的z坐標;以及(c)為整個邊緣確定構成該中間輪廓的各個中間點以生成中間輪廓數據。
9.如權利要求8的三維字符數據生成設備,還包括紋理坐標生成裝置,用于(a)生成包圍結構元素的頂部和底部平面的最小正方形;(b)以這樣的方式,即最小正方形包圍定義頂部和底部平面的點的序列來變換該最小正方形;(c)確定該變換最小正方形的各個坐標;(d)用正方形的邊長除各個確定的坐標;(e)把各個被除的坐標視為映射坐標;(f)計算定義該生成側平面的點序列中的每兩個相鄰點之間的長度總和與從該序列的起始點開始至一給定點結束的那些點之外的每兩個相鄰點之間的長度總和之間的第一比值;(g)計算從底平面至頂平面的高度與一個給定點的高度之間的第二比值;以及(h)根據第一比值和第二比值生成紋理坐標。
10.如權利要求8的三維字符數據生成設備,還包括紋理坐標生成裝置,用于(a)提供含有一個或是全部結構元素的柱面;(b)定義該柱面中的規范化柱面坐標系;(c)根據該柱面的中心坐標投影每個結構元素的各個頂點;以及(d)利用柱面坐標系中的坐標生成紋理坐標。
11.如權利要求8的三維字符數據生成設備,還包括紋理坐標生成裝置,用于(a)提供含有一個或是全部結構元素的球面;(b)定義該球面中的規范化極坐標系;(c)根據該球面的中心坐標投影每個結構元素的各個頂點;以及(d)利用極坐標系中的坐標生成紋理坐標。
12.如權利要求5的三維字符數據生成設備,其中包含關系確定裝置包括第一檢測單元,用于檢測圍繞第一輪廓的第一矩形;第二檢測單元,用于檢測圍繞第二輪廓的第二矩形;長度檢測單元,用于檢測除(a)從第二矩形的重心到第一矩形的一個邊的長度;以及(b)從該重心到與所檢測的第一矩形對應的字符部件有關的點序列中的點的長度之外的最短距離;以及關系信息生成單元,用于(a)為組成該字符的每個字符部件選擇除長度檢測裝置檢測的最短長度之外的最短長度;(b)判斷與所選最短長度有關的第一輪廓是否是含有第二輪廓的唯一的第一輪廓;以及(c)生成表示該唯一的第一輪廓與第二輪廓之間的包含關系的包含關系信息。
13.如權利要求5的三維字符數據生成設備,還包括數據插入裝置,用于(a)用一個預定值去除點序列中的兩個相鄰點之間的平均長度,這兩個相鄰點被包含在第一輪廓數據中或是第二輪廓數據中,從而產生一個標準長度;以及(b)在兩個相鄰點之間插入至少一個中間點以便使這兩個相鄰點之間的長度等于或短于該標準長度。
14.如權利要求3的三維字符數據生成設備,還包括重劃分裝置,用于重新劃分由劃分裝置所產生的凸多邊形。
15.一種三維(3D)字符數據生成設備,包括接收裝置,用于接收一個字符代碼和一個基底代碼,它們分別與一個字符和一個基底有關;字符/基底形狀存儲裝置,用于存儲該字符的輪廓數據,以及存儲該基底的三維數據;字符/基底形狀獲取裝置,用于獲得與所接收的字符代碼和基底代碼相應的存儲的輪廓數據以及存儲的三維數據;字符分析裝置,用于(a)根據所得到的輪廓數據分析該字符的輪廓與形成在該字符中的孔的輪廓之間的包含關系,其中該包含關系表示出該字符的輪廓包含該孔的輪廓;(b)確定該字符的一個結構元素;以及(c)計算使得該字符落在該基底的頂平面上的條件;基底形狀生成裝置,用于根據所計算的條件變換三維數據;頂部/底部劃分裝置,用于把每個確定的結構元素分成凸多邊形;以及字符側面生成裝置,用于移動各個劃分的結構元素以生成三維字符的頂平面,底平面,以及側平面。
16.一種三維(3D)字符數據生成設備,包括接收裝置,用于接收一個字符代碼和一個基底代碼,它們分別與一個字符和一個基底有關;字符/基底形狀存儲裝置,用于存儲該字符的輪廓數據,以及存儲該基底的三維數據;字符/基底形狀獲取裝置,用于獲得與所接收的字符代碼和基底代碼相應的存儲的字符輪廓數據以及存儲的基底輪廓數據;字符/基底分析裝置,用于(a)根據所得到的字符輪廓數據分析該字符的輪廓與形成在該字符中的孔的輪廓之間的包含關系,其中該包含關系表示出該字符的輪廓包含該孔的輪廓;(b)確定該字符的一個結構元素;以及(c)根據得到的該基底的輪廓數據,分析該基底的輪廓與一個形成在該基底中的孔的輪廓之間的包含關系,其中該包含關系表示出該基底輪廓包含該孔的輪廓;(d)確定該基底的一個結構元素;以及(e)計算使得該字符落在該基底的輪廓內的條件;字符/基底劃分裝置,用于(a)把每個確定的結構元素分成凸多邊形;(b)根據所計算的條件把代表該基底的各個結構元素的數據進行變換;以及(d)把與該變換數據有關的各個結構元素劃分成凸多邊形;以及字符/基底生成裝置,用于移動各個劃分的結構元素以生成三維字符的頂平面,底平面,以及側平面。
17.如權利要求16的三維字符數據生成設備,其中字符/基底生成裝置生成具有一個傾斜形狀的側平面。
18.一種三維(3D)字符數據生成設備,包括接收裝置,用于接收一個字符代碼和一個基底代碼,它們分別與一個字符和一個基底有關;字符/基底形狀存儲裝置,用于存儲該字符的輪廓數據,以及存儲該基底的三維數據;字符/基底形狀獲取裝置,用于獲得與所接收的字符代碼和基底代碼相應的存儲的字符輪廓數據以及存儲的雕刻基底輪廓數據;字符/基底分析裝置,用于(a)根據所得到的字符輪廓數據分析該字符的輪廓與形成在該字符中的孔的輪廓之間的包含關系,其中該包含關系表示出該字符的輪廓包含該孔的輪廓;(b)確定該字符的一個結構元素;(c)計算使得該字符落在該雕刻基底的輪廓內的條件;(d)根據所計算的條件變換該雕刻基底的輪廓數據;(e)根據變換輪廓數據分析該雕刻基底的輪廓與一個形成在該雕刻基底中的孔的輪廓之間的包含關系,其中該包含關系表示出該雕刻基底的輪廓包含該孔的輪廓;(f)確定該雕刻基底的底平面的一個結構元素;(g)把表示字符輪廓的點序列視為表示孔輪廓的點序列,并把表示孔輪廓的點序列視為表示字符輪廓的點序列,這樣就生成了該字符的新的輪廓數據;(h)把新的輪廓數據與雕刻基底的變換輪廓數據組合在一起,這樣就生成了組合輪廓數據;以及(i)根據該組合輪廓數據分析和變換輪廓數據有關的輪廓與和新輪廓數據有關的輪廓之間的包含關系以確定雕刻基底頂平面的一個結構元素;字符/基底劃分裝置,用于把由字符/基底分析裝置確定的各個結構元素劃分成凸多邊形;以及字符/基底側面生成裝置,用于移動雕刻基底的各個劃分的結構元素以生成頂平面,底平面,和側平面,以及用一個預定深度來移動該字符頂平面的結構元素以生成該雕刻基底的一個凹處部分的底表面和側表面。
19.如權利要求18的三維字符數據生成設備,其中字符/基底側面生成裝置生成具有一個傾斜形狀的側平面。
20.一種三維(3D)圖形數據生成設備,用于從二維(2D)圖形數據生成三維圖形數據,包括輪廓確定裝置,用于根據二維圖形數據確定(a)第一輪廓,該輪廓是包含在一個圖形內的一個圖形部分的輪廓;以及(b)第二輪廓,該輪廓是形成在該圖形中的一個孔的輪廓;包含關系確定裝置,用于確定圖形部分的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分裝置,用于把由包含關系確定裝置確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中該劃分裝置還劃分由包含關系確定裝置未確定的第一輪廓所包圍的整個區域;以及側面生成裝置,用于移動含有該劃分區域的圖形部分的復本,并基于該復本的頂點以及原始圖形部分的頂點生成一個側平面。
21.如權利要求20的三維圖形數據生成設備,其中二維圖形數據是在具有坐標以表明第一輪廓和第二輪廓的二維平面內定義的輪廓數據,其中輪廓確定裝置用于(a)獲得輪廓數據;(b)把所獲得的輪廓數據中的第一輪廓數據與第二輪廓數據區別開;以及(c)根據第一和第二輪廓數據分別確定第一和第二輪廓。
22.如權利要求21的三維圖形數據生成設備,其中劃分裝置把(a)由包含關系確定裝置確定的第一輪廓所包圍的區域以及(b)由包含關系確定裝置未確定的第一輪廓所包圍的整個區域視為一個結構元素,把每一個結構元素劃分成凸多邊形,并生成表示該被劃分結構元素的結構元素數據。
23.如權利要求22的三維圖形數據生成設備,其中側面生成裝置在與二維平面垂直的方向上移動劃分結構元素的復本,并根據該復本的頂點以及原始結構元素的頂點生成代表一個側平面的側面數據。
24.如權利要求23的三維圖形數據生成設備,其中第一輪廓數據含有一個點序列,該點序列表示第一輪廓并被按照順時針或逆時針方向排列,其中第二輪廓數據含有一個點序列,該點序列表示第二輪廓并被按照與表示第一輪廓的點序列的排列方向相反的方向排列以及其中輪廓確定裝置根據各個點序列的方向來作出區別。
25.如權利要求24的三維圖形數據生成設備,其中包含關系確定裝置包括第一檢測單元,用于檢測圍繞第一輪廓的第一矩形;第二檢測單元,用于檢測圍繞第二輪廓的第二矩形;第一確定單元,用于把各個檢測的第一矩形與檢測的第二矩形進行比較,并確定圍繞第二輪廓的至少一個第一矩形;第二確定單元,用于確定除該至少一個第一矩形之外的一個最里面的第一矩形所圍繞的第一輪廓;以及關系信息生成單元,用于把所確定的第一輪廓視為圍繞第二輪廓的唯一第一輪廓,并生成表示該唯一的第一輪廓與第二輪廓之間的包含關系的包含關系信息。
26.如權利要求24的三維圖形數據生成設備,其中包含關系確定裝置包括第一檢測單元,用于檢測圍繞第一輪廓的第一矩形;第二檢測單元,用于檢測圍繞第二輪廓的第二矩形;長度檢測單元,用于檢測除(a)從第二矩形的重心到第一矩形的一個邊的長度;以及(b)從該重心到與所檢測的第一矩形對應的圖形部分有關的點序列中的點的長度之外的最短距離;以及關系信息生成單元,用于(a)為組成該圖形的每個圖形部分選擇由長度檢測裝置檢測的最短長度之外的最短長度;(b)判斷與所選最短長度有關的第一輪廓是否是含有第二輪廓的唯一第一輪廓;以及(c)生成表示該唯一第一輪廓與第二輪廓之間的包含關系的包含關系信息。
27.一種用于從二維(2D)字符數據生成三維字符數據的方法,該方法包括輪廓確定步驟,用于根據二維字符數據確定(a)第一輪廓,該輪廓是包含在一個字符內的一個字符部件的輪廓;以及(b)第二輪廓,該輪廓是形成在該字符中的一個孔的輪廓;包含關系確定步驟,用于確定字符部件的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分步驟,用于把由包含關系確定步驟確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中在該劃分步驟中,由包含關系確定裝置未確定的第一輪廓所包圍的整個區域也被劃分;以及側面生成步驟,用于移動含有該劃分區域的字符部件的復本,并基于該復本的頂點以及原始字符部件的頂點生成一個側平面。
28.一種用于從二維(2D)字符數據生成三維字符數據的程序,該程序包括輪廓確定步驟,用于根據二維字符數據確定(a)第一輪廓,該輪廓是包含在一個字符內的一個字符部件的輪廓;以及(b)第二輪廓,該輪廓是形成在該字符中的一個孔的輪廓;包含關系確定步驟,用于確定字符部件的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分步驟,用于把由包含關系確定步驟確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中在該劃分步驟中,由第一輪廓所包圍的未由包含關系確定裝置所確定的整個區域也被劃分;以及側面生成步驟,用于移動含有該劃分區域的字符部件的復本,并基于該復本的頂點以及原始字符部件的頂點生成一個側平面。
29.一種存儲有用于從二維(2D)字符數據生成三維字符數據的程序的計算機可讀存儲介質,該程序包括輪廓確定步驟,用于根據二維字符數據確定(a)第一輪廓,該輪廓是包含在一個字符內的一個字符部件的輪廓;以及(b)第二輪廓,該輪廓是形成在該字符中的一個孔的輪廓;包含關系確定步驟,用于確定字符部件的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分步驟,用于把由包含關系確定步驟確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中在該劃分步驟中,由包含關系確定裝置未確定的第一輪廓所包圍的整個區域也被劃分;以及側面生成步驟,用于移動含有該劃分區域的字符部件的復本,并基于該復本的頂點以及原始字符部件的頂點生成一個側平面。
30.一種用于從二維(2D)圖形數據生成三維圖形數據的方法,該方法包括輪廓確定步驟,用于根據二維圖形數據確定(a)第一輪廓,該輪廓是包含在一個圖形內的一個圖形部分的輪廓;以及(b)第二輪廓,該輪廓是形成在該圖形中的一個孔的輪廓;包含關系確定步驟,用于確定圖形部分的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分步驟,用于把由包含關系確定裝置確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中在該劃分步驟中,由包含關系確定裝置未確定的第一輪廓所包圍的整個區域也被劃分;以及側面生成步驟,用于移動含有該劃分區域的圖形部分的復本,并基于該復本的頂點以及原始圖形部分的頂點生成一個側平面。
31.一種用于從二維(2D)圖形數據生成三維圖形數據的程序,該程序包括輪廓確定步驟,用于根據二維圖形數據確定(a)第一輪廓,該輪廓是包含在一個圖形內的一個圖形部分的輪廓;以及(b)第二輪廓,該輪廓是形成在該圖形中的一個孔的輪廓;包含關系確定步驟,用于確定圖形部分的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分步驟,用于把由包含關系確定裝置確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中在該劃分步驟中,由包含關系確定裝置未確定的第一輪廓所包圍的整個區域也被劃分;以及側面生成步驟,用于移動含有該劃分區域的圖形部分的復本,并基于該復本的頂點以及原始圖形部分的頂點生成一個側平面。
32.一種存儲有用于從二維(2D)圖形數據生成三維圖形數據的程序的計算機可讀記錄介質,該程序包括輪廓確定步驟,用于根據二維圖形數據確定(a)第一輪廓,該輪廓是包含在一個圖形內的一個圖形部分的輪廓;以及(b)第二輪廓,該輪廓是形成在該圖形中的一個孔的輪廓;包含關系確定步驟,用于確定圖形部分的第一輪廓,該輪廓與確定的第二輪廓有著包含關系并且存在于離孔最近處,其中該包含關系表示出第一輪廓包含第二輪廓;劃分步驟,用于把由包含關系確定裝置確定的第一輪廓所包圍的區域劃分成多邊形,其中該區域排除掉由該孔所包圍的部分,其中在該劃分步驟中,由包含關系確定裝置未確定的第一輪廓所包圍的整個區域也被劃分;以及側面生成步驟,用于移動含有該劃分區域的圖形部分的復本,并基于該復本的頂點以及原始圖形部分的頂點生成一個側平面。
全文摘要
形狀分析單元(4)經由輪廓數據獲取單元(2)接收存儲在輪廓數據存儲單元(3)內的二維輪廓數據,并從接收的二維輪廓數據判斷一個字符輪廓是否包含形成在該字符內的一個孔的輪廓。若是,頂部/底部劃分單元(5)把由這兩個輪廓包圍的區域劃分成凸多邊形。側面生成單元(6)在z軸方向上移動各個劃分結構元素以生成三維字符的側平面,并為該字符生成三維數據。
文檔編號G06T15/00GK1397049SQ01804107
公開日2003年2月12日 申請日期2001年12月3日 優先權日2000年12月5日
發明者望月義幸 申請人:松下電器產業株式會社