计算机图形学实验报告44

上传人:yh****1 文档编号:125936796 上传时间:2020-03-21 格式:DOC 页数:22 大小:115.50KB
返回 下载 相关 举报
计算机图形学实验报告44_第1页
第1页 / 共22页
计算机图形学实验报告44_第2页
第2页 / 共22页
计算机图形学实验报告44_第3页
第3页 / 共22页
计算机图形学实验报告44_第4页
第4页 / 共22页
计算机图形学实验报告44_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《计算机图形学实验报告44》由会员分享,可在线阅读,更多相关《计算机图形学实验报告44(22页珍藏版)》请在金锄头文库上搜索。

1、 .教育科学与技术学院2016/2017学年第一学期实 验 报 告 实验课程名称 计算机图形学 专 业 教育技术学 学 生 学 号 B14150216 学 生 姓 名 姚行健 指 导 教 师 熊健、闫静杰 指 导 单 位 通信与信息工程学院 日 期: 2016 年 10 月 15 日实验一:直线的生成一、 实验目的:1. 理解直线生成的基本原理2. 编程实现Bresenham直线扫描生成算法二、 实验内容:在理解Bresenham直线扫描生成算法的基本思想之后再具体编写C语言程序三、 实验方法及编程:a) 实现方法介绍 过各行各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线与各

2、垂直网格线的交点,然后确定该列像素中与此交点最近的像素b) 实现代码及分析#include#includeint main()int gdriver=DETECT,gmode,i,a4,b4;float t,x,y;printf(input four pointsn);for(i=0;i4;i+)scanf(%d%d,&ai,&bi);initgraph(&gdriver,&gmode,C:TC20BGI) ;setcolor(12);for(i=0;i3;i+)line(ai,bi,ai+1,bi+1);for(t=0.000;t=1.00;t+=0.001)y=(1-t)*(1-t)*(1

3、-t)*b0+3*(1-t)*(1-t)*t*b1+3*(1-t)*t*t*b2+t*t*t*b3;x=(1-t)*(1-t)*(1-t)*a0+3*(1-t)*(1-t)*t*a1+3*(1-t)*t*t*a2+t*t*t*a3;putpixel(int)(x+0.5),(int)(y+0.5),50);getch();closegraph();return 1;四、 实验结果及分析: 实验二:自由曲线的生成一、 实验目的:1. 掌握曲线的表示形式、曲线的连续性条件、拟合和逼近的基本概念2. 掌握Bezier曲线的性质3. 编程实现Bezier曲线生成算法二、 实验内容:根据所学自由曲线的拟

4、合方法及其相关知识编写一个绘制三次Bezier曲线的程序三、 实验方法及编程:a) 实现方法介绍 运用所学的三次贝塞尔曲线生成的算法,根据对应的数据点计算出结果,并实现三段贝塞尔在屏幕上显示的功能b) 实现代码及分析#include void bezier_3(int color, double p42)double t,t1,t2,xt,yt;int rate=200,x,y;setcolor(color);moveto(p00,p01);for (t=0;t=1;t+=1.0/rate)yt=1-t;t1=yt*yt;t2=3*yt*t;xt=p00*t1*yt+p10*t2*yt+p20

5、*t2*t+p30*t*t*t;yt=p01*yt*t1+p11*t2*yt+p21*t2*t+p31*t*t*t;x=(int)(xt);y=(int)(yt);lineto(x,y);void main()static double p42=50,400,140,20,400,40,635,420;const NO=3; /*特征顶点数*/int i;int driver=DETECT,mode;initgraph(&driver,&mode,C:TC20BGI);cleardevice();setcolor(BLUE);moveto(p00,p01);for (i=1;iNO;i+)li

6、neto(pi0,pi1);bezier_3(LIGHTRED,p);getch(); /*按ESC键退出*/closegraph();四、 实验结果及分析:实验三:二维图形的几何变换一、 实验目的:1. 掌握二维图形几何变换的基本原理及二维图形的几何算法。2. 巩固所学理论知识,加深对二维变换的理解,加深理解利用变换矩阵可用简单图形得到复杂图形的理解。3. 通过编程完成二维图形的几何变换动态过程。二、 实验内容:根据二维图形几何变换的基本原理及其变换矩阵:(1)编写实现二维图形平移、旋转变换的C语言程序;(2)编写实现二维图形错切、比例变换的C语言程序;三、 实验方法及编程:a) 实现方法介

7、绍 设置变换的参数变量,以便观察不同取值情况下的变换效果;b) 实现代码及分析#include#include#include#includedouble xmax=639.0, ymax=399.0;double f33,xx,yy;int scx(double xj)int x;x=(int)(xj+xmax/2);return(x);int scy(double yj)int y;y=ymax-(int)(yj+ymax/2);return(y);void parallel(double dx,double dy)f00=1.0;f01=0.0;f02=0.0;f10=0.0;f11=1

8、.0;f12=0.0;f20=dx; f21=dy; f22=1.0;void scale(double s)f00=s;f01=0.0;f02=0.0;f10=0.0;f11=s;f12=0.0;f20=0.0; f21=0.0; f22=1.0;void taisho_y() f00=-1.0;f01=0.0;f02=0.0;f10=0.0;f11=1.0;f12=0.0;f20=0.0; f21=0.0; f22=1.0;void axis() line(scx(0.0),scy(-ymax/2),scx(0),scy(ymax/2);line(scx(-xmax/2),scy(0.0)

9、,scx(xmax/2),scy(0.0);void tuoq(double a,double b) f00=1.0;f01=b;f02=1.0;f10=a;f11=1.0;f12=0.0;f20=0.0; f21=0.0; f22=1.0;double affinex(double x,double y,double d)xx=x*f00+y*f10+d*f20;return(xx);double affiney(double x,double y,double d)yy=x*f01+y*f11+d*f21;return(yy);void drawtu(x2,y2)double x25,y2

10、5;int i;for(i=0;i=3;i+) line(scx(x2i),scy(y2i),scx(x2i+1),scy(y2i+1); void main()int drive=DETECT,mode;static double x1=50.0,50.0,150.0,150.0,50.0;static double y1=0.0,100.0,100.0,0.0,0.0;static double x25,y25;int i;double x,y,xx,yy,yt;initgraph(&drive,&mode,c:tc20bgi);setcolor(YELLOW); axis(); for(

11、i=0;i=3;i+) line(scx(x1i),scy(y1i),scx(x1i+1),scy(y1i+1); /*parallel(100,-100) */ /平行变换 getch(); x=100;y=-100; parallel(x,y); setcolor(GREEN); for(i=0;i=4;i+) x2i=affinex(x1i,y1i,1.0); y2i=affiney(x1i,y1i,1.0); drawtu(x2,y2); yt=scy(y20)+10; outtextxy(scx(x20),yt,parallel(100,-100);/*taisho_y() */ /

12、关于y轴对称 getch(); taisho_y(); setcolor(RED); for(i=0;i=4;i+) x2i=affinex(x1i,y1i,1.0); y2i=affiney(x1i,y1i,1.0); drawtu(x2,y2); yt=scy(y20)+10; outtextxy(scx(x20),yt,taisho_y);/*touq(2,0) */ /按比例增大getch(); tuoq(2,0); setcolor(LIGHTRED); for(i=0;i=4;i+) x2i=affinex(x1i,y1i,1.0);y2i=affiney(x1i,y1i,1.0);drawtu(x2,y2);yt=scy(y20)+10;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 设计及方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号