计算机图形学 直线的生成算法的实现

计算机图形学 直线的生成算法的实现

ID:22323618

大小:156.50 KB

页数:6页

时间:2018-10-28

计算机图形学  直线的生成算法的实现_第1页
计算机图形学  直线的生成算法的实现_第2页
计算机图形学  直线的生成算法的实现_第3页
计算机图形学  直线的生成算法的实现_第4页
计算机图形学  直线的生成算法的实现_第5页
资源描述:

《计算机图形学 直线的生成算法的实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验二直线的生成算法的实现班级08信计学号58姓名陈瑞雪分数一、实验目的和要求:1、掌握直线的生成算法的基本知识2、熟悉生成直线的DDA算法,Bresenham算法,基于中点算法3、掌握各种算法的生成原理二、实验内容:1、编程实现DDA算法,Bresenham算法,基于中点算法完成直线生成2、分析对比各种算法的基本思想和运行效率3、输出要求:每种算法要分别完成直线的生成三、实验结果分析1、该程序实现了三种算法的直线生成2、比较三种算法的结果:像素逼近效果由好到差依次为:B算法、DDA算法、中点算法执行速度由快到慢依次为:中点算法、DDA算

2、法、B算法1、DDA算法程序代码:#include#include#include#include//四舍五入intRound(floatx){return(int)(x<0?x-0.5:x+0.5);}//使用DDA算法画任意斜率的直线(包括起始点,不包括终止点)voidLine_DDA(intx1,inty1,intx2,inty2,intcolor){floatx,y;//当前坐标点floatcx,cy;//x、y方向上的增量intsteps=abs(x2

3、-x1)>abs(y2-y1)?abs(x2-x1):abs(y2-y1);x=(float)x1;y=(float)y1;cx=(float)(x2-x1)/steps;cy=(float)(y2-y1)/steps;for(inti=0;i

4、ed)time(NULL));for(intx=-320;x<320;x+=15){Line_DDA(0,0,320,x,RGB(rand()%256,rand()%256,rand()%256));Line_DDA(0,0,x,240,RGB(rand()%256,rand()%256,rand()%256));Line_DDA(0,0,-320,x,RGB(rand()%256,rand()%256,rand()%256));Line_DDA(0,0,x,-240,RGB(rand()%256,rand()%256,rand()%25

5、6));}//按任意键退出getch();closegraph();}运行结果:2、Bresenham算法程序代码:#include#include#include#definePI3.14//使用Bresenham算法画任意斜率的直线(包括起始点,不包括终止点)voidLine_Bresenham(intx1,inty1,intx2,inty2,intcolor){intx=x1;inty=y1;intdx=abs(x2-x1);intdy=abs(y2-y1);ints1=x2

6、>x1?1:-1;ints2=y2>y1?1:-1;boolinterchange=false;//默认不互换dx、dyif(dy>dx)//当斜率大于1时,dx、dy互换{inttemp=dx;dx=dy;dy=temp;interchange=true;}intp=2*dy-dx;for(inti=0;i=0){if(!interchange)//当斜率<1时,选取上下象素点y+=s2;else//当斜率>1时,选取左右象素点x+=s1;p-=2*dx;}if(!in

7、terchange)x+=s1;//当斜率<1时,选取x为步长elsey+=s2;//当斜率>1时,选取y为步长p+=2*dy;}}//主函数voidmain(){initgraph(640,480);intc;doublea;intx,y,r=200;for(a=0;a

8、Bresenham(320,240,x,y,RGB(0,255,0));}getch();closegraph();}运行结果:3、基于中点算法画任意斜率的直线的程序代码:#include

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

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

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