版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 实 习 报 告 实习名称: 计算机图形学实习 班 级: 学 号: 姓 名: 实习地点: 实习指导教师: 实习时间: 年 月 日至 月 日一、实习目的与意义本次计算机图形学的实习分两部分,一部分是利用AutoCAD进行二维和三维模型的制作,另一部分是利用VC6.0进行编程实现对图形的简单操作。通过对AutoCAD的实习,熟悉该软件的基本功能及操作特点,掌握二维及三维图形的基本制作过程。通过对VC6.0的编程实习,理解图形的生成、图形的变换、图形的显示以及二维裁剪的基本思想,熟练掌握计算机图形学的基本原理和方法;熟练掌握计算机图形学算法的实现算法;学习和掌握图形系统的设计;学习用VC编写计算机图
2、形学程序;建立面向对象编程的基本概念。二、实习主要内容1、AutoCAD软件操作(1)简单图形绘制(2)图形的基本编辑命令操作(3)标注文字及填充(4)三维图形绘制2.基于VC6.0下的计算机图形学程序编写(1)图形的生成:画直线、画圆、画曲线、画字符(2)图形的变换:平移、旋转、缩放、对称变换(3)图形的显示:扫描线填充、边缘填充、种子填充(4)图形的二维裁剪:CS裁剪、多边形裁剪、梁友栋裁剪、圆裁剪、中点分割法三、实习的主要过程 第一部分 AutoCAD软件操作 AutoCAD软件可以处理很多问题,在机械制图,土木建筑等方面有着广泛的应用,我们在机房打开AutoCAD软件对其进行系统配置,
3、然后进行具体操作。通过配置可以实现工具栏之类的快捷运用。(1)简单图形绘制实习开始的第一天,在老师的讲解以及演示下,我们了解了AutoCAD软件的基本使用方法,与此同时,我们跟着老师的操作也逐渐熟悉了该软件的一些基本操作方法。从设置基本绘图环境开始,按照指导书上的指示,采用边完成简单图形边学习各种命令的方式,逐渐熟练掌握了AutoCAD的使用,熟练掌握了其基本绘图功能,如掌握了绘图命令POINT、LINE、CIRCLE、ARC、DONUT、RECTANGLE、POLYLINE的功能及操作;掌握了实体绘图命令键盘输入的方法;掌握了缩放命令(ZOOM)的使用方法等。由于指导书的例子有详尽的操作过程
4、,所以对以上功能的使用方法的掌握比较快。通过完成例子掌握了他们的使用方法,接着完成其他的练习达到了巩固的目的。以下通过一些例子来说明对以上绘图功能的使用:例一:基本环境设置a:在命令中输入limits,确定相应的绘图区域大小b:在命令中输入zoom,选择A(全部),让画布全部充满屏幕。c:下来进行基本的画图操作,比如line、pline、point、circle、polygon等,掌握了这些基本的画图操作。例二:通过pline直接实现对轮廓的绘制,circle实现对圆的绘制,绘制前仍需设置图幅大小。对于轴对称的图形我们可以只绘出图形的一半,然后通过mirror镜像操作实现。再绘制的过程中,我们
5、可以采用相对坐标和极坐标来实现简单定位,避免了计算的麻烦。绘制以上的图形时,可以采用pline绘制出外围轮廓,然后再绘制两个圆的方法,也可以采用镜像的方法来实现,从而节省时间。例三:绘制五角星时采用采用端点捕捉画线的方法,采用solid填充区域。例四:通过辅助线实现图形的简单绘制。通过以下的图形操作巩固并熟练了图形的简单绘制的方法。 (2)图形的基本编辑命令操作我们在绘制复杂图形的时候需要采用一些基本编辑命令操作,如复制、对称、旋转、剪切、圆的公切线、公切圆等操作,能过快速的绘制出图形。对于复杂的图形,还需要我们能敏锐的发现图形各部分间的相关关系,才能快速而准确的绘制出图形,这就要求我们要多练
6、习,熟练掌握基本操作,才能快速绘制比较复杂的图形。在图形的编辑栏中有删除、复制、镜像(MIRROR)、偏移、阵列、旋转、修剪等操作,我们可以通过这些操作,来绘制复杂图形。例一:镜像操作、倒角处理绘制以上图形时,先用pline绘制出上半部分的轮廓线,接着对左右两端进行倒角处理,并补竖线,然后通过mirror镜像操作绘制另一半图形。最后绘制腰圆图形,通过复制,偏移等操作绘制出上图。例二:通过circle操作,画出两个圆的公切圆,通过trim修剪得到以下图形例三:绘制以上图形时,需要先对图形进行研究,分析图上标注的含义,确定辅助线的位置,恢复被裁剪掉的图形方便绘制图形。通过这幅图的练习,让我们明白绘
7、制一些复杂图形时,往往无法直接绘制出来,需要我们通过研究图形找到辅助线才能快速又准确的绘制出图形。通过以下的图形绘制更加熟练的学会了构造辅助线,通过图形基本编辑命令操作来实现复杂图形的绘制。 (3)标注文字及填充标注能够帮助我们检验所画图形是否符合标准,所以绘制后的图形还需要进行标注,在标注时,要建立不同的图层,在进行标注时,要根据实际不同的情况建立不同的标注样式,进行图形的标注。以上的图形都进行了标注。图形填充例子:以下两个图形综合了前面的知识,同时加入了图形的填充,图形的绘制过程比较复杂,且需要借助相应的辅助线进行绘图。 以下两个手柄图是对前面所学知识的汇总,需要熟练掌握基本图形绘制方法、
8、编辑命令操作和辅助线的构建。(4)三维图形绘制由于实习期间有较多科目的考试,三维图形的练习在CAD考核之前并没有做过,只是在考核的时候进行了三维图形的绘制,由于没有经过三维图形练习,对三维图形的绘制不熟悉,没能在规定时间内完成三维图形的绘制。在进行编程实习期间,才将三维图形的绘制给补了回来。第二部分 基于VC6.0下的计算机图形学程序编写本次的编程实习采用面向对象编程,通过MFC来编程,实现可视化操作。1.创建工程后,对菜单栏进行修改,用鼠标右键点击菜单中的空格,在出 现的下拉菜单中点击最后一项“属性”,出现 “Menu Item Properties”窗口;在窗口中“标 题”栏输入“图形生成
9、”,建立主菜单项“图形生成”,同理建立“图形变换”,“图形显示”“二维裁剪”的菜单项,并在其下拉选项中添加相应操作。修改后的菜单如下图所示: 2.鼠标坐标显示 为了精确定点,必须知道当前坐标,因此必须为操作者提示鼠标坐标。准备将坐标显示 在应用程序窗口的右下脚。在自动生成的工程中,窗口的右下脚处原是用来显示键盘按键信 息的(如下左图所示),现改为显示鼠标坐标(如下右图所示)。 3画直线、圆、曲线、字符、颜色设置(1)直线:分为DDA直线、中点直线下面以DDA直线为例,说明如何创建菜单响应函数。已经创建了DDA直线菜单,菜单响应程序如下步骤:打开工程项目,依次点击菜单“查看”、“建立类向导”,出
10、现如下窗口(如下图),也可以用Ctrl+W打开类向导。在 Class Name:栏中选 CMy35View(即菜单响应程序放在视图类中);在 Object Ids:栏中选 ID_DRAW_DDALINE;在 Messages:栏中选 COMMAND;点击 Add Function 按键,出现函数命名窗口,点击该窗口中的 OK 按键,该函数在 35View.cpp 中生成。点击该窗口中的 Edit Code 按键查看、编辑该函数。具体实现:DDA直线的程序实现如下:首先编写菜单响应函数,对MenuID和PressNum两个变量赋初值;接下来建立相应的鼠标响应程序框架,DDA直线要求第一次点鼠标左
11、键确定起始点,第二次点鼠标左键确定直线终止点,并画出直线,中间利用橡皮筋技术实时显示直线的形状,完成直线绘画后,还要将橡皮筋旧线擦除。中点画线算法实现过程和DDA算法大致相同,但是其思想更加合理,更有利于硬件实现,提高了算法效率,程序实现同DDA大同小异,只是DOC.cpp中核心算法不同而已,中点画线法采用交点与中点差比较得判定。其算法的中心思想相同,即在坐标系的网格中,确定起始点后,再根据其不同的判断方法,取得离直线最近的像素点予以着色,用离散的点表示出所要直线。上图中红线为DDA直线,黑线为中点直线(2)曲线:曲线分为Brezier曲线、B样条曲线和Hermite曲线。均是由鼠标左键确定主
12、要拐点,按右键确定选点已完成并进行曲线绘制,双击左键消除十字丝完成曲线绘制。Bezier曲线是由一群控制点决定的。一段曲线的次数与控制点的点数密切相关,人们常常使用三次曲线,那么一段曲线的控制点的点数为4。实际应用中,一条Bezier曲线是由多段Bezier曲线首尾相连而成。与之相应,一群控制点划分成多组控制点,每一组控制一段曲线的形状。为了使每一段曲线平滑地连接起来,要求前一组最后一个控制点与后一组第一个控制点相同(即共用一个点),同时要求前一组倒数第二个控制点、最后一个控制点(即后一组第一个控制点)、后一组第二个控制点等三个控制点在一条直线上。如果要求给出的控制点在相邻的组之间都能满足这种
13、要求,那么控制点的布点工作将受到极大的限制。这种要求不仅难以满足,而且灵活性被极大地削弱。解决的办法是计算得出连接点,即用前一组的倒数第二点和后一组的第二点连线的中点作为相邻两段曲线控制点的终点和起点。Bezier曲线的操作这样安排:用鼠标左键进行控制点选点,右键结束选控制点,显示一条Bezier曲线;再按左键选取一个控制点进行移动修改,右键结束一个控制点修改;当所有的修改完成以后,双击左键生成一条正式的Bezier曲线。因此首次布点和修改控制点位置,对鼠标的操作要求不同,必须区分开。B样条曲线和Hemite曲线的操作安排与Bezier曲线的操作安排一致,只是DOC.cpp中的核心算法不同而已
14、。上图中,黑色为Bezier曲线,红色为B样条曲线,绿色为Hemite曲线(3)圆:圆分为Bresenham圆、正负法圆。Bresenham圆的程序实现如下:由鼠标左键确定圆心,再定一点,使其与第一点的连线长度成为半径进行圆的绘制。先为Bresenham圆添加菜单响应函数确定MenuID,然后画圆的OnLButtonDown()响应:用鼠标确定圆心,再移动鼠标确定半径。在确定半径时,随着鼠标的移动,一个圆随着鼠标的移动半径发生变化。然后调用Bresanham算法完成圆的绘制。Bresenham圆的编程实现如下:首先编写菜单响应函数,对MenuID和PressNum两个变量赋初值;接下来建立相应
15、的鼠标响应程序框架,Bresenham圆要求第一次点鼠标左键确定圆心,第二次点鼠标左键确定圆上一点,并由此确定半径,画出完整的圆;然后再在Doc.h头文件中声明必要变量和函数,并在Doc.cpp中完成Bresenham圆的生成数。正负画圆法的编程实现与Bresenham圆的相类似。上图中红色为Bresenham圆,绿色为正负法画圆法(4)字符:字符的表示有点阵表示和矢量表示两种。点阵表示指每个字符都有若干个点表示,矢量表示记录的是笔画信息。可先通过调用MFC对话框对字的字体、粗细、大小进行调整,再点击文本,输入文本位置的其实坐标以及文本内容,相应文本内容则可出现在指定位置。(5)颜色设置:使用
16、了MFC中的CcolorDialog类,该类是MS设计的专门用于颜色选择的对话框类:class CcolorDialog : public CCommonDialog。4.图形显示:扫描线填充算法、边缘填充、种子填充扫描线填充算法运用了复杂的数据结构,且在填充过程中需要反复排序,编程难度较大。 VC 类库中的函数 CDC:Polygon( )实现了扫描线填充算法功能。实际上我们所学的计算机 图形学所有算法都能通过引用 VC 类库提供的函数(或函数组合)加以实现。边缘填充实质是以边缘与扫描线的交点为起点以“异或”的方式向右边最远点画点。如果一个像素经过偶数次异或画点,将还原为背景颜色;而经过奇数
17、次异或画点的像素将显示画点颜色与背景颜色经过异或运算混合的颜色。所有的边缘都处理完后,多边形内部像素肯定经过了奇数次异或画点,因而显示画点颜色与背景颜色异或运算混合颜色;多边形外部像素肯定经过了偶数次异或画点,因而还原为背景颜色。种子填充的原理是从堆栈中取出一粒表示区域内部的种子,从种子点出发,沿扫描线分 别向左向右边填充边寻找边界点;通过左右两边的边界点确定扫描线上的填充区域范围;根据该范围在上下相邻的两条扫描线上寻找新的未填充区域,每个区域中选一粒种子压入堆栈。这是一个最基本的填充步骤,整个区域的填充过程就是这个步骤的反复循环使用。三种算法中,种子填充算法的填充效果时间耗费多,有些象素会入
18、栈多次,降低算法效率;栈结构占空间。递归执行,算法简单,但效率不高,区域内每一象素都引起一次递归,进出栈,费时费内存。边缘填充算法程序和数据结构都很简单,对于复杂图形,每一象素可能被访问多次,但由于涉及到对帧缓冲器中大量元素的多次赋值,影响了算法的效率。扫描线算法效率高,但数据结构复杂,编程难度大,填充的过程中需要反复排序,对各种表的维持和排序开销太大,适合软件实现而不适合硬件实现。上图中,黑色为扫描线填充,红色为边缘填充,绿色为种子填充5.图形裁剪图形裁剪包括Cohen-Sutherland算法、中点分割算法、梁友栋算法、多边形裁剪和圆裁剪。(1)Cohen-Sutherland算法将窗口平
19、面划分成九个区域,每个区域给予不同的编码。根据线段端点落入不同的区域,给予线段端点不同的编码。基于线段端点编码,算法给出了一整套裁剪的方法。在裁剪过程中,窗口的参数需要多次使用,线段端点需要多次编码,编码的计算需要多次与某些常数相“与”。为了方便,将窗口参数和几个常数定义为几个常数符号,将端点编码用一个函数实现。为了将精力集中在裁剪的实现上,事先规定一个窗口。操作时,任意输入直线段,用该窗口对直线段进行裁剪。(2)多边形裁剪不同于直线裁剪,是用窗口对一个多边形进行裁剪,其结果还是一个多边形。多边形常用一个记录顶点的数组表示,最终的裁剪结果仍存放在数组中。本节采用Sutherland-Hodgm
20、an算法对多边形进行裁剪,该算法依次使用窗口四条边对多边形进行裁剪。四条边的裁剪原理相同,但参数略有不同,它们是编程实现的重点。为了使程序结构合理、易读,将边的裁剪部分用一个函数实现。(3)圆裁剪与直线裁剪和多边形裁剪都不一样,直线裁剪完还是直线,多边形裁剪完还是多边形,而圆裁剪完便有可能不再是圆,所以我们需要修改圆的生成算法,让其能够自主判断是否在矩形框内,若是,则绘出该点像素,若不是,则不绘。上图中红色为Cohen-Sutherland裁剪,绿色为圆裁剪,黑色为多边形裁剪6.图形的几何变换图形的几何变换分为平移、旋转、缩放和对称变换功能平移:点击相应的平移操作,屏幕中会出现一个小正方形,单
21、击鼠标左键,再根据橡皮筋拉伸,后单击鼠标左键以确定平移量来进行图像的平移操作。旋转:点击相应的旋转操作,屏幕中会出现一个小正方形,单击鼠标左键,再根据橡皮筋拉伸,后单击鼠标左键以确定旋转角度来进行图像的旋转操作。缩放:点击相应的缩放操作,屏幕中会出现一个小正方形,单击鼠标左键,再根据橡皮筋拉伸,后单击鼠标左键以确定缩放比例来进行图像的缩放操作。对称:点击相应的对称变换操作,屏幕中会出现一个小正方形,单击鼠标左键,再根据橡皮筋拉伸,后单击鼠标左键以确定对称轴来进行图像的对称变换。平移: 旋转:缩放: 对称:四、实习的主要体会AutoCAD心得体会实习的第一周进行的是AutoCAD的实习,在老师的
22、讲解以及演示下,我逐渐的了解了AutuCAD的基本使用方法,跟着老师的演示过程学会了该软件的基本操作流程。对于AutoCAD的基本绘图功能的实现,我根据指导书的指导,采用边完成简单图形边学习各种命令的方式,逐渐熟练掌握了AutoCAD的基本绘图功能的使用。熟练掌握了其基本绘图功能,如掌握了绘图命令POINT、LINE、CIRCLE、ARC、DONUT、RECTANGLE、POLYLINE的功能及操作;掌握了实体绘图命令键盘输入的方法;掌握了缩放命令(ZOOM)的使用方法等。由于指导书上的的操作内容很详尽,所以在绘制前面那些比较基础的图形时没有遇到什么困难,通过前面一些基本的图形的绘制,我逐渐熟
23、悉了利用AutoCAD进行简单图形的绘制,掌握了基本绘图命令,感觉CAD的操作并不难,很容易上手,但还是有需要特别注意的地方,比如在绘图之前最好先设置好绘图区域界限,并使图幅图幅布满整个屏幕,这样能够避免图形绘制后太小甚至看不见的情况;在绘图的过程中,要注意建立图层来画出相应的辅助线,有助于图像的生成,在标记的过程中,要根据实际情况,建立不同的标注样式。随着实习的深入,逐渐从刚开始的画直线、圆、弧的基本操作转到后来的公切圆、公切线以及对图形进行编辑,开始进行复杂图形的绘制,就感觉自己的练习还远远不够,不能比较快速的绘制出图形,有时会因为没有找到相关图形的关系而浪费太多时间,甚至通过计算来确定他
24、们的关系,这说明我平时的练习还不足够,因为AutoCAD的是使用是不需要太多的计算的,只需要建立相关的辅助线,然后通过图形的编辑命令就可以快速且准确的绘制出来。比如用TRIM对图形进行裁剪,用MIRROR对图像进行镜面对称,都可以大大节省我们的画图时间,还可以采用阵列操作很方便的画出某些图形,比如铣刀的绘制,如果不采用阵列的操作,绘制起来会特别麻烦,但是经过阵列操作后,就能快速而准确的绘制出图形。由于平时没有进行过三维图形的绘制练习,在考核时没能在规定时间内完成三维图形,考核之后才将三维图形的练习给绘制出来,这也充分说明我学习的知识还不足够,要想充分掌握AutoCAD的使用技巧,绝不仅仅靠这一周的实习就能够掌握的,还需要我在今后的学习生活中多加练习,才能掌握好该软件。经过这一周的练习,我还是掌握了一些关于AutuCAD软件操作的方法,对于图形的绘制也有了更深的理解,这次的实习也让我总结了不少绘图的经验,当我们拿到一幅图要进行绘制时,需要先分析图形的链接情况,各部分的关系,再进行图形的绘制。作为遥感专业的学生,以后还是会有很多机会跟图形绘制打交道的,这就要求我们还需在课外自己去熟练掌握该软件的使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 液化燃气阀自动化测控系统:技术、应用与创新
- 涠洲岛布氏鲸种群:栖息地利用与健康状况的深度剖析
- 消费语境下身体符号的多维度解析与社会意涵探究
- 保险经纪业务流程与合规管理手册
- 2026年办公楼售后回租合同三篇
- 妊娠期胰腺炎的磁共振胰胆管成像应用
- 妊娠期胰腺炎内镜术后并发症的预防与管理
- 妊娠期肝内胆汁淤积症胎儿监护的NST应用规范
- 2026海南中考地理知识点背诵清单练习含答案
- 2026镇江市中考地理知识点总结训练含答案
- 2026哈尔滨兰兴资产运营管理有限公司公开招聘备考题库参考答案详解
- 2025湖北武汉市汉江集团公司面向集团内部招聘2人笔试历年难易错考点试卷带答案解析
- 框架结构住宅楼施工计划
- 2026江苏事业单位统考泰州市靖江市招聘42人考试参考题库及答案解析
- (一模)太原市2026年高三年级模拟考试(一)历史试卷(含官方答案)
- 江苏南京紫金投资集团有限责任公司招聘笔试题库2026
- 游泳馆安全生产制度
- 副流感病毒感染诊疗指南(2025版)
- (2026年)中医护理操作并发症预防及处理课件
- 企业信息资产管理清单模板
- 中医医疗技术相关性感染预防与控制指南(试行)
评论
0/150
提交评论