信息处理装置的制作方法

文档序号:6352253阅读:105来源:国知局
专利名称:信息处理装置的制作方法
技术领域
本发明涉及3维图像的绘制的技术,特别是涉及减轻在3维图像的绘制处理时进行的几何运算,除法演算的处理,不具有FPU(浮点运算组件)的信息处理装置,涉及即使在CPU的处理能力较低的信息处理装置中,仍可进行3维图形的绘图处理的技术。
背景技术
在绘制3维图形的场合,信息处理终端进行以下处理(1)挪动3维的物体的坐标变换运算(Transformation);(2)考虑光从光源(比如太阳等)与物体接触,计算向阳的部分和背阴的部分的光源计算处理(Lighting);(3)将物体分割为称为“点(dot)”的柱形图处理(光栅化处理(rasterize));(4)在该柱形图中贴入纹理(模样)(纹理映射)通常,信息处理装置主体的CPU承担(1)与(2)的几何运算的作业,采用CPU的FPU(浮点运算组件)进行处理。
另外,(3)与(4)的光栅化(rasterize)的处理通常由3D图形加速器进行。
但是,(1)和(2)的几何演算的作业采用CPU的FPU(浮点运算组件)而进行,而设计FPU的目的在于不仅进行几何演算,而且一般进行浮点计算,另外CPU还进行其它的处理,不必适合绘制3维图形的处理。
于是,还出现了按照通过图形芯片进行几何演算的方式设计的(即,内部设置有几何发生器)3D图形加速器,其除了实现降低CPU的负荷率的处理以外,与通过CPU进行处理的相比较,比什么都可使几何运算的性能大幅度地提高,即,可使3D的绘图性能提高。
但是,3D图形加速器的价格较高,并不是所有的信息处理装置都配备。
此外,在信息处理装置中,也有下述类型,即,如便携电话,PDA(Personal Digital(Data)Assistants)这样的,不仅不具有3D图形加速器,也不具有FPU(浮点演算机构)的类型。
在这样的信息处理装置中,一般,CPU的能力也较低,3D图形不适合。
还有,除法演算处理的速度大大低于乘法演算处理,为了高速地进行演算处理,最好尽可能地减小除法演算。
于是,本发明的目的在于提供下述技术,其中,在3维图形的绘制的处理时进行的几何演算中,通过进行整数运算处理,即使在不具有FPU(浮点演算机构)的信息处理装置中,仍可进行3维图形的绘制。
本发明的另一目的在于提供下述技术,其中,在光栅化(rasterize)处理时,在不进行除法演算的情况下,进行光栅化(rasterize)处理,由此即使在处理能力较低的CPU的信息处理装置中,仍可高速地进行3维图形的绘制。
发明的公开实现上述目的的第1项发明涉及一种信息处理装置,在该信息处理装置中,在进行3维图像的绘制的光栅化(rasterize)处理时,计算相对连接2维平面上的点P1(x1,y1)和P2(x2,y2)的直线的y坐标的x坐标的变化量ΔxΔx=x2-x1y2-y1]]>其特征在于该信息处理装置包括存储器,该存储器按照与y坐标的变化量相关的方式,存储有通过下述公式表示的常数μμ=λy2-y1]]>运算机构,该运算机构在对上述Δx进行运算时,从存储器中读取与上述y坐标的变化量相对应的μ,通过乘法运算,对下述公式进行运算,将该结果作为Δx,进行运算。
Δx′=μ*(x2-x1)实现上述目的的第2项发明涉及第1项发明,其特征在于其还包括下述机构,其中,上述λ限定为2n(n≥1),通过对上述计算的Δx’进行n位右移位,进行Δx的运算。
实现上述目的的第3项发明涉及上述第1,2项发明,其特征在于其还包括存储器,在坐标值限定为整数,将坐标(x,y,z)t通过下述式x′y′z′=Axyz+t1t2t3]]>表示的仿射变换,变换为坐标(x’,y’,z’)t场合,该存储器存储有仿射变换的矩阵A=a11a12a13a21a22a23a31a32a33]]>与λ(≠0)相乘而形成的矩阵A′=a′11a′12a′13a′21a′22a′23a′31a′32a′33=λA=λa11λa12λa13λa21λa22λa23λa31λa32λa33]]>矩阵(t1,t2,t3)t和形状数据;运算机构,该运算机构在通过矩阵A和矩阵(t1,t2,t3)t的仿射变换,将上述形状数据的坐标(x,y,z)t,变换为坐标(x’,y’,z’)t时,通过上述存储器,读取矩阵A’和矩阵(t1,t2,t3)t,对下述式进行运算,由此对坐标(x’,y’,z’)t进行运算。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3实现上述目的的第4项发明涉及上述第3项发明,其特征在于上述λ限定为2n(n≥1);上述运算机构为,通过对下述式的除法运算的结果进行n位右移位的方式进行运算的机构。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3实现上述目的的第5项发明涉及第4项发明,其特征在于上述运算机构为通过在将各被除数与常数λ/2相加后,对其n位移位的方式进行运算的机构。
实现上述目的的第6项发明涉及第3,4,5项发明,其特征在于其包括合成机构,该合成机构对预先乘以λ(≠0)的2个以上的参数进行合成。
实现上述目的的第7项发明涉及一种3维图像的绘制处理方法,该方法计算在进行3维图像的绘制的光栅化(rasterize)处理时的,连接2维平面上的点P1(x1,y1)和P2(x2,y2)的直线的,由下述公式表示的,相对y坐标的x坐标的变化量ΔxΔx=x2-x1y2-y1;]]>其特征在于该方法包括读取步骤,在该读取步骤中,在对Δx进行运算时,从存储器中,读取所运算的Δx与y坐标的变化量相对应的常数μ,该存储器对应于y坐标的变化量,存储有由下述公式表示的常数μμ=λy2-y1;]]>运算步骤,在该运算步骤中,根据上述已读取的常数μ,通过乘法运算,对下述公式进行运算,将该结果作为Δx进行运算。
Δx′=μ*(x2-x1)实现上述目的的第8项发明涉及第7项发明,其特征在于该方法还包括下述步骤,即,将上述λ限定为2n(n≥1),对该计算出的Δx’进行n位右移位,对Δx进行运算。
实现上述目的的第9项发明涉及第7,或8项发明,其特征在于在将坐标值限定为整数,将坐标(x,y,z)t通过下述式x′y′z′=Axyz+t1t2t3]]>表示的仿射变换,变换为坐标(x’,y’,z’)t时,该信息处理方法包括下述步骤读取步骤,该读取步骤读取参数A’和矩阵(t1,t2,t3)t,该参数A’是在下述场合,将存储于存储器中的,矩阵A与λ(≠0)相乘而得到的,该场合指通过矩阵A和(t1,t2,t3)t的仿射变换,将形状数据的坐标(x,y,z)t变换为(x’,y’,z’)t,该A’表示为A′=a′11a′12a′13a′21a′22a′23a′31a′32a′33=λA=λa11λa12λa13λa21λa22λa23λa31λa32λa33;]]>
运算步骤,在该运算步骤中,根据上述已读取的矩阵A’和矩阵(t1,t2,t3)t,对下述式进行运算,对坐标(x’,y’,z’)t进行运算。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3实现上述目的的第10项发明涉及第9项发明,其特征在于将上述λ限定为2n(n≥1);上述运算步骤为通过对下述式的除法运算的结果进行n位右移位,由此对坐标(x’,y’,z’)t进行运算的步骤。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3实现上述目的的第11项发明涉及第10项发明,其特征在于其还包括在进行n位右移位之前,将各被除数与常数λ/2进行加法运算的步骤。
实现上述目的的第12项发明涉及9,10,11项发明,其特征在于还包括将预先乘以λ(≠0)的2个以上的参数合成的步骤。
实现上述目的的第13项发明涉及一种程序,该程序在信息处理装置中,进行下述运算处理,该运算处理计算在进行3维图像的绘制的光栅化(rasterize)处理时的,连接2维平面上的点P1(x1,y1)和P2(x2,y2)的直线的,由下述公式表示的,相对y坐标的x坐标的变化量ΔxΔx=x2-x1y2-y1;]]>其特征在于该程序在信息处理装置中包括读取步骤,在该读取步骤中,对Δx进行运算时,从上述存储器中,读取所运算的Δx与y坐标的变化量相对应的常数μ,该存储器对应于y坐标的变化量,存储有由下述公式表示的常数μμ=λy2-y1;]]>运算步骤,在该运算步骤中,根据上述已读取的常数μ,通过乘法运算,对下述公式进行运算,将其结果作为Δx,进行运算。
Δx′=μ*(x2-x1)实现上述目的的第14项发明涉及程序,该程序涉及第13项发明,其特征在于该程序还包括下述步骤,即,在信息处理装置中,将上述λ限定为2n(n≥1),对该计算出的Δx’进行n位移位,对Δx进行运算。
实现上述目的的第15项发明涉及程序,该程序涉及第13,14项发明,其特征在于在信息处理装置中,将坐标值限定为整数,将坐标(x,y,z)t通过下述式x′y′z′=Axyz+t1t2t3]]>表示的仿射变换,变换为坐标(x’,y’,z’)t进行变换处理时,该程序包括下述步骤读取步骤,该读取步骤读取参数A’和矩阵(t1,t2,t3)t,该参数A’是在下述场合,将存储于存储器中的,矩阵A与λ(≠0)相乘而得到的,该场合指通过矩阵A和(t1,t2,t3)t的仿射变换,将形状数据的坐标(x,y,z)t变换为(x’,y’,z’)t,该A’表示为A′=a′11a′12a′13a′21a′22a′23a′31a′32a′33=λA=λa11λa12λa13λa21λa22λa23λa31λa32λa33;]]>运算步骤,在该运算步骤中,根据上述已读取的矩阵A’和矩阵(t1,t2,t3)t,对下述式进行运算,由此对坐标(x’,y’,z’)t进行运算。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3实现上述目的的第16项发明涉及程序,该程序涉及第15项发明,其特征在于上述λ限定为2n(n≥1);上述运算步骤为,通过对下述式进行除法运算的结果进行n位右移位,由此对坐标(x’,y’,z’)t进行运算的步骤。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3实现上述目的的第17项发明涉及程序,该程序涉及第16项发明,其特征在于该程序还包括在信息处理装置中,在进行n位移位之前,将各被除数与常数λ/2进行加法运算的步骤。
实现上述目的的第18项发明涉及程序,该程序涉及15,16,17项发明,其特征在于还包括在信息处理装置中,将预先乘以λ(≠0)的2个以上的参数合成的步骤。
实现上述目的的第19项发明涉及一种记录媒体,该记录媒体存储有下述程序,在该程序中,计算在进行3维图像的绘制的光栅化(rasterize)处理时的,连接2维平面上的点P1(x1,y1)和P2(x2,y2)的直线的,由下述公式表示的,相对y坐标的x坐标的变化量ΔxΔx=x2-x1y2-y1;]]>其特征在于上述程序在信息处理装置中还包括下述步骤读取步骤,在该读取步骤中,在对Δx进行运算时,从存储器中,读取所运算的Δx与y坐标的变化量相对应的常数μ,该存储器对应于y坐标的变化量,存储有由下述公式表示的常数μμ=λy2-y1;]]>运算步骤,在该运算步骤中,根据上述已读取的常数μ,通过乘法运算,对下述公式进行运算,将该结果作为Δx进行运算。
Δx′=μ*(x2-x1)实现上述目的的第20项发明涉及记录媒体,该记录媒体涉及第19项发明,其特征在于上述程序还包括在信息处理装置中,将上述λ限定为2n(n≥1),对该计算出的Δx’进行n位移位,对Δx进行运算的步骤。
实现上述目的的第21项发明涉及记录媒体,该记录媒体涉及第19或20项发明,其特征在于在信息处理装置中,将坐标值限定为整数,将坐标(x,y,z)t通过下述式x′y′z′=Axyz+t1t2t3]]>表示的仿射变换,变换为坐标(x’,y’,z’)t时,上述程序包括下述步骤读取步骤,该读取步骤读取参数A’和矩阵(t1,t2,t3)t,该参数A’是在下述场合,将存储于存储器中的,矩阵A与λ(≠0)相乘而得到的,在该场合,通过矩阵A和(t1,t2,t3)t的仿射变换,将形状数据的坐标(x,y,z)t变换为(x’,y’,z’)t,该A’表示为A′=a′11a′12a′13a′21a′22a′23a′31a′32a′33=λA=λa11λa12λa13λa21λa22λa23λa31λa32λa33;]]>运算步骤,在该运算步骤中,根据上述已读取的矩阵A’和矩阵(t1,t2,t3)t,对下述式进行运算,由此对坐标(x’,y’,z’)t进行运算。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3实现上述目的的第22项发明涉及记录媒体,该记录媒体涉及第21项发明,其特征在于将上述λ限定为2n(n≥1),上述运算步骤为,对下述式进行除法运算的结果进行n位右移位,对坐标(x’,y’,z’)t进行运算的步骤。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3实现上述目的的第23项发明涉及记录媒体,该记录媒体涉及第22项发明,其特征在于上述程序还包括在上述信息处理装置中,在进行上述n位右移位之前,将各被除数与常数λ/2进行加法运算的步骤。
实现上述目的的第24项发明涉及记录媒体,该记录媒体涉及第21,22,23项发明,其特征在于上述程序还包括在信息处理装置中,将预先乘以λ(≠0)的2个以上的参数合成的步骤。


