艾丽木姑丽计算机图形学大作业Word文档格式.docx
《艾丽木姑丽计算机图形学大作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《艾丽木姑丽计算机图形学大作业Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
五
六
总分
5
10
15
20
40
100
得分
提示:
1、请将答案写在此文档的相应位置,图形需在VC++6.0下客户区屏幕中心绘制,大小可以根据个人需求定制;
2、请将相关的文档,包括程序的相关文档进行压缩,并将压缩文档上传到ftp:
//210.26.176.123“大作业电子版文档”文件夹下命名为“班级-学号-姓名”,纸质版于2014年12月19日下午18:
00—20:
00交到逸夫楼109。
一、选题(此题5分)
请根据你抽中的题号,正确理解其所对应的简笔画。
请写出你选中的题号,将图粘贴到下方,并为其取一个合适的名字。
我选的题号:
23名字为:
扫把图形
二、组成(此题10分)
请分析你所选择的题目,由哪些简单图形组成,并写出其所对应的函数或原理。
请在下方表格中简要写明函数的原型或原理的名字即可。
如果表格行数不够,请自行添加。
图形
函数或原理
矩形
MoveTo()和LineTo
直线
三角形
三、参数说明(此题15分)
请写出相关函数的参数,并分析出每个参数的含义,要求此题务必写清每个函数的作用和使用方法。
我在这个作业里面有矩形,三角形,所使用了MoveTo()和LineTo()(等两个函数。
MoveTo()是设置当前位置的函数。
线是用函数CDC:
:
MoveTo(指定直线一端的位置)和CDC:
LineTo(指定直线另一端的位置)来绘制的。
MoveTo()的参数:
新位置的点坐标x和y;
point是POINT结构或CPoint对象。
本函数只将画笔的当前位置移动到坐标x和y处,不划线。
LineTo()是绘制直线段的函数。
LineTo()的参数:
直线段终点坐标x和y;
本函数从当前位置绘制直线段,但不包括(x,y)点。
绘制直线段的函数不能指定颜色,直线段的颜色通过画笔来指定的。
四、原理说明(此题20分)
请详细写出上述相关原理的详解。
例如,如果你应用了中点画直线的方法,请在下方写出其原理,并做详解。
要求该题有文字、公式和图形描述
MFC提供的CDC类的成员函数MoveTo()和LineTo()函数用于绘制傻任意斜率的直线段,直线段的颜色由所选用的画笔指定。
MoveTo()函数移动当前点到参数(x,y)所指定的点,不画线;
LineTo()函数从当前点画一直线段到参数(x,y)所指定的点,但不包括(x,y)。
本案例通过定义Cline类来模拟CDC类绘制任意斜的直线段,采用直线中点Bresenham算法。
MSDN指出CDC类的LineTo()函数画一段直线到终点坐标位置,但不包括终点坐标。
对于0≤𝑘
≤1的直线段,中点Bresenham算法如下:
(1)使用鼠标选择起点坐标p0(x0,y0)和终点坐标p1(x1,y1)。
要求起点的的坐标小于等于终点的x坐标。
(2)定义直线段当前点坐标x,y,定义中点误差项d,定义直线斜k,定义像素点颜色clr。
(3)x=x0,y=y0,计算d=0.5-k,k=(y1-y0)/(x1-x0),
clr=CRGB(0,0,1)
(4)绘制点(x,y),判断d的符号。
若d<
0,则(x,y)更新为(x+1,y+1),d更新为d+1-k;
否则(x,y)更新为(x+1,y),d更新为d-k。
(5)如果当前点x<
x1,重复步骤。
五、步骤(此题40分)
请在VC++6.0上,实现该图形,请写出详细步骤,并将每一步配有相应的截图。
注:
步骤不能少于20步;
每一步必须配有相关截图;
请详细写明图形的相关参数。
步骤如下:
1.安装VisualC++6.0软件。
2.
启动VisualC++6.0软件
3.新建一个nurbi文件,工程->
MFCAppWizard[xex]
工程名称位置确定单文档完成
4.打开FileView里面的SourceFiles单击鼠标左键,打开alimugulview.cpp文件
5.绘制直线
6.结果图
7.同样绘制第二个到第三个连线函数
8.同样绘制第二个到第三个连线结果图:
9.同样绘制第三个到第四个连线函数
10.同样绘制第三个到第四个连线结果图:
11.同样绘制扫把的图形函数:
12.结果图:
13.绘制扫把下面里面三个斜线:
14.运行结果图:
15.绘制扫把的上面部分画五个横线函数
16.绘制扫把横线结果图:
六、涂色(此题10分)
你所选的图形大多没有颜色,请根据自己的爱好将其涂上相应的颜色,让其更加好看。
1.填充颜色扫把的上面:
2.填充结果
(1):
3.填充颜色扫把的下面:
4.填充颜色扫把下面结果:
5.扫把下面的里面:
6.扫把下面的里面填充:
7.整个扫把的填充:
8.整个扫把的填充结果:
总结
请阐述通过该课程的学习,你学到了那些内容。
字数不少1000字。
经过了一段时间计算机图形学的学习,我对于图形学中基本图形有了一定的了解,尤其是现在对其中的一些算法有了进一步的了解,也能用C++编写出一些简单的算法,例如直线中点Bresenham算法画出点阵表示的直线,同样推及圆和椭圆。
深度研究图形学,需要高深的数学知识,且每一个细化的方向需要的知识也不一样。
图形学是计算机科学与技术学科的活跃前沿学科,被广泛的应用到生物学、物理学、化学、天文学、地球物理学、材料科学等领域。
想到计算机图形学在我们生活各方面的都有应用,我不禁感慨计算机图形学的强大,并好奇在日后它将会对我们的生活产生什么样的影响。
我们生活中的许多事物能得用到计算机图形学的知识,其主要的应用领域有:
计算机辅助设计、计算机艺术、虚拟现实、计算机辅助教学等领域。
我们平时见到的汽车,之所以有如此完美的线条就是离不开计算机图形学的帮助,这便是在计算机辅助设计方面的应用,我们平时看到的一些比较有艺术感的设计则属于计算机艺术领域的应用,另外,我们喜欢看电影的人则是十分欣赏3D电影,因为它能让我们有身临其境的感觉,以及我们看迪斯尼动画电影时,里面的水之类的事物都显得那么的真实,而这所有的都要归功于计算机图形学在虚拟现实领域的应用,还有就是课程的教学,现在的教学变得更加的精彩,同样是得归功于计算机图形学的应用。
同样的,在相关学科也可用到计算机图形学的知识,例如在数字图像处理中的一个平移,一个旋转,都可以借用计算机图形学中的知识。
计算机图形学的研究内容十分的广泛,其内容也是相当丰富的,有:
基本图形的扫描转换中的Bresenham算法,还有针对走样现象的反走样技-----硬件技术(提高显示器的分辨率)和软件技术(改进软件算法);
多边形的填充中的有效边表填充算法、边缘填充算法区域填充算法(又有四邻域填充和八邻域填充);
二维变换中的平移变换、比例变换、旋转变换、错切变换以及裁剪中的Cohen-Sutherland直线段裁剪算法和中点分割直线段裁剪算法、梁友栋-Barsky直线段裁剪算法;
三维变换中的平移变换、比例变换旋转变换、反射变换以及错切变换和投影中的平行投影、透视投影等,其中的透视投影我们在生活中很多的地方都可以看见,例如,我们站在一条林间小道,向小道的尽头看去就可以发现小道的两侧在很远的地方成为了一个点,而这个点就是所谓的“灭点”;
自由曲线和曲面,内容涉及曲面重建、曲面简化、曲面转换以及曲面位差,这方面的是相对复杂的,但正是因为它更能表现生活,所以在生活中也有很多的应用,例如各种机械设计,广告设计之类的产业都运用到这点技术;
分形几何,这点则不得不说是个奇迹,因为我们生活中很多的不规则的事物,如闪电、崎岖不平的山路、大树以及海岸线都可以用分形几何的知识加技术实现来展示在我们的眼前;
动态消隐则是用来表示图形的一种方法。
以上的知识还仅仅是我们课程中简单介绍的东西,我们现在也只是简单的熟悉一些罢了,因为想要真正的学到点什么东西仅仅靠课堂上的东西还是远远不足的,这边要求在其他时间里多下功夫去了解,去实现,这样自己的能力再能有大的进步。