三维字符生成设备及三维图形数据生成设备的制作方法

文档序号:6465017阅读:441来源:国知局
专利名称:三维字符生成设备及三维图形数据生成设备的制作方法
技术领域
本发明涉及用于利用其轮廓线从展示字符的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日
发明者望月义幸 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1