计算机图形学实验报告
更新时间:2024-03-02 16:54:02 阅读量: 综合文库 文档下载
教育科学与技术学院
2016/2017学年第一学期
实 验 报 告
实验课程名称 计算机图形学
专 业 教育技术学 学 生 学 号 B14150226 学 生 姓 名 朱志耀 指 导 教 师 熊健、闫静杰 指 导 单 位 通信与信息工程学院
日 期: 2016年 11月 24日
1、每项实验报告的内容
==============================================================================
实验一:直线的生成算法实现 一、 实验目的:
理解直线生成的原理; 二、 实验内容:
1、了解直线的生成原理
2、掌握几种基本的直线生成算法:DDA画线法、中点画线法、Bresenham画线法。 3、仿照教材关于直线生成的Bresenham算法,编译程序。 4、调试、编译、运行程序。 三、 实验方法及编程:
a) 实现方法介绍 本次实验是在Turbo C 2.0的平台上编译实现的;Bresenham算法
的基本原理是:过各行各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。 b) 实现代码及分析
#include \ #include \
Bresenham_line(x0,y0,x1,y1,color) int x0,y0,x1,y1,color; {
int x,y,dx,dy,i,e; float k; dx=x1-x0; dy=y1-y0;
k=(dy*1.0)/dx; /*求斜率*/ e=2*dy-dx; x=x0;
y=y0;
for (x=x0; x<=x1; x++) {
putpixel(x,y,RED);/*画红色的像素点*/
e=e+2*dy; if(e>=0)
{
y++;
e=e-2*dx; }
}
}
int main()
{
int x0,y0,x1,y1,c;
int graphdriver=DETECT,graphmode=0;
/*自动搜索显示器类型和显示模式*/
initgraph(&graphdriver,&graphmode,\
/*初始化图形系统*/
setbkcolor(WHITE); /*设置背景为白色*/
setcolor(BLUE); /*设置直线为蓝色*/ Bresenham_line(100,100,500,500,3);
/*画以(100,100)为起点,(500,500)为终点,3为像素点的直线*/
getch();
/*从控制台读取一个字符,但不显示在屏幕上*/ closegraph(); /*关闭图形系统*/ }
四、 实验结果及分析:
这幅图片是以Bresenham直线扫描算法绘制的以(100,100)为起点,(500,500)为终点的一条直线,背景被设置为了白色,以蓝色画出了这条直线。
实验二:自由曲线的生成算法实现 一、 实验目的: 理解曲线生成的原理 二、 实验内容:
1、了解自由曲线的生成原理。
2、掌握三次样条曲线和Bezier曲线的生成算法。
3、仿照教材关于自由曲线生成的Bezier算法,编译程序。 4、调试、编译、运行程序。 三、 实验方法及编程:
a) 实现方法介绍 本次实验是在Turbo C 2.0的平台上编译实现的;用光滑参数曲线
段逼近折线多边形,只需要根据给出的数据点就可以构造出曲线,曲线次数严格依赖于确定该段曲线的数据点个数,曲线形状依赖于多边形的形状,多边形的第一个顶点和最后一个顶点在曲线上。 b) 实现代码及分析
#include
int n;//控制点的个数
struct point //控制点的坐标 {
double x; double y; }point[N];
void init() //输入控制点的坐标 {
int i;
printf(\ scanf(\
printf(\ for(i=0;i scanf(\} void sol1() //绘制控制多边形的轮廓 { int i; setcolor(RED); for(i=0;i line((int)point[i].x,(int)point[i].y,(int)point[i+1].x,(int)point[i +1].y); } double sol2(int nn,int k) //计算多项式的系数C(nn,k) { int i; double sum=1; for(i=1;i<=nn;i++) sum*=i; for(i=1;i<=k;i++) sum/=i; for(i=1;i<=nn-k;i++) sum/=i; return sum; } void sol3(double t) //计算Bezier曲线上点的坐标 { double x=0,y=0,Ber; int k; for(k=0;k Ber=sol2(n-1,k)*pow(t,k)*pow(1-t,n-1-k); x+=point[k].x*Ber; y+=point[k].y*Ber; } putpixel((int)x,(int)y,GREEN); } void sol4() //根据控制点,求曲线上的m个点 { int m=500,i; for(i=0;i<=m;i++) sol3((double)i/(double)m); } int main() { int graphdriver=DETECT,graphmode=0; /*自动搜索显示器类型和显示模式*/ initgraph(&graphdriver,&graphmode,\/*初始化图形系统*/ init(); sol1(); sol4(); getch(); closegraph(); return 0; 实验四:计算机动画制作 一、 实验目的: 根据学到的计算机图形学的基础知识,可以加之运用到计算机动画的制作上去 二、 实验内容: 理解计算机动画的不同生成方法;采用某种动画生成方法设计制作一个动画小片断; 要求利用Turbo C环境下的图形库函数,如cleardevice(),getimage()与putimage(),setactivepage()与setvisualpage()等来设计实现动画;所设计动画应有一定可观性。 三、 实验方法及编程: a) 实现方法介绍 基于TurboC的图形编程,学习使用cleardevice() cleanviewdevice()getimage()与putimage()的配合使用。学习利用数学函数或数学方程式,跟据自变量和因变量的关系,让自变量在一个允许范围内以一步长逐渐增值或减值,进行连续循环,获得连续变化的动画。 b) 实现代码及分析 #include int x=320,y,t; int graphdriver=DETECT,graphmode=0; initgraph(&graphdriver,&graphmode,\cleardevice(); setcolor(15); do{ for(t=0;t<10;t++) { y=0.5*G*t*t; circle(x,y,20); delay(10); cleardevice(); } for(t=0;t<10;t++) { y=405-(90*t-0.5*G*t*t); circle(x,y,20); delay(50000); cleardevice(); } } while(!kbhit()); closegraph(); } 四、 实验结果及分析: 圆圈的落体效果,可以设置参数,落得快慢可以调节。 ============================================================================== 2、计算机图形学实验课程小结和思考(包括感想、体会与启示) 经过一学期刻苦而又努力的冲刺,我在计算机图形学这门课程上相对于其他科目而言,获益良多。特别是老师的认真教学态度感动了我们,让我不由自主地把态度放认真了许多。 在大三这学期中的计算机图形学中,我们学习了画点 ,画直线和折线,弧线,曲线,封闭曲线。实现DDA画线程序,放大,加入鼠标功能,实现交互式画直线,中点画圆,编码裁切,鼠标实现交互式裁剪效果,bezier曲线算法,以及数学模型,编写几何程序,鼠标交互式移动图形等知识。 本课程对我来说,付出还是一般的,我大部分心思放在了作业和实验报告上面,听取各同学意见,也参考了不少。听课程度还是比较欠缺认真,可是课后投入应该算是不少。课后花费的精力比其余课程较为大,但是计算机图形学还是博大精深的,值得我们去探讨,去专研。
正在阅读:
计算机图形学实验报告03-02
旧城片区改造初效实地调查总结01-25
2017年咨询工程师继续教育 - 大气污染治理工程技术导则试题与答案11-06
2017-2022年中国差旅管理市场专项调研报告(目录) - 图文10-10
关于MFC和STL的使用06-05
走进格言世界 感受格言魅力09-26
经济法案例分析01-04
车间节能用电管理方案12306-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 图形
- 实验
- 计算机
- 报告
- 中小企业成本控制文献综述
- 河南理工大学2012—2013学年学生“创先争优”活动先进个人和优秀
- 答案-作业题-总账实验题
- 使用IntelliJ IDEA配置Spark应用开发环境及源码阅读环境 含提交
- 外国17世纪文学知识竞赛试题(附答案)
- 大班幼儿观察记录
- 计算机毕业论文范文111
- 中国农村养老问题研究
- 220KVGIS检修工艺规程
- 土力学与基础工程课程总结
- 部编本一年级语文上册《哪吒闹海》阅读题
- 浅谈如何构建高中物理高效课堂-2019年精选文档
- 2016-2022年中国离心压缩机行业分析及投资前景评估报告 - 图文
- 机械搅拌通风发酵罐的设计
- 2012上海第二学历各院校专业介绍
- 广电史期末题目
- 资阳培训机构哪家好?
- 六年级下册综合实践教案 - 图文
- 数据库系统作业1-3章
- 关于家具厂生产流程总结