CN101753767B - 用在图形光栅扫描中的凸多边形遍历方法和*** - Google Patents
用在图形光栅扫描中的凸多边形遍历方法和*** Download PDFInfo
- Publication number
- CN101753767B CN101753767B CN 200810184069 CN200810184069A CN101753767B CN 101753767 B CN101753767 B CN 101753767B CN 200810184069 CN200810184069 CN 200810184069 CN 200810184069 A CN200810184069 A CN 200810184069A CN 101753767 B CN101753767 B CN 101753767B
- Authority
- CN
- China
- Prior art keywords
- axis coordinate
- summit
- limit shape
- protruding
- limit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明公开了一种用在图形光栅扫描中的凸多边形遍历方法和***、以及插值方法和***。其中,该遍历方法包括以下步骤:根据凸n边形的n个顶点的坐标值,构造用在对凸n边形进行光栅扫描的过程中的两个边界框,其中,n为大于2的整数;为该两个边界框中的每一个设置遍历起始位置;以及分别从该两个边界框中的每一个的遍历起始位置开始,对位于该两个边界框中的每一个中的凸n边形部分进行遍历。通过本发明,可以减少在对图形光栅扫描的过程中的计算量,从而可以增快图形光栅扫描设备的处理速度,节省处理时间。
Description
技术领域
本发明涉及图像处理领域,更具体地涉及一种用在图形光栅扫描中的凸多边形遍历方法和***、以及插值方法和***。
背景技术
图形光栅扫描过程是将几何图形(例如,线、三角形、多边形等)映射成显示器上的像素的过程。凸多边形是图形学中重要的几何图形。“凸多边形遍历”过程是用来找到所有位于凸多边形内部的像素的过程。“凸多边形插值”过程是计算凸多边形内部的像素的参数值(例如,R、G、B等)的过程。边方程技术是凸多边形光栅扫描的基础。“边方程”指的是凸多边形各条边的直线方程。位于凸多边形内部的像素的各条边方程的值同时为正或同时为负。基于这个性质,可以使用边方程来判断一个像素是否位于凸多边形的内部。
传统的凸多边形光栅扫描方法是将凸多边形划分成一系列三角形然后利用三角形的光栅扫描方法来实现整个凸多边形的光栅扫描过程的方法。由于划分成三角形后引入了大量的多余边,使得传统的凸多边形光栅扫描方法需要的运算量很大,所以凸多边形光栅扫描过程耗时较长,占用的计算设备的计算资源较多。
发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种用在图形光栅扫描中的凸多边形遍历方法和***、以及插值方法和***。
根据本发明实施例的用在图形光栅扫描中的凸多边形遍历方法,包括以下步骤:S302,根据凸n边形的n个顶点的坐标值,构造用在对凸n边形进行光栅扫描的过程中的两个边界框,其中,n为大于2的整数;S304,为该两个边界框中的每一个设置遍历起始位置;以及S306,分别从该两个边界框中的每一个的遍历起始位置开始,对位于该两个边界框中的每一个中的凸n边形部分进行遍历。
根据本发明实施例的用在图形光栅扫描中的凸多边形遍历***,包括:边界框构造单元,用于根据凸n边形的n个顶点的坐标值,构造用在对凸n边形进行光栅扫描的过程中的两个边界框,其中,n为大于2的整数;起始位置设置单元,用于为该两个边界框中的每一个设置遍历起始位置;以及图形遍历单元,用于从该两个边界框中的每一个的遍历起始位置开始,对位于该两个边界框中的每一个中的凸n边形部分进行遍历。
根据本发明实施例的用在图形光栅扫描中的凸多边形插值方法,包括以下步骤:S702,将凸多边形从绝对坐标系转换到以凸多边形的任意一边为坐标轴的相对坐标系;S704,根据位于凸多边形内的待插值像素在该相对坐标系中的Y轴坐标值和凸多边形的每条边的顶点在该相对坐标系中的Y轴坐标值,为待插值像素选择相交边;以及S706,利用该相交边的顶点的参数值,插值得到待插值像素的参数值。
根据本发明实施例的用在图形光栅扫描中的凸多边形插值***,包括:坐标系转换单元,用于将凸多边形从绝对坐标系转换到以凸多边形的任意一边为坐标轴的相对坐标系;相交边选择单元,用于根据位于凸多边形内的待插值像素在该相对坐标系中的Y轴坐标值和凸多边形的每条边的顶点在该相对坐标系中的Y轴坐标值,为待插值像素选择相交边;以及参数值计算单元,用于利用该相交边的顶点的参数值,插值得到待插值像素的参数值。
本发明避免了将凸多边形划分成三角形后引入的大量多余边,从而使得凸多边形光栅扫描方法/***需要的运算量变小,所以凸多边形光栅扫描过程耗时变短,占用的计算设备的计算资源变少。
附图说明
图1示出了凸多边形光栅扫描***的示意框图;
图2示出了根据本发明实施例的用在图1所示***中的设置模块和遍历模块的示意框图;
图3示出了根据本发明实施例的用在图2所示模块中的凸多边形遍历方法的流程图;
图4示出了根据本发明实施例的构造两个边界框的各种情况的示意图;
图5示出了根据本发明实施例的两个边界框的遍历起始位置的示意图;
图6示出了计算每个边界框中的每一个扫描行的起始扫描点的过程的示意图;
图7示出了根据本发明实施例的用在图2所示模块中的凸多边形插值方法的流程图;以及
图8示出了根据本发明实施例的相对坐标系以及该坐标系中的待插值像素点及其相交边和相交点的示意图。
具体实施方式
图1示出了凸多边形光栅扫描***的示意图。如图1所示,该凸多边形光栅扫描***包括顶点存储器102、变换和投影模块104、设置和遍历模块106、帧缓存模块108、以及显示模块110。在对凸多边形进行光栅扫描的过程中,首先将顶点信息(原始坐标)从顶点存储器中读出。然后,将顶点的原始坐标通过变换和投影模块的运算转换成光栅扫描***的设备坐标。接着,设置和遍历模块106使用顶点的设备坐标来计算哪些像素位于凸多边形内部,并且计算这些位于凸多边形内部的像素的参数值(颜色/纹理)。最后,将这些像素的参数值写入帧缓存模块,并通过显示模块显示出来。
图2示出了根据本发明实施例的用在图1所示***中的设置模块和遍历模块的示意框图。如图2所示,设置和遍历模块具体分为设置模块和遍历模块。其中,设置模块利用凸多边形的顶点坐标来计算凸多边形的各条边的边方程并构造扫描边界框。遍历模块利用凸多边形各条边的边方程和边界框信息判断边界框中的哪些像素位于凸多边形内部并计算这些内部像素的参数值。
图3示出了根据本发明实施例的用在图2所示模块中的凸多边形遍历方法的流程图。如图3所示,该凸多边形遍历方法包括以下三个步骤:S302,根据凸n边形的n个顶点的坐标值,构造用在对凸n边形进行光栅扫描的过程中的两个边界框,其中,n为大于2的整数;S304,为该两个边界框中的每一个设置遍历起始位置;以及S306,分别从该两个边界框中的每一个的遍历起始位置开始,对位于该两个边界框中的每一个中的凸n边形部分进行遍历。
下面详细描述图3所示方法中的步骤S302。假设,凸多边形的顶点为V0、V1、V2、…、Vn。其中,每个顶点的坐标为(Xi,Yi),i=0、1、2、…、n。这里的Xi和Yi均为浮点值。用在对凸n边形进行光栅扫描的过程中的两个边界框通过以下过程得到:
首先,获取凸多边形的顶点的X轴坐标值中的最小值和最大值、以及Y轴坐标值中的最小值和最大值:
fxmin=min(X0,X1,X2…Xn);fxmax=max(X0,X1,X2…Xn);
fymin=min(Y0,Y1,Y2…Yn);fymax=max(Y0,Y1,Y2…Yn)。
其中,min()、max()函数返回n个变量的最大值和最小值。fxmin、fxmax、fymin、fymax均为浮点值。
然后,根据以上获取的凸多边形的顶点的X轴坐标值中的最小值和最大值,找出凸多边形的最左边的顶点Vleft(其中,最左边的顶点的X轴坐标值Xleft=fxmin)。
接着,根据凸多边形的最左边的顶点的Y轴坐标值(Yleft)与以上获取的凸多边形的顶点的Y轴坐标值的最小值和最大值的关系,构造用在对凸多边形进行光栅扫描的过程中的边界框(图4示出了构造两个边界框的以下三种情况):
情形1,Yleft=fymin。
在这种情形下,上边界框为空,下边界框定义如下:
fxmin_bot=fxmin;
fxmax_bot=fxmax;
fymin_bot=fymin;
fymax_bot=fymax;
xmin_bot=ceil(fxmin_bot=fxmin);
xmax_bot=floor(fxmax_bot=fxmax);
ymin_bot=ceil(fymin_bot=fymin);
ymax_bot=floor(fymax_bot=fymax)。
其中,fxmin_bot、fxmax_bot、fymin_bot、fymax_bot表示下边界框在X方向的最大最小值(浮点)以及在Y方向的最大最小值(浮点)。xmin_bot、xmax_bot、ymin_bot、ymax_bot表示下边界框在x方向的最大/最小值(整点)以及在y方向的最大最小值(整点)。ceil(float a)函数返回不小于a的最小整数,例如,ceil(1.5)=2。Floor(float a)函数返回不大于a的最大整数,例如,floor(1.5)=1。
其中,当凸多边形的顶点位于显示平面之外时,假设显示平面的显示范围为[clip_xmin,clip_xmax],[clip_ymin,clip_ymax],需要进行如下裁剪操作:
if(xmin_bot<clip_xmin)xmin_bot=clip_xmin;
if(ymin_bot<clip_ymin)ymin_bot=clip_ymin;
if(xmax_bot>clip_xmax)xmax_bot=clip_xmax;
if(ymax_bot>clip_ymax)ymax_bot=clip_ymax。
经过以上过程,可以得到下边界框的四个顶点的坐标(xmin_bot,ymin_bot),(xmin_bot,ymax_bot),(xmax_bot,ymin_bot),(xmax_bot,ymax_bot)。
情形2,Yleft=fymax。
在这种情形下,下边界框为空,上边界框定义如下:
fxmin_top=fxmin;
fxmax_top=fxmax;
fymin_top=fymin;
fymax_top=fymax;
xmin_top=ceil(fxmin_top);xmax_top=floor(fxmax_top);
ymin_top=ceil(fymin_top);ymax_top=floor(fymax_top)。
同样,如上所述,当凸多边形的顶点位于显示平面之外时,假设显示平面的显示范围为[clip_xmin,clip_xmax],[clip_ymin,clip_ymax],需要进行如下裁剪操作:
if(xmin_top<clip_xmin)xmin_top=clip_xmin;
if(ymin_top<clip_ymin)ymin_top=clip_ymin;
if(xmax_top>clip_xmax)xmax_top=clip_xmax;
if(ymax_top>clip_ymax)ymax_top=clip_ymax。
经过以上过程,可以得到上边界框的四个顶点的坐标(xmin_top,ymin_top),(xmin_top,ymax_top),(xmax_top,ymin_top),(xmax_top,ymax_top)。
情形3,fymin<Yleft<fymax。
在这种情形下,上边界框定义如下:
fxmin_top=fxmin;
fxmax_top=fxmax;
fymin_top=fymin;
fymax_top=Yleft;
xmin_top=ceil(fxmin_top);
xmax_top=floor(fxmax_top);
ymin_top=ceil(fymin_top);
ymax_top=floor(fymax_top)。
下边界框定义如下:
fxmin_bot=fxmin;
fxmax_bot=fxmax;
fymin_bot=Yleft;
fymax_bot=fymax;
xmin_bot=ceil(fxmin_bot);
xmax_bot=floor(fxmax_bot);
ymin_bot=ceil(fymin_bot);
ymax_bot=floor(fymax_bot)。
同样,如上所述,当凸多边形的顶点位于显示平面之外时,假设显示平面的显示范围为[clip_xmin,clip_xmax],[clip_ymin,clip_ymax],需要进行如下裁剪操作:
if(xmin_top<clip_xmin)xmin_top=clip_xmin;
if(ymin_top<clip_ymin)ymin_top=clip_ymin;
if(xmax_top>clip_xmax)xmax_top=clip_xmax;
if(ymax_top>clip_ymax)ymax_top=clip_ymax;
if(xmin_bot<clip_xmin)xmin_bot=clip_xmin;
if(ymin_bot<clip_ymin)ymin_bot=clip_ymin;
if(xmax_bot>clip_xmax)xmax_bot=clip_xmax;
if(ymax_bot>clip_ymax)ymax_bot=clip_ymax。
过以上过程,可以得到上边界框的四个顶点的坐标为(xmin_top,ymin_top),(xmin_top,ymax_top),(xmax_top,ymin_top),(xmax_top,ymax_top),下边界框的四个顶点的坐标为(xmin_bot,ymin_bot),(xmin_bot,ymax_bot),(xmax_bot,ymin_bot),(xmax_bot,ymax_bot)。
图5示出了根据本发明实施例的两个边界框的遍历起始位置的示意图。如图5所示,上边界框的遍历起始位置为上边界框的左下角,下边界框的遍历起始位置为下边界框的左上角。并且,在上边界框中,按照从左到右、从下到上的方向对位于上边界框中的凸多边形部分进行遍历,在下边界框中,按照从左到右、从上到下的方向对位于下边界框中的凸多边形部分进行遍历。
图6示出了计算每个边界框中的每一个扫描行的起始扫描点的过程的示意图。这个过程通过自适应地调整各扫描行的起始扫描点来遍历边界框。扫描过程包括三个阶段:
1.从每一行的起始扫描点开始,沿着水平方向找到位于凸多边形内的像素点。其中,像素点位于凸多边形内等价于:
e0(x,y)>0&&e1(x,y)>0&&…&&en(x,y)>0。
其中,ei(x,y)(i=0,1,2…)是凸多边形各条边的边方程:
e0(x,y)=a0*x+b0*y+c0;
e1(x,y)=a1*x+b1*y+c1;
e2(x,y)=a2*x+b2*y+c2;
…
en(x,y)=an*x+bn*y+cn。
2.当像素p(x,y)满足以下条件时,结束当前行的扫描过程:InRightPolygon(x,y)为真;或者p(x,y)位于边界框外。其中,InRightPolygon(x,y)函数是用来判断像素p(x,y)是否位于凸多边形的右边的函数。当p(x,y)相对于凸多边形的某一条边的边方程值小于0并且这条边的法线的水平分量不大于0时,判定p(x,y)位于凸多边形的右边。具体地,该函数定义如下:
InRightPolygon(x,y)
{
if((e0(x,y)<0&&a0<=0)||(e1(x,y)<0&&a1<=0)||...||(en(x,y)<0&&an<=0))
return true;
else
return false;
}
3.计算下一个扫描行的起始扫描点。下一个扫描行的起始扫描点通过计算之前两行中第一个凸多边形内部点之间的距离来得到。如图6所出,当前扫描行的第一个凸多边形内部点的坐标为(xc,yc),之前扫描行的第一个凸多边形内部点的坐标为(xp,yp),下一个扫描行的起始扫描位置(xn,yn)计算方法如下:
delta_x=xc==xp?0:xc-xp-1;
delta_y=top_box==True?-1:1;
xn=xc+delta_x;
yn=yc+delta_y。
其中,delta_x是xc和xp之间的距离。如果xc=xp,delta_x为0,否则delta_x等于xc-xp-1。delta_y取决于当前遍历的是上边界框还是下边界框,如果遍历的是上边界框,则delta_y为-1,否则为1。
可以通过用在图形光栅扫描中的凸多边形遍历***来实现上述方法。该凸多边形遍历***包括:边界框构造单元,用于根据凸n边形的n个顶点的坐标值,构造用在对凸n边形进行光栅扫描的过程中的两个边界框,其中,n为大于2的整数;起始位置设置单元,用于为该两个边界框中的每一个设置遍历起始位置;以及图形遍历单元,用于从该两个边界框中的每一个的遍历起始位置开始,对位于该两个边界框中的每一个中的凸n边形部分进行遍历。其中,所述两个边界框包括上边界框和下边界框,上边界框的遍历起始位置为上边界框的左下角,下边界框的遍历起始位置为所述下边界框的左上角。
其中,边界框构造单元包括:最值获取模块,用于获取凸n边形的n个顶点的X轴坐标值中的最大值和最小值、以及Y轴坐标值中的最大值和最小值;框构造模块,用于根据凸n边形的n个顶点的X轴坐标值中的最大值和最小值、以及Y轴坐标值中的最大值和最小值,构造所述两个边界框。
在凸n边形的最左边的顶点的Y轴坐标值是凸n边形的n个顶点的Y轴坐标值中的最小值或最大值的情况下,边界框构造单元将所述两个边界框中的其中一个边界框构造为空,并将所述两个边界框中的另一个边界框构造为:该另一个边界框的左边两个顶点的X轴坐标值为不小于凸n边形的n个顶点的X轴坐标值中的最小值的最小整数、右边两个顶点的X轴坐标值为不大于凸n边形的n个顶点的X轴坐标值中的最大值的最大整数、上边两个顶点的Y轴坐标值为不小于凸n边形的n个顶点的Y轴坐标值中的最小值的最小整数、并且下边两个顶点的Y轴坐标值为不大于凸n边形的n个顶点的Y轴坐标值中的最大值的最大整数。
在凸n边形的最左边的顶点的Y轴坐标值在凸n边形的n个顶点的Y轴坐标值中的最大值和最小值之间的情况下,边界框构造单元将凸n边形的上边界框构造为:上边界框的左边两个顶点的X轴坐标值为不小于凸n边形的X轴坐标值中的最小值的最小整数,右边两个顶点的X轴坐标值为不大于凸n边形的X轴坐标值中的最大值的最大整数,上边两个顶点的Y轴坐标值为不小于凸n边形的Y轴坐标值中的最小值的最小整数,下边两个顶点的Y轴坐标值为不大于凸n边形的最左边的顶点的Y轴坐标值的最大整数,并将凸n边形的下边界框构造为:下边界框的左边两个顶点的X轴坐标值为不小于凸n边形的X轴坐标值中的最小值的最小整数,右边两个顶点的X轴坐标值为不大于凸n边形的X轴坐标值中的最大值的最大整数,上边两个顶点的Y轴坐标值为不小于凸n边形的最左边的顶点的Y轴坐标值中的最小整数,下边两个顶点的Y轴坐标值为不大于凸n边形的Y轴坐标值中的最大值的最大整数。
其中,在上边界框和/或下边界框的一个或多个顶点位于显示平面之外的情况下,边界框构造单元根据显示平面的显示范围对上边界框和/或下边界框进行裁剪。图形遍历单元通过自适应地调整各扫描行的起始扫描点来对位于所述两个边界框中的每一个中的凸n边形部分进行遍历,通过计算当前扫描行的前两个扫描行中的第一个处于凸n边形内部的点之间的距离来获取当前扫描行的起始扫描点。
图7示出了根据本发明实施例的用在图2所示模块中的凸多边形插值方法的流程图。如图7所示,该凸多边形插值方法包括以下三个步骤:S702,将凸多边形从绝对坐标系转换到以凸多边形的任意一边为坐标轴的相对坐标系;S704,根据位于凸多边形内的待插值像素在该相对坐标系中的Y轴坐标值和凸多边形的每条边的顶点在该相对坐标系中的Y轴坐标值,为待插值像素选择相交边;以及S706,利用该相交边的顶点的参数值,插值得到待插值像素的参数值。
具体地,首先要将多边形从原来的绝对坐标系转换到相对的位于多边形上的坐标系。这样做是为了避免多边形在旋转过程中会造成插值的不一致。多边形上的坐标系以多边形的任意一条边(ViVi+1)作为X轴,以边(ViVi+1)的法线作为Y轴,以Vi作为原点。多边形上的坐标系中的Y坐标通过边(ViVi+1)的边方程计算得到,X坐标通过边(ViVi+1)的法线的边方程计算得到。其中,坐标变换过程如下:
边(ViVi+1)的边方程定义为ei(x,y)=ai*x+bi*y+ci;
边(ViVi+1)的法线的边方程定义为ni(x,y)=di*x+ei*y+fi;
假设一个点在原先的坐标系中的坐标为P(x,y),经过坐标变换后的坐标为P(x’,y’),其中,x’=ni(x,y)=di*x+ei*y+fi,y’=ei(x,y)=ai*x+bi*y+ci。坐标变换完成后,将待插值像素的Y坐标与多边形每条边的两个顶点的Y坐标进行比较,以选择待插值像素的相交边。假设多边形的每条边的两个顶点为Va(xa,ya)和Yb(xb,yb)。如果该条边为相交边,则其顶点的Y坐标应该满足以下条件:ya<=y<=yb||yb<=y<=ya。
在利用相交边进行插值运算的步骤中,通过相交边的两个顶点上的参数值插值得到相交点上的参数值,再利用两个相交点上的参数值插值得到待插值像素的参数值。
图8示出了根据本发明实施例的相对坐标系以及该坐标系中的待插值像素点及其相交边和相交点的示意图。如图8所示,假设待插值像素的两条相交边为eab和ecd。eab的两个顶点为Va(xa,ya)和Vb(xb,yb)。ecd的两个顶点为Vc(xc,yc)和Vd(xd,yd)。待插值像素为V(x,y)。eab的相交点为Vab(xab,yab)。ecd的相交点为Vcd(xcd,ycd)。以上坐标均位于多边形上的坐标系中。
Vab的坐标计算如下:
xab=(xa*(yb-y)+xb*(y-ya))/(yb-ya);
yab=y;
Vcd的坐标计算如下:
xcd=(xc*(yd-y)+xd*(y-yc))/(yd-yc);
ycd=y;
Va,Vb,Vc,Vd的参数值为Pa,Pb,Pc,Pd。
Vab的参数值为Pab,计算如下:
Pab=(Pa*(xb-xab)+Pb*(xab-xa))/(xb-xa);
Vcd的参数值为Pcd,计算如下:
Pcd=(Pc*(xd-xcd)+Pd*(xcd-xc))/(xd-xc);
待插值像素V(x,y)的参数值为P,计算如下:
P=(Pab*(xcd-x)+Pcd*(x-xab))/(xcd-xab)。
可以通过用在图形光栅扫描中的凸多边形插值***来实现上述方法。该凸多边形插值***包括:坐标系转换单元,用于将凸多边形从绝对坐标系转换到以凸多边形的任意一边为坐标轴的相对坐标系;相交边选择单元,用于根据位于凸多边形内的待插值像素在所述相对坐标系中的Y轴坐标值和凸多边形的每条边的顶点在相对坐标系中的Y轴坐标值,为待插值像素选择相交边;以及参数值计算单元,用于利用相交边的顶点的参数值,插值得到待插值像素的参数值。其中,该相对坐标系是以凸多边形的任意一条边的一个顶点作为原点、以所述原点所在的边作为X轴、并以所述原点所在的边的法线作为Y轴的坐标系。待插值像素的Y轴坐标值和凸多边形的每条边的顶点的Y轴坐标值是通过该相对坐标系的X轴的边方程计算得到的。待插值像素的X坐标值和凸多边形的每条边的顶点的X轴坐标值是通过该相对坐标系的Y轴的边方程计算得到的。
相交边选择单元通过比较待插值像素在所述相对坐标系中的Y轴坐标值和凸多边形的每条边的顶点在所述相对坐标系中的Y轴坐标值,为待插值像素选择相交边。
参数值计算单元包括:第一计算单元,用于利用相交边的顶点的参数值,插值得到待插值像素所在扫描行与相交边的相交点的参数值;第二计算单元,利用待插值像素所在扫描行与相交边的相交点的参数值,插值得到待插值像素的参数值。
本领域技术人员将理解,还存在可用于实现本发明实施例的更多可选实施方式和改进方式,并且上述实施方式和示例仅是一个或多个实施例的说明。因此,本发明的范围仅由所附权利要求书限制。
Claims (14)
1.一种用在图形光栅扫描中的凸多边形遍历方法,其特征在于,包括以下步骤:
S302,根据凸n边形的n个顶点的坐标值,构造用在对所述凸n边形进行光栅扫描的过程中的两个边界框,其中,n为大于2的整数;
S304,为所述两个边界框中的每一个设置遍历起始位置;以及
S306,分别从所述两个边界框中的每一个的遍历起始位置开始,对位于所述两个边界框中的每一个中的凸n边形部分进行遍历,
其中,所述步骤S302包括:
获取所述凸n边形的n个顶点的X轴坐标值中的最大值和最小值、以及Y轴坐标值中的最大值和最小值;
根据所述凸n边形的n个顶点的X轴坐标值中的最小值和最大值,找出所述凸n边形的最左边的顶点;以及
根据所述凸n边形的最左边的顶点的Y轴坐标值与所述凸n边形的n个顶点的Y轴坐标值中的最大值和最小值之间的关系,构造所述两个边界框。
2.根据权利要求1所述的凸多边形遍历方法,其特征在于,所述两个边界框包括上边界框和下边界框,其中,所述上边界框的遍历起始位置为所述上边界框的左下角,所述下边界框的遍历起始位置为所述下边界框的左上角。
3.根据权利要求1所述的凸多边形遍历方法,其特征在于,当所述凸n边形的最左边的顶点的Y轴坐标值是所述凸n边形的n个顶点的Y轴坐标值中的最小值或最大值时,将所述两个边界框中的其中一个边界框构造为空,并将所述两个边界框中的另一个边界框构造为:所述另一个边界框的左边两个顶点的X轴坐标值为不小于所述凸n边形的n个顶点的X轴坐标值中的最小值的最小整数、右边两个顶点的X轴坐标值为不大于所述凸n边形的n个顶点的X轴坐标值中的最大值的最大整数、上边两个顶点的Y轴坐标值为不小于所述凸n边形的n个顶点的Y轴坐标值中的最小值的 最小整数、并且下边两个顶点的Y轴坐标值为不大于所述凸n边形的n个顶点的Y轴坐标值中的最大值的最大整数。
4.根据权利要求1所述的凸多边形遍历方法,其特征在于,当所述凸n边形的最左边的顶点的Y轴坐标值在所述凸n边形的n个顶点的Y轴坐标值中的最大值和最小值之间时,
将所述凸n边形的上边界框构造为:所述上边界框的左边两个顶点的X轴坐标值为不小于所述凸n边形的X轴坐标值中的最小值的最小整数,右边两个顶点的X轴坐标值为不大于所述凸n边形的X轴坐标值中的最大值的最大整数,上边两个顶点的Y轴坐标值为不小于所述凸n边形的Y轴坐标值中的最小值的最小整数,下边两个顶点的Y轴坐标值为不大于所述凸n边形的最左边的顶点的Y轴坐标值的最大整数,
并将所述凸n边形的下边界框构造为:所述下边界框的左边两个顶点的X轴坐标值为不小于所述凸n边形的X轴坐标值中的最小值的最小整数,右边两个顶点的X轴坐标值为不大于所述凸n边形的X轴坐标值中的最大值的最大整数,上边两个顶点的Y轴坐标值为不小于所述凸n边形的最左边的顶点的Y轴坐标值中的最小整数,下边两个顶点的Y轴坐标值为不大于所述凸n边形的Y轴坐标值中的最大值的最大整数。
5.根据权利要求3或4所述的凸多边形遍历方法,其特征在于,当所述上边界框和/或所述下边界框的一个或多个顶点位于显示平面之外时,根据所述显示平面的显示范围对所述上边界框和/或所述下边界框进行裁剪。
6.根据权利要求1所述的凸多边形遍历方法,其特征在于,在所述步骤S306中,通过自适应地调整各扫描行的起始扫描点来对位于所述两个边界框中的每一个中的凸n边形部分进行遍历。
7.根据权利要求6所述的凸多边形遍历方法,其特征在于,通过计算当前扫描行的前两个扫描行中的第一个处于所述凸n边形内部的点之间的距离来获取所述当前扫描行的起始扫描点。
8.一种用在图形光栅扫描中的凸多边形遍历***,其特征在于,包括:
边界框构造单元,用于根据凸n边形的n个顶点的坐标值,构造用在 对所述凸n边形进行光栅扫描的过程中的两个边界框,其中,n为大于2的整数;
起始位置设置单元,用于为所述两个边界框中的每一个设置遍历起始位置;以及
图形遍历单元,用于从所述两个边界框中的每一个的遍历起始位置开始,对位于所述两个边界框中的每一个中的凸n边形部分进行遍历,
其中,所述边界框构建单元包括:
最值获取模块,用于获取所述凸n边形的n个顶点的X轴坐标值中的最大值和最小值、以及Y轴坐标值中的最大值和最小值;
框构造模块,用于根据所述凸n边形的n个顶点的X轴坐标值中的最小值和最大值,找出所述凸n边形的最左边的顶点,并且根据所述凸n边形的最左边的顶点的Y轴坐标值与所述凸n边形的n个顶点的Y轴坐标值中的最大值和最小值之间的关系,构造所述两个边界框。
9.根据权利要求8所述的凸多边形遍历***,其特征在于,所述两个边界框包括上边界框和下边界框,其中,所述上边界框的遍历起始位置为所述上边界框的左下角,所述下边界框的遍历起始位置为所述下边界框的左上角。
10.根据权利要求8所述的凸多边形遍历***,其特征在于,在所述凸n边形的最左边的顶点的Y轴坐标值是所述凸n边形的n个顶点的Y轴坐标值中的最小值或最大值的情况下,所述边界框构造单元将所述两个边界框中的其中一个边界框构造为空,并将所述两个边界框中的另一个边界框构造为:所述另一个边界框的左边两个顶点的X轴坐标值为不小于所述凸n边形的n个顶点的X轴坐标值中的最小值的最小整数、右边两个顶点的X轴坐标值为不大于所述凸n边形的n个顶点的X轴坐标值中的最大值的最大整数、上边两个顶点的Y轴坐标值为不小于所述凸n边形的n个顶点的Y轴坐标值中的最小值的最小整数、并且下边两个顶点的Y轴坐标值为不大于所述凸n边形的n个顶点的Y轴坐标值中的最大值的最大整数。
11.根据权利要求8所述的凸多边形遍历***,其特征在于,在所述凸n边形的最左边的顶点的Y轴坐标值在所述凸n边形的n个顶点的Y轴 坐标值中的最大值和最小值之间的情况下,所述边界框构造单元
将所述凸n边形的上边界框构造为:所述上边界框的左边两个顶点的X轴坐标值为不小于所述凸n边形的X轴坐标值中的最小值的最小整数,右边两个顶点的X轴坐标值为不大于所述凸n边形的X轴坐标值中的最大值的最大整数,上边两个顶点的Y轴坐标值为不小于所述凸n边形的Y轴坐标值中的最小值的最小整数,下边两个顶点的Y轴坐标值为不大于所述凸n边形的最左边的顶点的Y轴坐标值的最大整数,
并将所述凸n边形的下边界框构造为:所述下边界框的左边两个顶点的X轴坐标值为不小于所述凸n边形的X轴坐标值中的最小值的最小整数,右边两个顶点的X轴坐标值为不大于所述凸n边形的X轴坐标值中的最大值的最大整数,上边两个顶点的Y轴坐标值为不小于所述凸n边形的最左边的顶点的Y轴坐标值中的最小整数,下边两个顶点的Y轴坐标值为不大于所述凸n边形的Y轴坐标值中的最大值的最大整数。
12.根据权利要求10或11所述的凸多边形遍历***,其特征在于,在所述上边界框和/或所述下边界框的一个或多个顶点位于显示平面之外的情况下,所述边界框构造单元根据所述显示平面的显示范围对所述上边界框和/或所述下边界框进行裁剪。
13.根据权利要求8所述的凸多边形遍历***,其特征在于,所述图形遍历单元通过自适应地调整各扫描行的起始扫描点来对位于所述两个边界框中的每一个中的凸n边形部分进行遍历。
14.根据权利要求13所述的凸多边形遍历***,其特征在于,所述图形遍历单元通过计算当前扫描行的前两个扫描行中的第一个处于所述凸n边形内部的点之间的距离来获取所述当前扫描行的起始扫描点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810184069 CN101753767B (zh) | 2008-12-15 | 2008-12-15 | 用在图形光栅扫描中的凸多边形遍历方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810184069 CN101753767B (zh) | 2008-12-15 | 2008-12-15 | 用在图形光栅扫描中的凸多边形遍历方法和*** |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110277692.0A Division CN102543040B (zh) | 2008-12-15 | 2008-12-15 | 用在图形光栅扫描中的凸多边形插值方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101753767A CN101753767A (zh) | 2010-06-23 |
CN101753767B true CN101753767B (zh) | 2013-02-27 |
Family
ID=42480109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810184069 Expired - Fee Related CN101753767B (zh) | 2008-12-15 | 2008-12-15 | 用在图形光栅扫描中的凸多边形遍历方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101753767B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007241878A (ja) * | 2006-03-10 | 2007-09-20 | Toshiba Corp | 描画装置、描画方法及び描画プログラム |
CN101116111A (zh) * | 2004-12-21 | 2008-01-30 | 高通股份有限公司 | 使用3d光栅化算法的2d/3d线条渲染 |
CN101178816A (zh) * | 2007-12-07 | 2008-05-14 | 桂林电子科技大学 | 基于面采样的体绘制可视化方法 |
-
2008
- 2008-12-15 CN CN 200810184069 patent/CN101753767B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101116111A (zh) * | 2004-12-21 | 2008-01-30 | 高通股份有限公司 | 使用3d光栅化算法的2d/3d线条渲染 |
JP2007241878A (ja) * | 2006-03-10 | 2007-09-20 | Toshiba Corp | 描画装置、描画方法及び描画プログラム |
CN101178816A (zh) * | 2007-12-07 | 2008-05-14 | 桂林电子科技大学 | 基于面采样的体绘制可视化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101753767A (zh) | 2010-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5423231B2 (ja) | グラフィックラスタライゼーションにおける三角形トラバース方法及び装置 | |
JP6843237B2 (ja) | シーンのポイントクラウドを表現するシステム及び方法 | |
US9754409B2 (en) | Method, apparatus and system for tessellating a parametric patch | |
CN106952338B (zh) | 基于深度学习的三维重建的方法、***及可读存储介质 | |
CN111399507B (zh) | 确定栅格地图中边界线的方法、划分栅格地图的方法 | |
CN110428504B (zh) | 文本图像合成方法、装置、计算机设备和存储介质 | |
US8406551B2 (en) | Rendering method of an edge of a graphics primitive | |
US20220319145A1 (en) | Image processing device, image processing method, moving device, and storage medium | |
CN110335354B (zh) | 一种模块化3d建模的方法和装置 | |
CN111581776A (zh) | 一种基于几何重建模型的等几何分析方法 | |
CN105894564B (zh) | 路面纹理的生成方法和装置 | |
CN111986303A (zh) | 流体渲染方法、装置、存储介质及终端设备 | |
CN116152218A (zh) | 施工质量智能检测方法及装置 | |
CN101901590B (zh) | 用于抗锯齿的多边形栅格化的方法和*** | |
CN111145264A (zh) | 多传感器的标定方法、装置及计算设备 | |
CN101753767B (zh) | 用在图形光栅扫描中的凸多边形遍历方法和*** | |
CN102543040B (zh) | 用在图形光栅扫描中的凸多边形插值方法和*** | |
US20240212101A1 (en) | Image fusion method, electronic device, unmanned aerial vehicle and storage medium | |
CN101739696B (zh) | 用于对凸多边形进行栅格化的***及方法 | |
CN116215520A (zh) | 基于超声波和3d环视的车辆碰撞预警及处理方法、装置 | |
JP2000348206A (ja) | 画像生成装置および画像優先度決定方法 | |
CN101739703A (zh) | 用于对三角形进行栅格化的方法和*** | |
CN115619915A (zh) | 三维模型贴图方法、装置、存储介质及电子设备 | |
CN114419118A (zh) | 三维点云配准方法、移动设备及存储介质 | |
CN109658324B (zh) | 一种三角形光栅化扫描方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130227 Termination date: 20161215 |
|
CF01 | Termination of patent right due to non-payment of annual fee |