您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 计算机图形学DDA画线算法及具体程序实现
数学与软件科学学院实验报告学期:2010至2011第一学期2010年9月20日课程名称:计算机图形学专业:信息与计算科学2007级5班实验编号:01实验项目:DDA画线指导教师庞朝阳姓名:学号:200706005实验成绩:一、实验目的及要求1)理解直线的生成算法;2)掌握直线生成算法——数值微分(DDA)法,并用C++程序实现;二、实验内容1)用C++实现DDA画线程序;2)用C++实现按y=ax+b画直线;3)每个取10万次循环,对比运行时间。三、主要仪器设备及软件环境1)计算机;2)Vc++6.0。四、具体实验内容:1.算法的基本思想:已知过端点0P(0x,0y)和1,11yxP的直线段L(0P,1P),斜率为k=0101xxyy.画线过程:从x的左端点0x开始,向x右端点步进,步长=1(像素),计算y=ax+b,取像素点(x,round(y))作为当前点的坐标,计算xkbkxbkxyiii11;若令1x,则kyyii1,即当x每递增1,y递增k。综上,DDA算法的本质在于利用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x,y值。2.DDA算法的优缺点优点:与基本算法相比,在扫描过程中减少了浮点运算,提高了效率。缺点:由于x与xd,y与yd必须用浮点来表示,且每一步都要进行四舍五入取整,不利于硬件实现,故效率有待提高。3.程序代码#includeiostream#includemath.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++;}}}4.程序结果:
本文标题:计算机图形学DDA画线算法及具体程序实现
链接地址:https://www.777doc.com/doc-4523463 .html