预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

计算机图形学DDA画线算法及具体程序实现计算机图形学DDA画线算法及具体程序实现计算机图形学DDA画线算法及具体程序实现数学与软件科学学院实验报告学期:2010至2011第一学期2010年9月20日课程名称:计算机图形学专业:信息与计算科学2007级5班实验编号:01实验项目:DDA画线指导教师庞朝阳姓名:学号:200706005实验成绩:实验目的及要求理解直线的生成算法;掌握直线生成算法——数值微分(DDA)法,并用C++程序实现;实验内容用C++实现DDA画线程序;用C++实现按y=ax+b画直线;每个取10万次循环,对比运行时间.三、主要仪器设备及软件环境计算机;Vc++6.0.具体实验内容:1。算法的基本思想:已知过端点(,)和的直线段L(,),斜率为k=.画线过程:从x的左端点开始,向x右端点步进,步长=1(像素),计算y=ax+b,取像素点(x,round(y))作为当前点的坐标,计算;若令,则,即当x每递增1,y递增k。综上,DDA算法的本质在于利用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x,y值。2.DDA算法的优缺点优点:与基本算法相比,在扫描过程中减少了浮点运算,提高了效率。缺点:由于x与,y与必须用浮点来表示,且每一步都要进行四舍五入取整,不利于硬件实现,故效率有待提高.程序代码#include<iostream>#include"math。h”#defineTRUE1usingnamespacestd;classDDA{public:voidDDALine(intx0,inty0,intx1,inty1,COLORREFcolor,CDC*pDC){floatdx,dy,length,x,y;if(abs(x1-x0)>=abs(y1-y0))length=abs(x1-x0);elselength=abs(y1—y0);dx=(x1-x0)/length;dy=(y1-y0)/length;inti=1;x=x0;y=y0;while(i<=length){pDC—>SetPixel((int)(x+0.5),(int)(y+0.5),color);x=x+dx;y=y+dy;i++;}}}程序结果: