直线生成方法技术

技术编号:2946224 阅读:214 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及计算机图形处理技术,特别涉及一种直线生成方法。本发明专利技术所要解决的技术问题是,提供一种新的直线生成方法,该方法不包括乘除运算,也没有浮点运算。采用的技术方案包括以下步骤:a.确定起点行坐标与纵坐标,终点行坐标与纵坐标;b.计算行坐标增量与纵坐标增量;c.判断纵坐标增量是否大于或等于行坐标增量,如否,进入步骤d;如是,进入步骤f;d.当前行坐标增加1;利用累加计算纵坐标增量,判断纵坐标不是否增加1;e.当前纵坐标增加1;利用累加计算行坐标增量,判断行坐标是否增加1;f.输出显示由当前行坐标与当前纵坐标表示的像素点。本发明专利技术的有益效果是,逻辑简单,非常有利于实现。

【技术实现步骤摘要】

本专利技术涉及计算机图形处理技术,特别涉及一种。
技术介绍
直线生成是计算机图形学的基本技术。也是计算机图形学中的一项核心技术。实际为已知一条直线的两个端点坐标,确定二维像素矩阵上位于或最靠近这条直线,即是理论直线的所有像素的坐标值。在光栅显示器的荧光屏上生成一个对象,实质上是往帧缓存寄存器的相应单元中填入数据。画一条从起点坐标(x1,y1)到终点坐标(x2,y2)的直线,实质上是一个发现最佳逼近直线的像素点序列。目前比较常见的成熟有DDA直线生成法(数值微分直线生成法)、中心画线法、Bresenham画线法,以及利用两步法、四步法、对称法对这些方法的一些改进。这些方法在生成直线时由于运算复杂。硬件逻辑资源消耗大,或占用CPU资源较大。
技术实现思路
本专利技术所要解决的技术问题是,提供一种新的。本专利技术为解决上述技术问题所采用的技术方案是,,包括以下步骤a、确定起点的行坐标与纵坐标,终点行坐标与纵坐标,设当前行坐标的初值为起点行坐标;当前纵坐标的初值为起点纵坐标;b、判断行坐标增量,行坐标增量是否大于或等于纵坐标增量,如否,进入步骤c;如是,进入步骤d;所述行坐标增量为终点行坐标与起点行坐标之差;所述纵坐标增量为终点纵坐标与终点纵坐标之差;c、当前行坐标增加1;累加纵坐标增量,判断纵坐标增量累加值是否大于或等于行坐标增量;如否,当前纵坐标不变,进入步骤f;如是,当前纵坐标增加1,将纵坐标增量累加值与行坐标增量之差作为纵坐标增量累加初值,进入步骤f;d、当前纵坐标增加1;累加行坐标增量,判断行坐标增量累加值是否大于或等于纵坐标增量;如否,当前行坐标不变,进入步骤f;如是,当前行坐标增加1,将行坐标增量累加值与纵坐标增量之差作为行坐标增量累加初值,进入步骤f;f、输出显示由当前行坐标与当前纵坐标表示的像素点,进入步骤g;g、判断当前行坐标、当前纵坐标是否与终点行坐标、终点纵坐标对应相等,如是,结束计算;如否,进入步骤d。本专利技术的有益效果是,该算法只做判断和加减运算,而且都是整数运算。逻辑简单,非常有利于硬件实现,可以节省大量的硬件逻辑资源。用于软件实现,也可以有效地降低CPU利用率,提升运算速度。以下通过附图与实施例对本专利技术做进一步说明。附图说明图1为实施例1的流程图;图2为实施例2的流程图;图3为实施例直线生成的示意图。具体实施例方式计算机图形学中的直线生成一般只考虑在以起点坐标为原点而成的二维空间的第一象限中的直线,其它象限中的直线可以通过对称算法很容易的得出,所以本专利技术也重在论述上述第一象限中的。设直线两端点坐标分别为(x1,y1),(x2,y2)。当x2>x1,y2>y1时,以(x1,y1)为起点坐标,以(x2,y2)为终点坐标。当x2<x1,y2<y1时,以(x2,y2)为起点坐标,以(x1,y1)为终点坐标。两种情况的算法一样,本文以(x1,y1)为起点坐标的情况为例说明本专利技术,流程如下,其中当前点坐标为(x,y)a、确定起点行坐标x1,终点纵坐标y1,终点行坐标x2,终点纵坐标y2;x=x1;y=y1;b、判断行坐标增量dx是否大于或等于纵坐标增量dy,如否,进入步骤c;如是,进入步骤d;dx=x2-x1;dy=y2-y1;c、x=x+1累加纵坐标增量,引入累加变量e,以便进行累加计算,累加变量e在此为纵坐标增量累加值,设e的初值为0,累加计算e=e+dy;判断e是否大于或等于dx,如是,y=y+1,将纵坐标增量累加值减去行坐标增量,即e=e-dx,进入步骤f;如否,y=y,进入步骤f; c、y=y+1;累加行坐标增量,引入累加变量e,累加变量e在此为行坐标增量累加值,设e的初值为0,累加计算e=e+dx;判断e是否大于或等于dy,如是,x=x+1,将行坐标增量累加值减去纵坐标增量,即e=e-dy,进入步骤f;如否,x=x,进入步骤f;f、输出显示(x,y),进入步骤g;g、判断是否(x,y)=(x2,x2),如是,结束计算;如否,进入步骤d。同理,步骤c与步骤d通过以下方法实现,也能达到与上述方案相同的效果c、x=x+1;累加纵坐标增量,引入累加变量e,设e的初值为0,累加计算e=e-dy,在此的累加理解为反向累加,即e=e+(-dy);判断e的绝对值是否大于或等于dx,如是,y=y+1,将纵坐标增量累加值减去行坐标增量,e=e-(-dx)=e+dx,进入步骤f;如否,y=y,进入步骤f;d、y=y+1;累加行坐标增量,引入累加变量e,设e的初值为0,累加计算e=e-dx;判断e是否大于或等于dy,如是,x=x,进入步骤f;如否,x=x+1,将行坐标增量累加值减去纵坐标增量,e=e+dy,进入步骤f。实施例1本实施例流程如图1所示,当dy<dx,以x为步进方向,每次x步进1;进一步,通过对dy的累加来判断y是否增1,或不变。当dy≥dx,以y为步进方向,每次y步进1;进一步,通过对dx的累加来判断x是否增1,或不变。进行累加的方法如下(1)当dy<dx,x=x+1设e的初值为0,e=e+dy;判断e是否大于或等于dx,如否,y=y;如是,y=y+1,e=e-dx;(2)当dy≥dx,y=y+1;设e的初值为0,e=e+dx;判断e是否大于或等于dy,如否,x=x,;如是,x=x+1,e=e-dy;以dy<dx时为例,说明本实施例的绘制起点为(0,0),终点为(13,7)的一条直线。那么,x1=0,y1=0,x2=13,x2=7,dx=13,dy=7,e=0;(1)e=0;x=x1,y=y1;显示(0,0);dy<dx以x步进,e=e+dy;(2)e=0+7=7;7<13;绘制(1,0);(3)e=e+dy=7+7=14;14>13;绘制(2,1);e=e-dx=14-13=1;(4)e=e+7=8;8<13;绘制(3,1);(5)e=e+dy=8+7=15;15>13;绘制(4,2);e=e-dx=15-13=2;(6)e=e+7=9;9<13;绘制(5,2);(7)e=e+dy=9+7=16;16>13;绘制(6,3);e=e-dx=16-13=3;(8)e=e+7=10;10<13;绘制(7,3)(9)e=e+dy=10+7=17;17>13;绘制(8,4);e=e-dx=17-13=4;(10)e=e+7=11;11<13;绘制(9,4)(11)e=e+dy=11+7=18;18>13;绘制(10,5);e=e-dx=18-13=5;(12)e=e+7=12;12<13;绘制(11,5)(13)e=e+dy=12+7=19;19>13;绘制(12,6);e=e-dx=19-13=6;(14)e=e+dy=6+7=13;13=13;绘制(13,7);e=e-dx=13-13=0;显示出的像素点生成如图3所示的直线图像。实施例2本实施例流程如图2所示,当dy<dx,以x为步进方向,每次x步进1;进一步,通过对dy的累加来判断y是否增1,或不变。当dy≥dx,以y为步进方向,每次y步进1;进一步,通过对dx的累加来判断x是否增1,或不变。进行累加的方法如下(1)当dy<dx,x=x+1 设e的初值为0,e=e-dy;判断e的绝对值是否大于或等于dx,如否,y=y;如是,y=y+1本文档来自技高网...

