三角多边形描绘装置和三角多边形描绘方法

文档序号:6401291阅读:127来源:国知局
专利名称:三角多边形描绘装置和三角多边形描绘方法
技术领域
本发明涉及在把作为计算机图形的图像显示到显示器上的技术领域中,把三角多边形分解成像素来描绘的三角多边形描绘装置和三角多边形描绘方法。
背景技术
图1A是用于说明现有的三角多边形描绘方法的图。该现有的三角多边形描绘方法已经在以下举出的文献中被披露,是通过反复进行边缘处理和间隔处理来生成像素的。
<文献>
“计算机图形学原理及实践第二版”(“Computer GraphicsPrinciples and Practice Second Edition”)pp.883-pp.885James D.Foley,Andries van Dam,Steven K.Feiner,John F.Hughes合著下面针对动作进行说明。
如图1B所示,该三角多边形描绘方法分为设置处理、边缘处理和间隔处理的3种处理。
首先,在设置处理中,针对像素的各种成分来计算图1A的左边缘、右边缘和间隔(右边缘和左边缘间的扫描线、当前间隔)的增量参数。所说的像素的各种成分,就是深度值(z)、色值(r,g,b,a)和纹理坐标(s,t)等。设置处理是针对1个三角多边形而只进行1次的。
下面,在边缘处理中,利用在设置处理中求得的边缘的增量参数,通过插值处理来计算出左边缘的像素P左和右边缘的像素P右。例如,左边缘的X坐标,按照下面的式子(1),就能通过在上次的X坐标X旧上加上ΔX左来进行计算。
X新=X旧+ΔX左...(1)间隔处理是通过插值处理来依次求出在由边缘处理中求得的左边缘的像素P左和右边缘的像素P右所夹持的扫描线方向的像素的。与边缘处理时一样,按照下面的式子(2),就能通过加上X方向增量参数来计算新的像素。
Pi=Pi-1+ΔPx...(2)通过从顶点V0到顶点V1反复进行上述的边缘处理和间隔处理,来生成构成三角多边形的所有的像素。
由于现有的三角多边形描绘装置和三角多边形描绘方法是如以上所述而构成的,在扫描线更新时计算出左边缘的像素(P左)的时候,就有了必须再次计算在像素中心点中的像素值(子像素收集)的课题。
子像素收集,在用于把边缘的像素值补正为像素的中心点值的处理中,用下面的式子(3)来表达。
P0=P左+(X0-X左)·ΔPx ...(3)其中,X0是像素的中心点的X坐标,ΔPx是X方向的像素增量参数,例如在Z的情况就成了Z0=Z左+(X0-X左)·ΔZx。从式子(3),就知道在子像素收集中,必须有一般比加法电路电路规模要大的乘法电路。由于子像素收集计算量比较大,所以扫描线更新的额外头信息就非常大,而且也增大了H/W的量。

发明内容
本发明的目的是为了解决上述的课题,使扫描线更新时的子像素收集变得不需要,而且提供能够在简单的控制下进行效率良好的三角多边形的描绘的三角多边形描绘方法。
本发明涉及的三角多边形描绘装置,具有三角形类型判别单元,从三角多边形的顶点坐标数据对应于主边缘的朝向和斜率,来对三角形的形状进行分类并决定像素的移动方向;像素描绘单元,根据三角形类型判别单元所决定的移动方向,从离三角多边形的形状的Y坐标最小点或者Y坐标最大点最近的起始像素开始按顺序,在向X方向插值像素并保存超越以主边缘为首的像素的同时,从主边缘开始直到次边缘为止移动像素来描绘三角多边形的1个扫描线,向Y方向插值保存了的像素并设为下面的扫描线的起始像素。
这样一来,就变得能够把三角多边形的形状分为4类并决定像素的移动方向,而且使运算量多的子像素收集不需要,有能够在简单的控制下高效率地描绘三角多边形的效果。
本发明涉及的三角多边形描绘方法,是从三角多边形的顶点坐标数据对应于主边缘的朝向和斜率,来对三角形的形状进行分类并决定像素的移动方向,根据决定了的移动方向,从离三角多边形的Y坐标最小顶点或者Y坐标最大顶点最近的起始像素开始按顺序,在向X方向插值像素并保存超越以主边缘为首的像素的同时,从主边缘开始直到次边缘为止移动像素来描绘三角多边形的1个扫描线,向Y方向插值保存了的像素并设为下面的扫描线的起始像素。
这样一来,就变得能够把三角多边形的形状分为4类并决定像素的移动方向,而且使运算量多的子像素收集不需要,有能够在简单的控制下高效率地描绘三角多边形的效果。


