计算机图形学课程设计报告1

计算机图形学课程设计报告1

ID:39504371

大小:3.48 MB

页数:16页

时间:2019-07-04

计算机图形学课程设计报告1_第1页
计算机图形学课程设计报告1_第2页
计算机图形学课程设计报告1_第3页
计算机图形学课程设计报告1_第4页
计算机图形学课程设计报告1_第5页
资源描述:

《计算机图形学课程设计报告1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、[设计目的]运用DDA算法画出斜率各不同的直线,包括大于-1小于1、等于1,大于1,小于-1,无穷大。[设计思路](写出设计所参考的理论或算法步骤)已知过端点P0(x0,y0),P1(x1,y1)的直线段L:y=kx+b,直线斜率为,这种方法直观,但效率太低,因为每一步需要一次浮点乘法和一次舍入运算。计算yi+1=kxi+1+b=kxi+b+kDx=yi+kDx当Dx=1;yi+1=yi+kl即:当x每递增1,y递增k(即直线斜率);l注意上述分析的算法仅适用于

2、k

3、≤1的情形。在这种情况下,x每增加1,y最

4、多增加1。l当

5、k

6、>1时,必须把x,y地位互换[主要程序代码]voidLineDDA(intx0,inty0,intx1,inty1,intcolor){if(dx==0){x=x0;y=min(y0,y1);while(y

7、);x++){putpixel((int)x,(int)(y+0.5),color);y+=m;delay(1000);}}else{y=min(y0,y1);if(y==y0)x=x0;elsex=x1;for(;y<=max(y0,y1);y++){putpixel((int)(x+0.5),(int)y,color);x+=1/m;delay(1000);}}}}[运行效果](抓图及文字说明)[设计目的]中点算法画直线的设计与实现运用中点算法画出斜率各不同的直线,包括大于-1小于1、等于1,大于1,小于

8、-1,无穷大。[设计思路](写出设计所参考的理论或算法步骤)中点画线算法的原则是:如下图所示,但斜率K<1时,选定一个点之后,再计算中点M。如果M>0,这线更靠近E点,下一点选择为E点。反之选择NE点。首先:f(x,y)=ax+by+c=0,且 y=dy/dx*x+B, so:f(x,y)=dy*x-dx*y+Bdx=0so:a=dy,b=-dx,c=Bdx.假设,已经选定P点,应用中点法则选择下一点是,我们只要计算f(x+1,y+1/2),并考察是正数还是负数。我们定义d=f(x+1,y+1/2)=a(x+

9、1)+b(y+1/2)+c.这样,对于d>0,d<0,我们只要选择NE点和E点就可以了。这边假设选定为E点,那么中点M的位置怎么变化和d的值如何变化呢?显然M就沿着x轴递增一步。此时:d1=f(x+2,y+1/2)从d1中减去d,可以得到一个增量差。d1=a=dy。同理:如果选定下一点为NE点,d2=a+b=dy-dx。基于上面的讨论,增量的中点技术可以概括为:在每一步,我们根据上一步所得到的增量的符号去选择下一个像素点。然后根据说选择的像素,判定变量增加相应的增量差d1或d2。对于初始值,我们选择第一个端点

10、为(x0,y0)。则M为(x0+1,y+1/2).f(x0+1,y0+1/2)=f(x0,y0)+a+b/2. 故:d0=a+b/2=dy-dx/2为去掉d0中的小数,我们对d0进行放大。(在方程两边同乘于2)d0=2*dy–dxd1=2*dyd2=2*(dy-dx)[主要程序代码]voidMidPointLine(intx0,inty0,intx1,inty1,intcolor){if(dx==0)/*k为无穷大*/{y=min(y0,y1);x=x0;while(y

11、l(x,y,color);delay(1000);y++;}}elseif(dy==0)/*k==0*/{。。。。}else{k=(dy*1.0)/dx;if(k<1&&k>0)/*00){x++;d+=incrE;}el

12、se{y++;x++;d+=incrNE;}putpixel(x,y,color);delay(1000);}}elseif(k>=1)/*whenk>1*/{。。。。。}elseif((k>=-1)&&(k<0))/*-1

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

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

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