资源描述:
《计算机图形学实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、教育科学与技术学院2016/2017学年第一学期实验报告实验课程名称计算机图形学专业教育技术学学生学号B14150216学生姓名姚行健指导教师熊健、闫静杰指导单位通信与信息工程学院日期:2016年10月15日实验一:直线的生成一、实验目的:1.理解直线生成的基本原理2.编程实现Bresenham直线扫描生成算法 二、实验内容:在理解Bresenham直线扫描生成算法的基本思想之后再具体编写C语言程序三、实验方法及编程:a)实现方法介绍过各行各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直
2、线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素b)实现代码及分析#include#includeintmain(){intgdriver=DETECT,gmode,i,a[4],b[4];floatt,x,y;printf("inputfourpoints");for(i=0;i<4;i++)scanf("%d%d",&a[i],&b[i]);initgraph(&gdriver,&gmode,"C:\TC20\BGI");setcolo
3、r(12);for(i=0;i<3;i++)line(a[i],b[i],a[i+1],b[i+1]);for(t=0.000;t<=1.00;t+=0.001){y=(1-t)*(1-t)*(1-t)*b[0]+3*(1-t)*(1-t)*t*b[1]+3*(1-t)*t*t*b[2]+t*t*t*b[3];x=(1-t)*(1-t)*(1-t)*a[0]+3*(1-t)*(1-t)*t*a[1]+3*(1-t)*t*t*a[2]+t*t*t*a[3];putpixel((int)(x+0.5),(
4、int)(y+0.5),50);}getch();closegraph();return1;}四、实验结果及分析:‘实验二:自由曲线的生成一、实验目的:1.掌握曲线的表示形式、曲线的连续性条件、拟合和逼近的基本概念 2.掌握Bezier曲线的性质 3.编程实现Bezier曲线生成算法二、实验内容:根据所学自由曲线的拟合方法及其相关知识编写一个绘制三次Bezier曲线的程序三、实验方法及编程:a)实现方法介绍运用所学的三次贝塞尔曲线生成的算法,根据对应的数据点计算出结果,并实现三段贝塞尔在屏幕上
5、显示的功能b)实现代码及分析#includevoidbezier_3(intcolor,doublep[4][2]){doublet,t1,t2,xt,yt;intrate=200,x,y;setcolor(color);moveto(p[0][0],p[0][1]);for(t=0;t<=1;t+=1.0/rate){yt=1-t;t1=yt*yt;t2=3*yt*t;xt=p[0][0]*t1*yt+p[1][0]*t2*yt+p[2][0]*t2*t+p[3][0]*t*
6、t*t;yt=p[0][1]*yt*t1+p[1][1]*t2*yt+p[2][1]*t2*t+p[3][1]*t*t*t;x=(int)(xt);y=(int)(yt);lineto(x,y);}}voidmain(){staticdoublep[4][2]={50,400,140,20,400,40,635,420};constNO=3;/*特征顶点数*/inti;intdriver=DETECT,mode;initgraph(&driver,&mode,"C:\TC20\BGI");clea
7、rdevice();setcolor(BLUE);moveto(p[0][0],p[0][1]);for(i=1;i8、通过编程完成二维图形的几何变换动态过程。 二、实验内容:根据二维图形几何变换的基本原理及其变换矩阵:(1)编写实现二维图形平移、旋转变换的C语言程序;(2)编写实现二维图形错切、比例变换的C语言程序;三、实验方法及编程:a)实现方法介绍设置变换的参数变量,以便观察不同取值情况下的变换效果;b)实现代码及分析#include#include#include#includedoublex