欢迎来到天天文库
浏览记录
ID:1377156
大小:50.00 KB
页数:8页
时间:2017-11-11
《计算机图形学--直线段生成绘制的实现算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二直线段生成绘制的实现算法班级08信计(2)班学号20080502085姓名王景超分数一、实验目的和要求:1.理解基本图形元素光栅化的基本原理2.掌握一种基本图形元素光栅化算法3.利用OpenGL实现直线光栅化的DDA算法二、实验内容:1. 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果;2. 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告;3. 根据示范代码,将其改造为圆的光栅化算法,写入实验报告;4. 了解和使用OpenGL的生成直线的命令
2、,来验证程序运行结果。三、实验结果分析:1.该程序实现了三种算法的直线段绘制2.比较三种算法的结果:像素逼近效果由好到差依次为:B算法、DDA算法、中点算法执行速度由快到慢依次为:中点算法、DDA算法、B算法程序代码如下:/*WIN-TCBGI图形编程模板*/#include"Conio.h"#include"graphics.h"#defineclosegrclosegraphvoidinitgr(void)/*BGI初始化*/{intgd=DETECT,gm=0;/*和gd=VGA,gm=VGAHI是同样效果*
3、/registerbgidriver(EGAVGA_driver);/*注册BGI驱动后可以不需要.BGI文件的支持运行*/initgraph(&gd,&gm,"");}/*-----------------------------数值微分法生成直线-----------------------------*/voidLineDDA1(intx0,inty0,intx1,inty1,intcolor)/*假定x04、;m=dx/dy;x=x0;for(y=y0;y>=y1;y--){putpixel((int)(x+0.5),y,color);x-=m;}}voidLineDDA2(intx0,inty0,intx1,inty1,intcolor)/*假定x05、DDA3(intx0,inty0,intx1,inty1,intcolor)/*假定x01*/{inty;floatdy,dx,x,m;dx=x1-x0;dy=y1-y0;m=dx/dy;x=x0;for(y=y0;y<=y1;y++){putpixel((int)(x+0.5),y,color);x+=m;}}/*----------------------------中点算法生成直线--------------------------------*/voidMidPointLine1(int6、x0,inty0,intx1,inty1,intcolor){/*假定x0=y1){if(d>0)d+=incrE;else{d+=incrNE;x++;}y--;putpixel(x,y,color);}}voidMidPointLine27、(intx0,inty0,intx1,inty1,intcolor){/*假定x08、intLine3(intx0,inty0,intx1,inty1,intcolor){/*假定x0
4、;m=dx/dy;x=x0;for(y=y0;y>=y1;y--){putpixel((int)(x+0.5),y,color);x-=m;}}voidLineDDA2(intx0,inty0,intx1,inty1,intcolor)/*假定x05、DDA3(intx0,inty0,intx1,inty1,intcolor)/*假定x01*/{inty;floatdy,dx,x,m;dx=x1-x0;dy=y1-y0;m=dx/dy;x=x0;for(y=y0;y<=y1;y++){putpixel((int)(x+0.5),y,color);x+=m;}}/*----------------------------中点算法生成直线--------------------------------*/voidMidPointLine1(int6、x0,inty0,intx1,inty1,intcolor){/*假定x0=y1){if(d>0)d+=incrE;else{d+=incrNE;x++;}y--;putpixel(x,y,color);}}voidMidPointLine27、(intx0,inty0,intx1,inty1,intcolor){/*假定x08、intLine3(intx0,inty0,intx1,inty1,intcolor){/*假定x0
5、DDA3(intx0,inty0,intx1,inty1,intcolor)/*假定x01*/{inty;floatdy,dx,x,m;dx=x1-x0;dy=y1-y0;m=dx/dy;x=x0;for(y=y0;y<=y1;y++){putpixel((int)(x+0.5),y,color);x+=m;}}/*----------------------------中点算法生成直线--------------------------------*/voidMidPointLine1(int
6、x0,inty0,intx1,inty1,intcolor){/*假定x0=y1){if(d>0)d+=incrE;else{d+=incrNE;x++;}y--;putpixel(x,y,color);}}voidMidPointLine2
7、(intx0,inty0,intx1,inty1,intcolor){/*假定x08、intLine3(intx0,inty0,intx1,inty1,intcolor){/*假定x0
8、intLine3(intx0,inty0,intx1,inty1,intcolor){/*假定x0
此文档下载收益归作者所有