图1是用于说明现有的三角多边形描绘方法的图。
图2是表示根据本发明实施方式1的三角多边形描绘装置的结构的图。
图3是用于说明根据本发明实施方式1的三角多边形描绘装置的动作的图。
图4是用于说明在类型判别步骤中分为4类的三角多边形的形状的图。
图5是表示像素的描绘方向和被保存的像素的图。
图6是表示根据本发明实施方式2的三角多边形描绘装置的结构的图。
发明的
具体实施例方式
下面,为了更加详细的对本发明进行说明,针对用于实施本发明的最好的方式,按照附图来进行说明。
实施方式1图2是表示根据本发明实施方式1的三角多边形描绘装置的结构的图。
在图2中,1是从三角多边形的顶点数据开始计算增量参数的参数计算单元,2是从参数计算单元1开始把三角多边形的形状分为4类的三角形类型判别单元,3是从参数计算单元1开始计算起始像素的起始像素计算单元,4是对应于三角形类型判别单元2的判别结果使像素向X方向或者Y方向移动的像素移动单元(像素描绘单元),5是对应于像素移动单元4来插值像素值的像素插值单元(像素描绘单元)。
下面针对动作进行说明。
图3是用于说明根据本发明实施方式1的三角多边形描绘装置的动作(三角多边形描绘方法)的图。
在图3A中,首先在顶点排序步骤ST1中,参数计算单元1进行三角形顶点的排序。在该排序中,把Y坐标为最小的顶点(Y坐标最小顶点)设为V0(X0,Y0),把Y坐标为最大的顶点(Y坐标最大顶点)设为V1(X1,Y1),把剩余的顶点设为V2(X2,Y2)(参见图3B)。另外,在这里把左上假设为X-Y坐标系的原点O。
在下面的参数计算步骤ST2中,参数计算单元1是针对像素的各种成分从三角多边形的顶点数据V0、V1、V2开始来计算X方向和Y方向的增量参数的。所说的像素的各种成分,就是深度值(Z)、色值(R,G,B,A)和纹理坐标(U,V)等。例如,假设把顶点V0、V1、V2的Z值分别设为z1、z2、z3,则Z成分的X方向增量参数dZdx和Y方向增量参数dZdy利用平面方程式在下面的式子(4)、式子(5)中就可被计算。
dZdx={(y1-y0)·(z2-z1)-(z1-z0)·(y2-y1)}/C ...(4)dZdy={(z1-z0)·(x2-x1)-(x1-x0)·(z2-z1)}/C ...(5)其中,式子(4)、式子(5)的符号C是三角形V0V1V2的外积,用下面的式子(6)表示。
C=(x2-x0)·(y1-y0)-(x1-x0)·(y2-y0) ...(6)同样地,在参数计算步骤ST2中,参数计算单元1为了进行像素在边缘的哪一侧的判定,也进行边缘函数的X方向和Y方向的增量参数的计算。边缘函数是针对主边缘、次边缘0、次边缘1来计算的。
转去进行类型判别步骤ST3时,三角形类型判别单元2,利用在参数计算步骤ST2中计算出的外积C的符号等,按下面的图4所示,把三角多边形的形状分为4类。
图4是用于说明在类型判别步骤中分为4类的三角多边形的形状的图。4类的三角多边形变成了下面的形状。
图4A的三角多边形类型1·主边缘在左侧·顶点V0的X坐标比顶点V1的X坐标小图4B的三角多边形类型2
·主边缘在左侧·顶点V0的X坐标比顶点V1的X坐标大图4C的三角多边形类型3·主边缘在右侧·顶点V0的X坐标比顶点V1的X坐标小图4D的三角多边形类型4·主边缘在右侧·顶点V0的X坐标比顶点V1的X坐标大也就是说,从主边缘的朝向和斜率来把三角多边形分类?判别为4类,按如下所示,为了决定像素的X方向和Y方向的移动方向而进行着。各三角多边形的种类和像素的移动方向(用图4A~图4D中的箭头表示)的对应如下所述。
图4A的三角多边形类型1从顶点V0向右下方(+Y方向和+X方向)进行矢量的移动图4B的三角多边形类型2从顶点V1向右上方(-Y方向和+X方向)进行矢量的移动图4C的三角多边形类型3从顶点V1向左上方(-Y方向和-X方向)进行矢量的移动图4D的三角多边形类型4从顶点V0向左下方(+Y方向和-X方向)进行矢量的移动在起始像素计算步骤ST4中,使用在参数计算步骤ST2计算出的增量参数,起始像素计算单元3进行起始像素的计算(参见图3C)。起始像素计算离顶点V0或者顶点V1最近的像素的中心点的各成分值(子像素收集)。例如,Z成分的起始像素用下面的式子(7)进行计算。另外,其中px0、py0分别是起始像素的X坐标和Y坐标,而且都是整数值。
Z开始=z0+(px0-x0)·dZdx+(py0-y0)·dZdy ...(7)在下面的步骤ST5和步骤ST6中,向X方向插值(步骤ST6,参见图3D)直到当前像素超越主边缘为止(在步骤ST5变为否的时间段)。X方向的朝向由在类型判别步骤ST3求出的结果来决定。插值处理是通过加上在步骤ST2计算的X方向增量参数来进行的。例如,Z成分的插值处理用下面的式子(8)来计算。
Z新=Z当前+dZdx...(8)如果像素超越了主边缘(当在步骤ST5变为是),把该像素的各成分值保存(saving of)为M(步骤ST7)。该被保存的像素M是用于向下面的扫描线处理移动的像素。
图5是表示像素的描绘方向和被保存的像素的图。在图5中,画上圆圈的像素表示着被保存的像素M。另外,是否超越主边缘的判断能够用边缘函数的符号判定来简单地进行。
在步骤ST8、步骤ST9、步骤ST10中,向X方向插值来进行生成了的像素的描绘(步骤ST9、步骤ST10,参见图3E)直到当前像素超越次边缘0或者次边缘1(在步骤ST8变为否的时间段)。X方向的朝向由在类型判别步骤ST3求出的结果来决定。插值处理是通过加上在步骤ST2计算的X方向增量参数来进行的。通过这些步骤就能够进行相当于1扫描线的量的像素的生成和描绘。
当当前像素超越次边缘(在步骤ST8变为是)而转向进行步骤ST11时,在步骤ST7恢复保存了的像素M,把像素M设为当前像素。而且,在步骤ST12和步骤ST13中如果该当前像素的Y坐标没有超越Y1,则进行Y方向的插值(参见图3F)。Y方向的朝向由在类型判别步骤ST3求出的结果来决定。插值处理是通过加上在步骤ST2计算的Y方向增量参数来进行的。例如,Z成分的插值处理用下面的式子(9)来计算。
Z新=Z当前+dZdy ...(9)另外,由于如果当前像素的Y坐标超越了Y1(在步骤ST13变为是)时,针对所有的扫描线描绘都已完毕,于是就结束三角形的描绘。
这样,对应于图4的三角多边形的分类来决定像素的移动方向,从离顶点V0或者顶点V1最近的起始像素开始向X方向进行插值。以主边缘为首超越的像素M进行保存,在X方向进行像素的插值·描绘处理直到超越次边缘0或者次边缘1为止。
而且,在扫描线更新时,恢复像素M并向Y方向插值,在下面的扫描线里,从该插值了的像素M向X方向进行插值。因此,当向下面的扫描线移动时,插值了的像素M必须成为三角多边形的外侧,并面向主边缘向X方向被插值。反之,当向Y方向插值像素M时则必须成为三角多边形的外侧,以面向主边缘在X方向被插值的方式,来决定图4的分类、起始像素和X、Y方向的移动方向。
下面,通过从超过以主边缘为首开始到超过次边缘为止,反复进行向X方向的像素的插值·描绘(直到超越顶点V1或者顶点V0的Y坐标为止反复进行插值·描绘),以使扫描线更新时只进行简单的加法运算就可以解决的方式,就能够控制住计算量,并能够使扫描线更新的额外头信息的变小(能够减小H/W的量)。
综上所述,根据实施方式1,由于具有从三角多边形的顶点V0、顶点V1和顶点V2开始,针对关于像素的各种成分的X方向和Y方向的增量参数来计算的参数计算单元1(参数计算步骤);对应于主边缘的朝向和斜率来把三角多边形的形状分为4类并决定像素移动方向的三角形类型判别单元2(三角形类型判别步骤);计算离顶点V0或者顶点V1最近的起始像素的各种成分的起始像素计算单元3(起始像素计算步骤);从起始像素开始按顺序,在向X方向插值像素并保存超越以主边缘为首的像素M的同时,从主边缘到次边缘0或者次边缘1插值像素来进行三角多边形的1个扫描线的描绘,向Y方向插值保存了的像素M并设为下面的扫描线的起始像素的像素移动单元4和像素插值单元5(像素描绘步骤),所以就能够以使把三角多边形的形状分为4类并决定像素的移动方向的方式,来使运算量多的子像素收集变得不需要,并能取得在简单的控制下能够高效率地描绘三角多边形的效果。
此外,根据实施方式1,由于当三角形类型判别单元判别是主边缘在左侧,Y坐标最小顶点的X坐标比Y坐标最大顶点的X坐标小的三角多边形时,像素描绘单元,从离Y坐标最小顶点最近的起始像素开始按顺序,向+X方向和+Y方向移动像素来描绘,所以就变得能够对应于三角多边形的形状来决定向素的移动方向,能够使运算量多的子像素收集变得不需要,并能取得在简单的控制下能够高效率地描绘三角多边形的效果。
进而,根据实施方式1,由于当三角形类型判别单元判别是主边缘在左侧,Y坐标最小顶点的X坐标比Y坐标最大顶点的X坐标大的三角多边形时,像素描绘单元,从离Y坐标最大顶点最近的起始像素开始按顺序,向+X方向和-Y方向移动像素来描绘,所以就变得能够对应于三角多边形的形状来决定向素的移动方向,能够使运算量多的子像素收集变得不需要,并能取得在简单的控制下能够高效率地描绘三角多边形的效果。
进而,根据实施方式1,由于当三角形类型判别单元判别是主边缘在右侧,Y坐标最小顶点的X坐标比Y坐标最大顶点的X坐标小的三角多边形时,像素描绘单元,从离Y坐标最大顶点最近的起始像素开始按顺序,向-X方向和-Y方向移动像素来描绘,所以就变得能够对应于三角多边形的形状来决定向素的移动方向,能够使运算量多的子像素收集变得不需要,并能取得在简单的控制下能够高效率地描绘三角多边形的效果。
进而,根据实施方式1,由于当三角形类型判别单元判别是主边缘在右侧,Y坐标最小顶点的X坐标比Y坐标最大顶点的X坐标大的三角多边形时,像素描绘单元,从离Y坐标最小顶点最近的起始像素开始按顺序,向-X方向和+Y方向移动像素来描绘,所以就变得能够对应于三角多边形的形状来决定向素的移动方向,能够使运算量多的子像素收集变得不需要,并能取得在简单的控制下能够高效率地描绘三角多边形的效果。
实施方式2图6是表示根据本发明实施方式2的三角多边形描绘装置的结构的图。与图2相同的符号是相同或者相当的结构。
在图6中,6是像素移动方向事先判断单元(像素描绘单元),通过事先进行像素的三角多边形内部或者外部的判定,来预先决定像素的移动方向。
该实施方式2的动作是与实施方式1基本相同的动作,只有通过事先计算边缘函数的值,来预先决定像素的移动方向这点不同。也就是说,不是同时进行边缘函数的加法运算和像素(例如Z值)的加法运算,而是能够预先(例如提前1个时钟脉冲)处理边缘函数的加法运算,能够预先进行是否超越次边缘的判定。
由于不沿着边缘进行插值处理,而以1像素单位进行像素的移动和插值,所以每次扫描线更新的子像素收集就变得不需要。因此,复杂的运算处理就变得不需要,不但能够提高描绘速度,还能减少H/W的量。
综上所述,根据实施方式2,由于具有事先计算边缘函数的值并事先进行像素的三角多边形内部或者外部的判定,预先决定像素的移动方向的像素移动方向事先判断单元6,所以在X方向和Y方向中像素的无用的加法运算处理(超越了次边缘的像素等)就变得不需要,还能够取得提高描绘效率的效果。
综上所述,本发明所涉及的三角多边形描绘装置和三角多边形描绘方法,适用于实施在简单的控制下进行高效率的描绘的图像显示。
权利要求
1.一种把三角多边形分解成像素来描绘的三角多边形描绘装置,其特征在于,具有三角形类型判别单元,从三角多边形的顶点坐标数据对应于主边缘的朝向和斜率,来对上述三角形的形状进行分类并决定上述像素的移动方向;像素描绘单元,根据上述三角形类型判别单元所决定的移动方向,从离上述三角多边形的形状的Y坐标最小点或者上述Y坐标最大点最近的起始像素开始按顺序,在向X方向插值上述像素并保存超越以主边缘为首的上述像素的同时,从上述主边缘开始直到次边缘为止移动上述像素并描绘上述三角多边形的1个扫描线,向Y方向插值上述保存了的像素并设为下面的扫描线的起始像素。
2.如权利要求1所述的三角多边形描绘装置,其特征在于,当三角形类型判别单元判别是主边缘在左侧,Y坐标最小顶点的X坐标比Y坐标最大顶点的X坐标小的三角多边形时,像素描绘单元,从离Y坐标最小顶点最近的起始像素开始按顺序,向+X方向和+Y方向移动像素来描绘。
3.如权利要求1所述的三角多边形描绘装置,其特征在于,当三角形类型判别单元判别是主边缘在左侧,Y坐标最小顶点的X坐标比Y坐标最大顶点的X坐标大的三角多边形时,像素描绘单元,从离Y坐标最大顶点最近的起始像素开始按顺序,向+X方向和-Y方向移动像素来描绘。
4.如权利要求1所述的三角多边形描绘装置,其特征在于,当三角形类型判别单元判别是主边缘在右侧,Y坐标最小顶点的X坐标比Y坐标最大顶点的X坐标小的三角多边形时,像素描绘单元,从离Y坐标最大顶点最近的起始像素开始按顺序,向-X方向和-Y方向移动像素来描绘。
5.如权利要求1所述的三角多边形描绘装置,其特征在于,当三角形类型判别单元判别是主边缘在右侧,Y坐标最小顶点的X坐标比Y坐标最大顶点的X坐标大的三角多边形时,像素描绘单元,从离Y坐标最小顶点最近的起始像素开始按顺序,向-X方向和+Y方向移动像素来描绘。
6.如权利要求1所述的三角多边形描绘装置,其特征在于,像素描绘单元,事先进行像素的三角多边形内部或者外部的判定,预先决定像素的移动方向。
7.一种把三角多边形分解成像素来描绘的三角多边形描绘方法,其特征在于,从三角多边形的顶点坐标数据对应于主边缘的朝向和斜率,来对上述三角形的形状进行分类并决定上述像素的移动方向,根据上述决定了的移动方向,从离上述三角多边形的Y坐标最小顶点或者上述Y坐标最大顶点最近的起始像素开始按顺序,在向X方向插值上述像素并保存超越以主边缘为首的上述像素的同时,从上述主边缘开始直到次边缘为止移动上述像素来描绘上述三角多边形的1个扫描线,向Y方向插值上述保存了的像素并设为下面的扫描线的起始像素。
全文摘要
具有参数计算单元(1),从顶点(V0~V2)计算各增量参数;三角形类型判别单元(2),对应于主边缘的朝向、斜率来把三角多边形的形状分类并决定移动方向;起始像素计算单元(3),计算起始像素的各种成分;像素移动单元(4)、像素插值单元(5),在从起始像素向X方向插值并保存超越以主边缘为首的像素(M)的同时,从主边缘开始直到次边缘为止插值像素来描绘三角多边形的1个扫描线,向Y方向插值保存了的像素并设为下面的扫描线的起始像素。
文档编号G06T11/40GK1543627SQ0380077
公开日2004年11月3日 申请日期2003年6月3日 优先权日2002年6月3日
发明者加藤义幸, 鸟居晃 申请人:三菱电机株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1