【技术保护点】
直线生成方法,其特征在于,包括以下步骤:    a、确定起点的行坐标与纵坐标,终点行坐标与纵坐标,设当前行坐标的初值为起点行坐标;当前纵坐标的初值为起点纵坐标;    b、判断行坐标增量,行坐标增量是否大于或等于纵坐标增量,如否,进入步骤c;如是,进入步骤d;     所述行坐标增量为终点行坐标与起点行坐标之差;    所述纵坐标增量为终点纵坐标与终点纵坐标之差;    c、当前行坐标增加1;累加纵坐标增量,判断纵坐标增量累加值是否大于或等于行坐标增量;    如否,当前纵坐标不变,进入步骤f;如是,当前纵坐标增加1,将纵坐标增量累加值与行坐标增量之差作为纵坐标增量累加初值,进入步骤f;    d、当前纵坐标增加1;累加行坐标增量,判断行坐标增量累加值是否大于或等于纵坐标增量;    如否,当前行坐标不变,进入步骤f;如是,当前行坐标增加1,将行坐标增量累加值与纵坐标增量之差作为行坐标增量累加初值,进入步骤f;    f、输出显示由当前行坐标与当前纵坐标表示的像素点,进入步骤g;    g、判断当前行坐标、当前纵坐标是否与终点行坐标、终点纵坐标对应相等,如是,结束计算;如否,进入步骤d...

【技术特征摘要】
...

【专利技术属性】
技术研发人员:孙镇
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:51[中国|四川]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1