实验报告(Bresenham画线算法).doc

实验报告(Bresenham画线算法).doc

ID:51833074

大小:81.50 KB

页数:5页

时间:2020-03-16

实验报告(Bresenham画线算法).doc_第1页
实验报告(Bresenham画线算法).doc_第2页
实验报告(Bresenham画线算法).doc_第3页
实验报告(Bresenham画线算法).doc_第4页
实验报告(Bresenham画线算法).doc_第5页
资源描述:

《实验报告(Bresenham画线算法).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验报告(Bresenham画线算法)一、实验目的根据Bresenham画线算法,掌握绘制直线的程序设计方法。二、实验原理为了说明算法原理,我们首先考虑斜率非负且不超过1的直线的光栅化过程。设直线的起点坐标为(xs,ys),终点坐标为(xe,ye),则直线的方程为:因此,其隐函数表示为:其中:显然,对于直线上的点,F(x,y)等于零;对于直线下方的点,F(x,y)大于零;而对直线上方的点,F(x,y)小于零。假设当前选择的像素点是(xi,yi),那么下一步要选择的像素点可能是NE(xi+1,yi+1),也可能是E(xi+1,yi)。

2、选择的原则是看哪一个离直线与x=xi+1的交点最近。运用中点法则,我们只需考察中点M在直线的哪一侧,即计算:F(M)=F(xi+1,yi+1/2)=a(xi+1)+b(yi+0.5)+c并确定其正负号。由于根据函数值F(xi+1,yi+1/2)进行判定,所以我们定义一个判定函数如下:di=2F(xi+1,yi+1/2)根据定义:di=2a(xi+1)+2byi+b+2c当di<0时,M在直线的上方,取E为下一个像素点;当d>0时,M在直线的下方,取NE为下一个像素点;当d=0时,两者都可以选,我们约定选E。di的计算需要做4次加法和

3、两次乘法。因此,为了有效地计算判定函数,我们需要建立关于di的递推公式。显然,di的变化依赖于下一个像素点选的是NE还是E。当di<0时,下一个像素点是E,那么:di+1=2F(xi+2,yi+1/2)=2a(xi+2)+2byi+b+2c=di+2a当di>0时,下一个像素点是NE,则:di+1=2F(xi+2,yi+1+1/2)=2a(xi+2)+2b(yi+1)+b+2c=di+2a+2b由此,得到计算判定函数di的递推公式:因为直线上的第一个像素点就是直线的起点(xs,ys),所以判定函数di的初值为:d0=2a(xs+1)

4、+2bys+b+2c=2dy-dx故满足条件的直线的Bresnham算法的步骤如下:Step1.初始化dx=xe-xs,dy=ye-ys,x=xs,y=ys,d=2dy-dx;Step2.当x0)theny=y+1;(3)计算判定函数d:if(d>0)thend=d+2dy-2dx;elsed=d+2dy;Step3.算法结束。三、实验程序#include#include#include

5、h>#include#includevoidBresenham_line(intxs,intys,intxe,intye,intc){intdx=abs(xe-xs),dy=abs(ye-ys),i,x=xs,y=ys;inttwoDX=2*dx,twoDY=2*dy,p=2*dy-dx;ints1,s2,interchange=0,temp;if(xe-xs>=0)s1=1;elses1=-1;if(ye-ys>=0)s2=1;elses2=-1;if(dy>dx){temp=dx;dx=dy;

6、dy=temp;interchange=1;}for(i=0;i<=dx;i++){putpixel(x,y,c);if(p>0){if(interchange)x+=s1;else{y+=s2;p-=twoDX;}}if(interchange)y+=s2;elsex+=s1;p+=twoDY;}}voidmain(){intx1=60,y1=88,x2=345,y2=789,c=GREEN;intdx,dy,n,k,f;intx,y;intgdriver,gmode;gdriver=DETECT;initgraph(&gdriv

7、er,&gmode,"");Bresenham_line(x1,y1,x2,y2,c);getch();closegraph();}四、测试结果x1=60,y1=88,x2=345,y2=789,c=GREEN,则得图如下示:五、实验总结本次实验,让我了解到Bresenham算法实现的具体过程,对此算法生成线的过程和特点也有了进一步的了解。Bresenham算法生成直线的速度很快,由于光栅化的影响,直线的亮度明显不均匀。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。