图1为便携终端的方框图,图2为表示3维图形的基本绘图动作的流程图,图3为进一步具体地表示在模型物体中,作为绘图步骤的步骤106的动作的流程图。
用于实施本发明的优选形式下面对用于实施本发明的优选形式进行描述。
首先,采用作为本发明的特征的信息处理装置的整数的几何运算,以及不采用除法的三角形光栅化处理(rasterize)进行描述。
(整数的几何运算)1.仿射变换的坐标变换当通过下述形式,表示从坐标(x,y,z)t,朝向坐标(x’,y’,z’)t的仿射变换时,A=a11a12a13a21a22a23a31a32a33---1]]>x′y′z′=Axyz+t1t2t3---2]]>则在通过C语言的数值运算,计算x’,y’,z’的场合,满足x′=a11*x+a12*y+a13*z+t1y′=a21*x+a22*y+a23*z+t2z′=a31*x+a32*y+a33*z+t3但是,全部的数值取无限的范围和精度。
在通过有限范围的整数,进行坐标计算的场合,计算精度和运算的外溢成为问题。
就外溢来说,如果限制上述坐标的范围,则不产生问题,但是,当计算精度在将绝对值较小的实数化为整数时(通过包括小数的数值等,将必要的右端的位的下一位的值进行四舍五入等处理,缩小数值。除了四舍五入以外,还具有加上小数点以后的零数,舍去小数点以后的零数等的场合),相对误差较大。特别是,矩阵A的成分的绝对值小于1的场合非常多,在将该数值化为整数的场合,与所期待的结果之间有较大差异。
于是,当将矩阵A的成分化为整数时,为了尽可能地减少相对误差,预先将λ(≠0)与矩阵A的成分相乘。A′=a′11a′12a′13a′21a′22a′23a′31a′32a′33=λA=λa11λa12λa13λa21λa22λa23λa31λa32λa33---3]]>在通过该矩阵A’进行坐标变换时,按如下进行计算。x′y′z′=1λA′xyz+t1t2t3---4]]>在通过C语言的数值运算,计算x’,y’,z’的场合,则满足以下条件,但是,全部的数值型为整数。
x′=(a′11*x+a′12*y+a′13*z)/λ+t1y′=(a′21*x+a′22*y+a′23*z)/λ+t2z′=(a′31*x+a′32*y+a′33*z)/λ+t3同样在这样的计算中,仍为整数计算,不必进行浮点运算,但是,为了高速化而进行的避免整数除法,将λ限定为2n(n≥1),λ’=log2λ,按照下述公式,x′=((a′11*x+a′12*y+a′13*z)>>λ′)+t1;y′=((a′21*x+a′22*y+a′23*z)>>λ′)+t2;z′=((a′31*x+a′32*y+a′33*z)>>λ′)+t3;按照算术右移位,进行与除法基本相同的运算。
另外,在将算术右移位作为整数除法的场合,由于化成整数朝向-∞方向,故按照下述公式,x′=((a′11*x+a′12*y+a′13*z+λ/2)>>λ′)+t1;y′=((a′21*x+a′22*y+a′23*z+λ/2)>>λ′)+t2;z′=((a′31*x+a′32*y+a′33*z+λ/2)>>λ′)+t3;在进行算术右移位之前,添加常数λ/2,进行误差修正。
下面通过具体的实例进行描述,比如,考虑对坐标(111,222,333)t的点进行仿射变换的场合。
如果上述公式2中的矩阵A和t(t1,t2,t3)t为A=0.8901408311-0.32139948750.323009130.38570729370.9088972746-0.1585421959-0.24265033360.26572187280.9330127019]]>t=856387973]]>则通过实数计算的场合的公式2的结果为x′y′z′=0.8901408311-0.32139948720.323009130.38570729370.9088972746-0.1585421959-0.24265033360.26572187280.9330127019111222333856387973]]>≈991.0256314578.02563141315.749298]]>在这里,如上所述,如果采用本发明的仿射变换,则在λ=4096(212)的场合,矩阵A’为A′=3646-1316132315803723-649-99410883822]]>在采用上述矩阵A’,矩阵t(t1,t2,t3)t的仿射变换通过C语言的式表示时,则int x,y,z;x=((3346*111+-1316*222+1323*333+4096/2)>>12)+856;y=((1580*111+3723*222+-649*333+4096/2)>>12)+387;z=((-994*111+1088*222+3822*333+4096/2)>>12)+973;该计算结果为(991,579,1316)t,得到基本与上述实数的运算结果基本相同的结果。
在信息处理装置的实际处理中,将λ与矩阵A相乘而得到的矩阵A’,与矩阵t(t1,t2,t3)t作为参数而存储于信息处理装置的存储器中,进行仿射变换的坐标变换,此时,从存储器中读取与相应的矩阵A相对应的矩阵A’,以及矩阵t(t1,t2,t3)t,根据该读取的矩阵A’,针对每个元素,进行运算。另外,对该结果与λ/2的和,进行常数λ’次右移处理位,将该结果与矩阵t(t1,t2,t3)t相加,计算坐标。
2.仿射变换的合成2个仿射变换f,g(变换参数)分别为f(p)=Ap+u ...5g(p)=Bp+v ...6这2个变换的合成gof为gof(p)=BAp+Bu+v...7当A’=λA,B’=λB时,gof(p)=1λ2B′A′p+1λB′u+v---8]]>M=1λB′A′---9]]>t=1λB′u+v---10]]>则公式8变为gof(p)=1λMp+t---11]]>上述公式11的右边与公式4的右边为相同的形式。A′=a11a12a13a21a22a23a31a32a33,u=u1u2u3---12]]>B′=b11b12b13b21b22b23b31b32b33,v=v1v2v3---13]]>M=m11m12m13m21m22m23m31m32m33,t=t1t2t3---14]]>
在通过C语言的数值运算,计算M与t的成分的场合,则对于for(i=1;i<=3;i++){for(j=1;j<=3;j++)mij=(bi1*a1j+bi2*a2j+bi3*a3j+λ/2)/λ;ti=(bi1*u1+bi2*u2+bi3*u3)/λ+νi;}将λ限定为2n(n≥1),对于λ’=log2λ,通过整数对全部的整数型进行计算时,对于for(i=1;i<=3;i++){for(j=1;j<=3;j++)mij=(bi1*a1j+bi2*a2j+bi3*a3j+λ/2)>>λ′;ti=((bi1*u1+bi2*u2+bi3*u3+λ/2)>>λ′)+νi;}通过该方法,可实现预先乘以λ的仿射变换的合成。
下面通过具体的实例进行描述,比如,A=038805527696-0.40838718640.24134630.35996263350.90637919780.2211417016-0.308307837-0.10815107530.9451188401]]>B=0.77647622770.61978563240.1137999896-0.5272930370.7379376463-0.4212007637-0.34503147810.2670464380.8997996883]]>u=123231312]]>v=345543435]]>当λ=4096时,则λBA≈3570.657414951.70670911766.883123-281.88618423808.232933-1481.593097-1986.9981911169.9710533385.294954]]>Bu+v≈619.1826538517.1919145734.9863581]]>将λA与λB的元素化为最近整数值的矩阵为A′=3607-167398514743713906-1263-4433871]]>B′=31802539466-21603023-1725-141310943686]]>因此,在通过上述的数学公式,计算矩阵M与矩阵t时,则M=35709521767-2823809-1481-198711703386]]>t=619517735]]>就这样,可获得与如上所述进行计算的λBA≈3570.657414951.70670911766.883123-281.88618423808.232933-1481.593097-1986.9981911169.9710533385.294954]]>Bu+v≈619.1826538517.1919145734.9863581]]>基本相同的值。
(不采用除法的三角形光栅化处理(rasterize))在计算直线上的x坐标的变化量的场合,2维平面上的点P1的坐标表示为(x1,y1),点P2的坐标表示为(x2,y2)。当y1≠y2时,则相对连接P1与P2的直线的y坐标的x坐标的变化量为Δx=x2-x1y2-y1---15]]>在Δx’=λΔx,通过C语言的数值运算,计算Δx’的场合,则Δx′=λ*(x2-x1)/(y2-y1);另外,μ=λy2-y1]]>此时,Δx′=μ*(x2-x1);象这样,形成乘法的形式。
在仅通过整数进行计算的场合,如果|λ|充分大,|y2-y1|某种程度小,则化为整数的相对误差变小。
于是,如果λ为常数,限制y坐标的范围,则可根据预先配备的较少的排列,获得μ。即,使μ与|y2-y1|相对应,将其预先存储于信息处理装置的存储器中。另外,如果将该|y2-y1|作为指数,读取μ,计算,Δx′=μ*(x2-x1)则可仅通过乘法,求出与Δx基本相同的值Δx’。
另外,如果将λ限制为2n(n≥1),则可通过算术右移位,计算Δx。
于是,在完全不使用除法的情况下,计算x坐标的变化量Δx。
此外,因相同的原因,纹理坐标也不必要求乘法。
作为具体的实例,对λ=65536,坐标(10,20)的开始点P1与坐标(85,120)的开始点P2的线段的实例进行描述。
相对该线段的y坐标的x坐标的变化量为Δx=85-10120-20=0.75]]>
则Δx′=λx=49152.0。
在不采用除法,仅仅通过整数,对Δx’进行计算的场合,如上述那样,将120-20=100作为指数,从存储器中,读取相应的μ。
在此场合,μ=λ120-20≈655]]>则Δx′=μ×(85-10)=49125。于是,可获得与采用除法的Δx’=λx=49152.0基本相同的值。
下面对上述的方法用于便携终端等的场合进行描述。
图1为便携终端的方框图。
在图1中,标号1为表示3维图形的显示器,标号2为作为运算机构的控制部,该控制部由不具有FPU(浮点运算组件)的CPU等构成,标号3为存储有程序,数据的存储部。
另外,在存储部3中,存储有变换参数表4,在该变换参数表4中,存储有变换参数(上述的矩阵A’,矩阵t(t1,t2,t3)t);倒数表5,在该倒数表5中,以该|y2-y1|作为指数,存储有μ。
在下面描述的3维图形的绘制中,将物体均以多角形的平面的组合来表现。另外,将该多角形称为多边形。位于3维空间的物体(多边形)具有X,Y,Z的3个坐标值,通过使坐标运动,可改变物体的位置,方向。另外,为了将通过3维坐标表现的内容,最终显示于2维的屏幕中,进行朝向屏幕坐标系统的变换。
这样的,一系列的坐标变换、透射变换、光源计算等的处理(运算)称为“几何运算”。另外,将通过计算而变换的多边形最终写入到帧缓冲存储器中,进行绘图。
通常,几何运算的处理采用CPU的FPU(浮点运算组件)进行,但是FPU的设计目的不仅用于几何运算,而且还一般用于计算浮点。另外,在以便携电话为代表的便携终端的设备中,由于价格增加的原因,大多不具有FPU(浮点运算组件)。
于是,即使在便携终端这样的,不具有FPU(浮点运算组件)的CPU的信息处理装置中,为了可进行几何运算,按照本发明,控制部3进行整数的几何运算。
另外,即使对于将物体分割为点(dot)的光栅化处理(rasterize),在不具有3D图形加速器的便携终端中,仍处理负荷增加。
于是,按照本发明,为了减轻处理负荷,控制部3不采用除法,而对三角形进行光栅化处理(rasterize)。
下面,对采用控制部3所进行的,上述的运算的3维图形的绘制动作进行描述。
图2为表示3维图形的基本绘制动作的流程图。
首先,设定绘图方的假想帧缓冲存储器的信息(步骤100)。
接着,从存储部3,将作为几何坐标数据的形状数据读入到模型物体中(步骤101)。
在这里读入的形状数据包括顶点坐标列,多边形列和图段列的信息。另外,在图段的数据中,包括基本姿势用的变换参数、所属顶点组和母图段的ID(识别信息)。
此外,所读取的变换参数为将λ(2n(n≥1))与基本的矩阵A相乘而得到的矩阵A’和矩阵t(t1,t2,t3)t,该矩阵A’和矩阵t(t1,t2,t3)t从变换参数表4读取。
然后,读入与形状数据相对应的纹理数据,比如,质感等的数据(步骤102)。
之后,设定从模型坐标系统,到视点坐标系统的变换参数(步骤103),设定从视点坐标系统,到屏幕坐标系统的变换参数(步骤104)。
在假想帧缓冲存储器中,绘制2维的背景(步骤105)。
在该假想帧缓冲存储器中,绘制模型物体(步骤106)。
最后,在实际的画面中,显示上述假想帧缓冲存储器的内容(步骤107)。
接着,通过反复进行步骤103~步骤107,绘制3维图形。
下面对控制部3绘制采用作为本发明的特征的运算的模型物体的图形的步骤106进行更加具体的描述。
图3为更加具体地表示作为绘制模型物体的图形的步骤的步骤106的动作的流程图。
首先,将模型的顶点坐标从局部坐标系统,变换为屏幕坐标系统(步骤200)。
在这里,对模型的结构进行描述。通常,在模型的内部,具有多个图段,各图段具有多个顶点。这些顶点具有图段坐标系统的坐标值。图段可具有多个子图段,具有变换参数,该变换参数用于将在图段中的顶点的坐标变换为母图段坐标系统。最上位的图段所具有的变换参数为用于将该图段所具有的顶点的坐标变换为模型坐标系统的值。另外,还具有基本姿势用的变换参数的信息。
于是,为了将具有图段坐标系统的坐标值的模型的顶点坐标从局部坐标系统,变换为屏幕坐标系统,首先,进行从图段坐标系统,到模型坐标系统的变换。
从图段坐标系统,到模型坐标系统的变换参数的计算通过上述整数的几何运算的仿射变换的合成进行。
在具有母图段的图段的场合,合成图段所具有的变换参数f,以及从母图段的变换参数坐标系统,到模型坐标系统的变换参数g合成,形成从图段坐标系统,到模型坐标系统的变换参数h=gof。
在该合成时,采用上述的仿射变换的合成方式。
另外,在不具有母图段的图段的场合,如果图段所具有的变换参数由f表示,则从图段坐标系统,到模型坐标系统的变换参数为h=f。
下面对从模型坐标系统,到屏幕坐标系统的变换进行描述。
从模型坐标系统,到屏幕坐标系统的变换参数也通过相同的方法计算。
如果从模型坐标系统,到视点坐标系统的变换参数由p表示,从视点坐标系统,到屏幕坐标系统的变换参数由q表示,则从模型坐标系统,到屏幕坐标系统的变换参数r=qop。
最后,根据象上述那样计算的,从图段坐标系统,到模型坐标系统的变换参数h,以及从模型坐标系统,到屏幕坐标系统的变换参数r,计算从图段坐标系统,到屏幕坐标系统的变换参数s。
从图段坐标系统,到屏幕坐标系统的变换参数s与上述的合成相同,为s=roh。h必须针对每个图段进行计算,但是,r在1体的模型的计算中,只须计算1次。
采用象这样计算的变换参数s,将图段坐标系统的顶点坐标,变换屏幕坐标系统的坐标。
坐标变换的运算通过上述的整数的几何运算的仿射变换,按照坐标变换的方式进行。
即,采用变换参数s,将图段坐标系统的顶点坐标系统(x,y,z)t,变换为屏幕坐标系统的坐标(x’,y’,z’)t。
接着,在屏幕空间,将里面的多边形从处理对象脱开(步骤201)。
通过视点坐标系统的Z值(进深),对处理对象的多边形进行分类(步骤202)。
最后,通过屏幕坐标,在假想帧缓冲存储器中,绘制多边形(步骤203)。
下面对该步骤进行更加具体的描述。首先,在这里,检查在绘图区域,显示三角形的可能性。在三角形完全地位于绘图区域之外的场合,跳过以后的绘图处理。
接着,事先计算用于对三角形进行扫描的数值。在该计算中,主要对三角形的棱线坐标,纹理坐标等的变化量进行计算。该变化量通过不采用上述的除法的,三角形光栅化处理(rasterize)的运算得出。
在三角形的扫描中,反复进行加法运算,位移等的单纯操作,将像素值写入到假想帧缓冲存储器中。
作为具体的运算的方法,在计算直线上的x坐标的变化量的场合,2维平面上的点P1的坐标由(x1,y1)表示,点P2的坐标由(x2,y2)表示。当y1≠y2时,相对连接P1与P2的直线的y坐标的x坐标的变化量象上述那样,为Δx=x2-x1y2-y1---15]]>在Δx’=λΔx,通过C语言的数值运算,计算Δx’的场合,则Δx′=λ*(x2-x1)/(y2-y1);另外,当μ=λy2-y1]]>时,则Δx′=μ*(x2-x1);象这样,形成乘法的形式。
在仅按整数进行计算的场合,如果|λ|充分大,|y2-y1|在某种程度小,则化为整数的相对误差变小。
于是,如果λ为常数,限制y坐标的范围,则可根据较少的排列,获得μ。
因此,使将该|y2-y1|作为指数而得到的μ的值预先存储于存储部3的倒数表5中。接着,从倒数表5中,读取与|y2-y1|相对应的μ,对该μ与(x2-x1)进行除法运算,由此,计算出Δx’。
此外,为了实现高速的处理,用Δx’进行必要的运算,在于假想帧缓冲存储器中,写入像素的场合,将上述值除以λ。
还有,在除法运算的阶段,如果λ设定为2n(n≥1),则可通过算术右移位,计算Δx,可在不采用除法的情况下,求出x坐标的变化量。
再有,纹理坐标也可进行相同的处理。
下面,作为本发明的实际的具体实例,对通过控制部3进行的C语言描述的程序进行说明。
首先,在下面给出整数的几何运算的程序。
以下为存储于存储器中的,变换参数,即矩阵A’与矩阵(t1,t2,t3)t的实例。
<pre listing-type="program-listing"><![CDATA[/**整数的几何运算** λ=4096*/public class Atrans3i{ public int m00 //相当于a’11 public int m01 //相当于a’12 public int m02 //相当于a’13 public int m03 //相当于t’1 public int m10 //相当于a’21 public int m11 //相当于a’22 public int m12 //相当于a’23 public int m13 //相当于t’2 public int m20 //相当于a’31 public int m21 //相当于a’32 public int m22 //相当于a’33 public int m23 //相当于t’3]]></pre>
在这里,public int m00~public int m23象注解那样,相当于仿射变换的矩阵A’与矩阵(t1,t2,t3)t的各元素。另外,λ=4096。
下面给出坐标变换。
<pre listing-type="program-listing"><![CDATA[  /**坐标变换  *  *@param src变换元的点  *@param dst变换结果的点  */  public void transpoint(Vec3i src,Vec3i dst){  int x=((m00*src.x+m01*src.y+m02*src.z+2048)>>12)+m03;  int y=((m10*src.x+m11*src.y+m12*src.z+2048)>>12)+m13;  int z=((m20*src.x+m21*src.y+m22*src.z+2048)>>12)+m23;  dst.x=x;dst.y=y;dst.z=z;  reture;   }]]></pre>在这里,@param src相当于上述公式2中表示的坐标(x,y,z)t,@param dst相当于上述公式2中表示的坐标(x’,y’,z’)t。
下面给出仿射变换的合成。
<pre listing-type="program-listing"><![CDATA[  /**仿射变换的合成  *  * @param t1左边的仿射变换  * @param t2右边的仿射变换  */  pulic void multiply(Atrans3i t1,Atrans3i t2){  int a00=(t1.m00*t2.m00+t1.m01*t2.m10+t1.m02*t2.m20+  2048)>>12;   int a01=(t1.m00*t2.m01+t1.m01*t2.m11+t1.m02*t2.m21+2048)>>12;  int a02=(t1.m00*t2.m02+t1.m01*t2.m12+t1.m02*t2.m22+2048)>>12;  int a03=((t1.m00*t2.m03+t1.m01*t2.m13+t1.m02*t2.m23+2048)>>12)+t1.m03;  int a10=(t1.m10*t2.m00+t1.m11*t2.m10+t1.m12*t2.m20+2048)>>12;  int a11=(t1.m10*t2.m01+t1.m11*t2.m11+t1.m12*t2.m21+2048)>>12;  int a12=(t1.m10*t2.m02+t1.m11*t2.m12+t1.m12*t2.m22+2048)>>12;  int a13=((t1.m10*t2.m03+t1.m11*t2.m13+t1.m12*t2.m23+2048)>>12)+t1.m13;  int a20=(t1.m20*t2.m00+t1.m21*t2.m10+t1.m22*t2.m20+2048)>>12;  int a21=(t1.m20*t2.m01+t1.m21*t2.m11+t1.m22*t2.m21+2048)>>12;  int a22=(t1.m20*t2.m02+t1.m21*t2.m12+t1.m22*t2.m22+2048)>>12;  int a23=((t1.m20*t2.m03+t1.m21*t2.m13+t1.m22*t2.m23+2048)>>12)+t1.m23;  m00=a00;m01=a01;m02=a02;m03=a03;  m10=a10;m11=a11;m12=a12;m13=a13;  m20=a20;m21=a21;m22=a22;m23=a23;return;  }}]]></pre>下面给出多边形绘制。
<pre listing-type="program-listing"><![CDATA[  /**多边形绘制  *  *λ=65536  */  pulic class Polydraw{  /**多边形顶点信息*/  static final class Vertex{   int x //像素X坐标   int y //像素Y坐标   int u //纹理元素U坐标   int v //纹理元素V坐标   }   //内部常数  private final static int SFT =16;  private final static int TEXHMASK=0x7F0000;  private final static int TEXWMASK=0x7F;  private final static int TEXPSHIFT =0x09;   //μ-1的表   private static final short_inverse__tb1[]= {   0x0000,(short)0xffff,0x7fff,0x5554,0x3fff,0x3332,0x2aa9,0x2491,   0x1fff,0x1c70,0x1998,0x1744,0x1554,0x13b0,0x1248,0x1110,   0x0fff,0x0f0e,0x0e37,0x0d78,0x0ccb,0x0c2f,0x0bal,0x0b20,   0x0aa9,0x0a3c,0x09d7,0x097a,0x0923,0x08d2,0x0887,0x0841,   0x07ff,0x07c0,0x0786,0x074f,0x071b,0x06ea,0x06bb,0x068f,   0x0665,0x063d,0x0617,0x05f3,0x05d0,0x05af,0x058f,0x0571,   0x0554,0x0538,0x051d,0x0504,0x04eb,0x04d3,0x04bc,0x04a6,   0x0491,0x047c,0x0468,0x0455,0x0443,0x0431,0x0420,0x040f,   0x03ff,0x03ef,0x03df,0x03d1,0x03c2,0x03b4,0x03a7,0x039a,   0x038d,0x0380,0x0374,0x0368,0x035d,0x0352,0x0347,0x033c,   0x0332,0x0328,0x031e,0x0314,0x030b,0x0302,0x02f9,0x02f0,   0x02e7,0x02df,0x02d7,0x02cf,0x02c7,0x02bf,0x02b8,0x02b0,   0x02a9,0x02a2,0x029b,0x0294,0x028e,0x0287,0x0281,0x027b,   0x0275,0x026f,0x0269,0x0263,0x025d,0x0258,0x0252,0x024d,   0x0248,0x0242,0x023d,0x0238,0x0233,0x022f,0x022a,0x0225,   0x0221,0x021c,0x0218,0x0213,0x020f,0x020b,0x0207,0x0203  };]]></pre>另外,上述表相当于上述的μ的值的倒数表5,但是从存储器的存储容量节约的观点来说,在上述表中采用μ-1的值。另外,按照|y2-y1|的大小的值的顺序并列。
<pre listing-type="program-listing"><![CDATA[  //假想帧缓冲存储器信息  private byte scr_image[];//假想帧缓冲存储器的起始地址  private int scr_width;//帧缓冲存储器的横向像素数量  private int scr_height;//帧缓冲存储器的纵向像素数量  private int scr_pitch;//扫描线跨距  private int scr_offset;//地址偏置  //纹理图像信息  private byte tex_image[];//纹理数据的起始地址  private Texture texture;//纹理  private int tex_width;//纹理的宽度  private int tex_height;//纹理的高度  //剪裁信息   private int clip_left;//左剪裁位置  private int clip_top;//上剪裁位置  private int clip_right;//右剪裁位置  private int clip_bottom;//下剪裁位置  /**绘制三角形*/  voil drawTriangle(Polydraw.Vertex v0,Polydraw.Vertex v1,Polydraw.Vertex v2){   /*剪裁(代码省略)*/   boolean inside;   /*对3个点进行分类(代码省略)*/   int top_x,top_y,top_u,top_v;   int mid_x,mid_y,mid_u,mid_v;   int bot_x,bot_y,bot_u,bot_v;   /*3个点沿横向形成一条直线*/   if(top_y,==bot_y)  return;   /*扫描开始位置*/   int scan_scr_y=top_y;   int pixel=scan_scr_y*scr_pitch+scr_offset;   int dist_scr_x,dist_scr_y;   int tb_scr_x tm_scr_x,mb_scr_x;   int tb_scr_dx tm_scr_dx,mb_scr_dx;   int di st_tex_u dist_tex_v;   int tb_tex_u,tb_tex_v,tm_tex_u,tm_tex_v,mb_tex_u,mb_tex_v;   int tb_tex_du,tb_tex_dv,tm_tex_du,tm_tex_dv,mb_tex_du,mb_tex_dv;   /*top_bot*/   dist_scr_x=bot_x-top_x;   dist_scr_x=inverse16(bot_y-top_y);tb_scr_dx=dist_scr_x*dist_scr_y;//top_bot的X的斜率(Δx’的解法)  tb_scr_x=top_x<<SFT;//top_bot上的X  /*纹理的top__bot*/  dist_tex_u=bot_u-top_u;(Δx’的解法)  dist_tex_v=bot_v-top_v;(Δx’的解法)  tb_tex_du=dist_tex_u*dist_scr_y;  tb_tex_dv=dist_tex_v*dist_scr_y;  tb_tex_u=top_u<<SFT;//top_bot上的U  tb_tex_v=top_v<<SFT;//top__bot上的V  /*top_mid*/  dist_scr_x=mid_x-top_x;  dist_scr_y=mid_y-top_y;  dist_tex_u=mid_u-top_u;  dist_tex_v=mid_v-top_v;  /*纹理—扫描用dx,dy top_bot->mid*/  int scan_tex_du,scan_tex_dv;  int width=dist_scr_x-((tb_scr_dx*dist_scr_y)>>SFT);  if(width!=0){   int inv_width=inverse16(width);//水平扫描U斜率(Δx’的解法)  scan_tex_du=(dist_tex_u-((tb_tex_du *dist_scr_y)>>SFT))*inv_width;);//水平扫描v斜率(Δx’的解法)  scan_tex_dv=(dist_tex_v-((tb_tex_dv*dist_scr_y)>>SFT))*inv_width;}   else   return;   /*top_mid*/   int scr_end,scr_dd;    if(dist_scr_y>0){   /*具有上三角形*/   dist_scr_y=inverse16(dist_scr_y);   tm_scr_dx=dist_scr_x*dist_scr_y;//top-mid的x斜率(Δx’的解法)   tm_scr_x=tb_scr_x;//top-mid上的x   /*纹理的top-mid*/   tm_tex_du=dist_tex_u*dist_scr_y;//top-mid的U斜率(Δx’的解法)   tm_tex_dv=dist_tex_v*dist_scr_y;//top-mid上的v斜率(Δx’的解法)   tm_tex_u=tb_tex_u;//top-mid的U斜率   tm_tex_v=tb_tex_v;//top-mid的V斜率   if(width>0){//top-bot在左   if(inside){   while(scan_scr_y<mid_y){   int p1=(tb_scr_x>>SFT)+pixel;   int p2=(tm_scr_x>>SFT)+pixel;   int tpx=tb_tex_u;   int tpy=tb_tex_v;   while(p1<p2){int tidx=((tpy &amp; TEXHMASK)>>>TEXPSHIFT)+((tpx>>>SFT) &amp; TEXWMASK);  scr_image[p1]=tex_image[tidx];//1个像素写入   tpx+=scan_tex_du;   tpy+=scan_tex_dv;   p1++;   }   scan_scr_y++;   pixel +=scr_pitch;   tb_scr_x +=tb_scr_dx;   tm_scr_x +=tm_scr_dx;   tb_tex_u +=tb_tex_du;   tb_tex_v +=tb_tex_dv;   }   }   else{/*代码省略*/}   }   else{/*mid-bot在左(代码省略)*/}   }   /*底是水平的*/   if(mid_y==bot_y)   return;  /*mid-bot*/   dist_scr_x=bot_x-mid_x;    dist_scr_y=inverse16(bot_y-mid_y);   mb_scr_dx=dist_scr_x*dist_scr_y;//mid-bot的斜率   mb_scr_x=mid_x<<SFT;//mid-bot上的Xif(width>0){//top-bot在左  if(inside){   while(scan_scr_y<bot_y={   int p1=(tb_scr_x>>SFT)+pixel;   int p2=(mb_scr_x>>SFT)+pixel;   int tpx=tb_tex_u;   int tpy=tb_tex_v;   while(p1<p2){   int tidx=((tpy &amp;TEXHMASK>>>TEXPSHIFT)+((tpx>>>SFT)&amp; TEXWMASK);   scr_image[p1]=tex_image[tidx];//1个像素写入   tpx += scan_tex_du;   tpy += scan_tex_dv;   p1++;   }   scan_scr_y++;   pixel+=scr_pitch;   tb_scr_x +=tb_scr_dx;   mb_scr_x +=mb_scr_dx;   tb_scr_u +=tb_tex_du;   tb_scr_v +=tb_tex_dv;   }  }  else{/*代码省略*/}   }   else{/*top-mid在左(代码省略)*/}return;   } /**计算μ * * @param num分母(-32767..-1,1..32767) * @returnμ=λ/num */private static int inverse16(int num){   boolean posi_flg=(num>=0);   int denom=posi_flg?num-num;   if(denom<128){   int val=(_inverse_tb1[denom] &amp; 0xffff)+1;   return posi_flg?val-val;   }   int x=32768*128;   int y=denom<<15;   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   {int s=x-y;x=(s>=0)?(s<<1)+1x<<1;}   int r=(x>>15);x<<=1;  if(denom<=r)   x++;  x &amp;=0xffff;  return posi_flg?x-x;  }  }]]></pre>上面为实施本发明用的程序的一个实例。
产业上利用可能性由于本发明在3维图像的绘制的运算处理时,可以在整数的范围,进行运算处理,故即使在象便携终端,PDA(PersonalDigital(Data)Assistants)那样,也不具有FPU(浮点运算组件)的装置,仍对3维图像进行处理。
另外,由于在运算处理时,不进行处理负荷较高的除法,故即使在CPU的能力较低的信息处理装置中,仍进行顺利的绘图处理。
权利要求
1.一种信息处理装置,在该信息处理装置中,在进行3维图像的绘制的光栅化(rasterize)处理时,计算相对连接2维平面上的点P1(x1,y1)和P2(x2,y2)的直线的y坐标的x坐标的变化量Δx&Delta;x=x2-x1y2-y1;]]>其特征在于该信息处理装置包括存储器,该存储器按照与y坐标的变化量相关的方式,存储有通过下述公式表示的常数μ;&mu;=&lambda;y2-y1]]>运算机构,该运算机构在对上述Δx进行运算时,从存储器中读取与上述y坐标的变化量相对应的μ,通过乘法运算,对下述公式进行运算,Δx′=μ*(x2-x1),将该结果作为Δx,进行运算。
2.根据权利要求1所述的信息处理装置,其特征在于其还包括下述机构,其中,上述λ限定为2n(n≥1),通过对上述计算的Δx’进行n位右移位,进行Δx的运算。
3.根据权利要求1或2所述的信息处理装置,其特征在于其还包括存储器,在坐标值限定为整数,将坐标(x,y,z)t通过下述式x&prime;y&prime;z&prime;=Axyz+t1t2t3]]>表示的仿射变换,变换为坐标(x’,y’,z’)t的场合,该存储器存储有仿射变换的矩阵A=a11a12a13a21a22a23a31a32a33]]>与λ(≠0)相乘而形成的矩阵A&prime;=a&prime;11a&prime;12a&prime;13a&prime;21a&prime;22a&prime;23a&prime;31a&prime;32a&prime;33=&lambda;A=&lambda;a11&lambda;a12&lambda;a13&lambda;a21&lambda;a22&lambda;a23&lambda;a31&lambda;a32&lambda;a33]]>矩阵(t1,t2,t3)t和形状数据;运算机构,该运算机构在通过矩阵A和矩阵(t1,t2,t3)t的仿射变换,将上述形状数据的坐标(x,y,z)t,变换为坐标(x’,y’,z’)t时,通过上述存储器,读取矩阵A’和矩阵(t1,t2,t3)t,对下述式进行运算,x′=(a′11*x+a′12*y+a′13*z)/λ+t1;y′=(a′21*x+a′22*y+a′23*z)/λ+t2;z′=(a′31*x+a′32*y+a′33*z)/λ+t3;由此对坐标(x’,y’,z’)t进行运算。
4.根据权利要求3所述的信息处理装置,其特征在于上述λ限定为2n(n≥1);上述运算机构为,通过对下述式x′=(a′11*x+a′12*y+a′13*z)/λ+t1;y′=(a′21*x+a′22*y+a′23*z)/λ+t2;z′=(a′31*x+a′32*y+a′33*z)/λ+t3;的除法运算的结果进行n位右移位的方式进行运算的机构。
5.根据权利要求4项所述的信息处理装置,其特征在于上述运算机构为通过在将各被除数与常数λ/2相加后,对其n位移位的方式进行运算的机构。
6.根据权利要求3~5中的任何一项所述的信息处理装置,其特征在于其包括合成机构,该合成机构对预先乘以λ(≠0)的2个以上的参数进行合成。
7.一种3维图像的绘制处理方法,该方法计算在进行3维图像的绘制的光栅化(rasterize)处理时的,连接2维平面上的点P1(x1,y1)和P2(x2,y2)的直线的,由下述公式表示的,相对y坐标的x坐标的变化量Δx&Delta;x=x2-x1y2-y1;]]>其特征在于该方法包括读取步骤,在该读取步骤中,在对Δx进行运算时,从存储器中,读取所运算的Δx与y坐标的变化量相对应的常数μ,该存储器对应于y坐标的变化量,存储有由下述公式表示的常数μ,&mu;=&lambda;y2-y1;]]>运算步骤,在该运算步骤中,根据上述已读取的常数μ,通过乘法运算,对下述公式进行运算,Δx′=μ*(x2-x1)将该结果作为Δx进行运算。
8.根据权利要求7所述的3维图像的绘制处理方法,其特征在于该方法还包括下述步骤,即,将上述λ限定为2n(n≥1),对该计算出的Δx’进行n位右移位,对Δx进行运算。
9.根据权利要求7,或8所述的3维图像的绘制处理方法,其特征在于在将坐标值限定为整数,将坐标(x,y,z)t通过下述式x&prime;y&prime;z&prime;=Axyz+t1t2t3]]>表示的仿射变换,变换为坐标(x’,y’,z’)t时,该信息处理方法包括下述步骤读取步骤,该读取步骤读取参数A’和矩阵(t1,t2,t3)t,该参数A’是在下述场合,将存储于存储器中的,矩阵A与λ(≠0)相乘而得到的,该场合指通过矩阵A和(t1,t2,t3)t的仿射变换,将形状数据的坐标(x,y,z)t变换为(x’,y’,z’)t,该A’表示为A&prime;=a&prime;11a&prime;12a&prime;13a&prime;21a&prime;22a&prime;23a&prime;31a&prime;32a&prime;33=&lambda;A=&lambda;a11&lambda;a12&lambda;a13&lambda;a21&lambda;a22&lambda;a23&lambda;a31&lambda;a32&lambda;a33]]>运算步骤,在该运算步骤中,根据上述已读取的矩阵A’和矩阵(t1,t2,t3)t,对下述式进行运算,x′=(a′11*x+a′12*y+a′13*z)/λ+t1;y′=(a′21*x+a′22*y+a′23*z)/λ+t2;z′=(a′31*x+a′32*y+a′33*z)/λ+t3;由此对坐标(x’,y’,z’)t进行运算。
10.根据权利要求9所述的3维图像的绘制处理方法,其特征在于将上述λ限定为2n(n≥1);上述运算步骤为,通过对下述式x′=(a′11*x+a′12*y+a′13*z)/λ+t1;y′=(a′21*x+a′22*y+a′23*z)/λ+t2;z′=(a′31*x+a′32*y+a′33*z)/λ+t3;的除法运算的结果进行n位右移位,由此对坐标(x’,y’,z’)t进行运算的步骤。
11.根据权利要求10所述的3维图像的绘制处理方法,其特征在于其还包括在进行n位右移位之前,将各被除数与常数λ/2进行加法运算的步骤。
12.根据权利要求9~11中的任何一项所述的3维图像的绘制处理方法,其特征在于还包括将预先乘以λ(≠0)的2个以上的参数合成的步骤。
13.一种程序,该程序在信息处理装置中,进行下述运算处理,该运算处理计算在进行3维图像的绘制的光栅化(rasterize)处理时的,连接2维平面上的点P1(x1,y1)和P2(x2,y2)的直线的,由下述公式表示的,相对y坐标的x坐标的变化量Δx&Delta;x=x2-x1y2-y1;]]>其特征在于该程序在信息处理装置中包括读取步骤,在该读取步骤中,对Δx进行运算时,从上述存储器中,读取所运算的Δx与y坐标的变化量相对应的常数μ,该存储器对应于y坐标的变化量,存储有由下述公式表示的常数μ,&mu;=&lambda;y2-y1]]>运算步骤,在该运算步骤中,根据上述已读取的常数μ,通过乘法运算,对下述公式进行运算,Δx′=μ*(x2-x1)将其结果作为Δx,进行运算。
14.根据权利要求13所述的程序,其特征在于该程序还包括下述步骤,即,在信息处理装置中,将上述λ限定为2n(n≥1),对该计算出的Δx’进行n位移位,对Δx进行运算。
15.根据权利要求13或14所述的程序,其特征在于在信息处理装置中,将坐标值限定为整数,将坐标(x,y,z)t通过下述式x&prime;y&prime;z&prime;=Axyz+t1t2t3]]>表示的仿射变换,变换为坐标(x’,y’,z’)t时,该程序包括下述步骤读取步骤,该读取步骤读取参数A’和矩阵(t1,t2,t3)t,该参数A’是在下述场合,将存储于存储器中的,矩阵A与λ(≠0)相乘而得到的,该场合指通过矩阵A和(t1,t2,t3)t的仿射变换,将形状数据的坐标(x,y,z)t变换为(x’,y’,z’)t,该A’表示为A&prime;=a&prime;11a&prime;12a&prime;13a&prime;21a&prime;22a&prime;23a&prime;31a&prime;32a&prime;33=&lambda;A=&lambda;a11&lambda;a12&lambda;a13&lambda;a21&lambda;a22&lambda;a23&lambda;a31&lambda;a32&lambda;a33]]>运算步骤,在该运算步骤中,根据上述已读取的矩阵A’和矩阵(t1,t2,t3)t,对下述式进行运算,x′=(a′11*x+a′12*y+a′13*z)/λ+t1;y′=(a′21*x+a′22*y+a′23*z)/λ+t2;z′=(a′31*x+a′32*y+a′33*z)/λ+t3;由此对坐标(x’,y’,z’)t进行运算。
16.根据权利要求15所述的程序,其特征在于上述λ限定为2n(n≥1);上述运算步骤为,通过对下述式x′=(a′11*x+a′12*y+a′13*z)/λ+t1;y′=(a′21*x+a′22*y+a′23*z)/λ+t2;z′=(a′31*x+a′32*y+a′33*z)/λ+t3;进行除法运算的结果进行n位右移位,由此对坐标(x’,y’,z’)t进行运算的步骤。
17.根据权利要求16所述的程序,其特征在于该程序还包括在信息处理装置中,在进行n位移位之前,将各被除数与常数λ/2进行加法运算的步骤。
18.根据权利要求15~17中的任何一项所述的程序,其特征在于还包括在信息处理装置中,将预先乘以λ(≠0)的2个以上的参数合成的步骤。
19.一种记录媒体,该记录媒体存储有下述程序,在该程序中计算在进行3维图像的绘制的光栅化(rasterize)处理时的,连接2维平面上的点P1(x1,y1)和P2(x2,y2)的直线的,由下述公式表示的,相对y坐标的x坐标的变化量Δx&Delta;x=x2-x1y2-y1]]>其特征在于上述程序在信息处理装置中还包括下述步骤读取步骤,在该读取步骤中,在对Δx进行运算时,从存储器中,读取所运算的Δx与y坐标的变化量相对应的常数μ,该存储器对应于y坐标的变化量,存储有由下述公式表示的常数μ&mu;=&lambda;y2-y1;]]>运算步骤,在该运算步骤中,根据上述已读取的常数μ,通过乘法运算,对下述公式进行运算,Δx′=μ*(x2-x1)将该结果作为Δx进行运算。
20.根据权利要求19所述的记录媒体,其特征在于上述程序还包括在信息处理装置中,将上述λ限定为2n(n≥1),对该计算出的Δx’进行n位移位,对Δx进行运算的步骤。
21.根据权利要求19或20所述的记录媒体,其特征在于在信息处理装置中,将坐标值限定为整数,将坐标(x,y,z)t通过下述式x&prime;y&prime;z&prime;=Axyz+t1t2t3]]>表示的仿射变换,变换为坐标(x’,y’,z’)t时,上述程序包括下述步骤读取步骤,该读取步骤读取参数A’和矩阵(t1,t2,t3)t,该参数A’是在下述场合,将存储于存储器中的,矩阵A与λ(≠0)相乘而得到的,在该场合,通过矩阵A和(t1,t2,t3)t的仿射变换,将形状数据的坐标(x,y,z)t变换为(x’,y’,z’)t,该A’表示为A&prime;=a&prime;11a&prime;12a&prime;13a&prime;21a&prime;22a&prime;23a&prime;31a&prime;32a&prime;33=&lambda;A=&lambda;a11&lambda;a12&lambda;a13&lambda;a21&lambda;a22&lambda;a23&lambda;a31&lambda;a32&lambda;a33]]>运算步骤,在该运算步骤中,根据上述已读取的矩阵A’和矩阵(t1,t2,t3)’,对下述式进行运算,x′=(a′11*x+a′12*y+a′13*z)/λ+t1;y′=(a′21*x+a′22*y+a′23*z)/λ+t2;z′=(a′31*x+a′32*y+a′33*z)/λ+t3;由此对坐标(x’,y’,z’)t进行运算。
22.根据权利要求21所述的记录媒体,其特征在于将上述λ限定为2n(n≥1),上述运算步骤为,对下述式x′=(a′11*x+a′12*y+a′13*z)/λ+t1;y′=(a′21*x+a′22*y+a′23*z)/λ+t2;z′=(a′31*x+a′32*y+a′33*z)/λ+t3;进行除法运算的结果进行n位右移位,由此对坐标(x’,y’,z’)t进行运算的步骤。
23.根据权利要求22所述的记录媒体,其特征在于上述程序还包括在上述信息处理装置中,在进行上述n位右移位之前,将各被除数与常数λ/2进行加法运算的步骤。
24.根据权利要求21~23中任一项所述的记录媒体,其特征在于上述程序还包括在信息处理装置中,将预先乘以λ(≠0)的2个以上的参数合成的步骤。
全文摘要
在进行3维图像的绘制的光栅化(rasterize)处理时,计算相对连接2维平面上的点P
文档编号G06T15/00GK1465036SQ02802446
公开日2003年12月31日 申请日期2002年6月20日 优先权日2001年6月21日
发明者谷冈靖久, 堤纯也, 川端一生, 小田和俊 申请人:Hi股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1