1 / 12
文档名称:

计算机图形学实验报告44.doc

格式:doc   大小:127KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机图形学实验报告44.doc

上传人:tswng35 2020/7/28 文件大小:127 KB

下载得到文件列表

计算机图形学实验报告44.doc

文档介绍

文档介绍:教育科学与技术学院2016/2017学年第一学期实验报告实验课程名称计算机图形学专业教育技术学学生学号B14150216学生姓名行健指导教师熊健、闫静杰指导单位通信与信息工程学院日期:2016年10月15日实验一:直线的生成实验目的:理解直线生成的基本原理编程实现Bresenham直线扫描生成算法 实验容:在理解Bresenham直线扫描生成算法的基本思想之后再具体编写C语言程序实验方法及编程:实现方法介绍过各行各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素实现代码及分析#include<>#include<>intmain(){intgdriver=DETECT,gmode,i,a[4],b[4];floatt,x,y;printf("inputfourpoints\n");for(i=0;i<4;i++)scanf("%d%d",&a[i],&b[i]);initgraph(&gdriver,&gmode,"C:\\TC20\\BGI");setcolor(12);for(i=0;i<3;i++)line(a[i],b[i],a[i+1],b[i+1]);for(t=;t<=;t+=){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+),(int)(y+),50);}getch();closegraph();return1;}实验结果及分析:‘实验二:自由曲线的生成实验目的:掌握曲线的表示形式、曲线的连续性条件、拟合和逼近的基本概念     掌握Bezier曲线的性质 编程实现Bezier曲线生成算法实验容:根据所学自由曲线的拟合方法及其相关知识编写一个绘制三次Bezier曲线的程序实验方法及编程:实现方法介绍运用所学的三次贝塞尔曲线生成的算法,根据对应的数据点计算出结果,并实现三段贝塞尔在屏幕上显示的功能实现代码及分析#include<>voidbezier_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+=){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*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);o(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");cleardevice();setcolor(BLUE);moveto(p[0][0],p[0][1]);for(i=1;i<NO;i++)o(p[i][0],p[i][1]);bezier_3(LIGHTRED,p);getch();/*按ESC键退出*/closegraph();实验结果及分析:实验三:二维图形的几何变换实验目的:掌握二维图形几何变换的基本原理及二维图形的几何算法。 巩固所学理论知识,加深对二维变换的理解,加深理解利用变换矩阵可用简单图形得到复杂图形的理解。 通过编程完成二维图形的几何变换动态过程。 实验容:根据二维图形几何变换的基本原理及其变换矩阵:(1)编写实现二维图形平移、旋转变换的C语言程序;(2)编写实现二维图形错切、比例变换的C语言程序;实验方法及编程:实现方法介绍设置变换的参数变量,以便观察不同取值情况下的变换效果;实现代码及分析#include<>#include<>#include<>#include<>doublexmax=,ymax=;doublef[3][3],xx,yy;intscx(doublexj){ intx;