计算机图像学实习报告.docx

上传人:b****7 文档编号:15821368 上传时间:2023-07-08 格式:DOCX 页数:14 大小:184.43KB
下载 相关 举报
计算机图像学实习报告.docx_第1页
第1页 / 共14页
计算机图像学实习报告.docx_第2页
第2页 / 共14页
计算机图像学实习报告.docx_第3页
第3页 / 共14页
计算机图像学实习报告.docx_第4页
第4页 / 共14页
计算机图像学实习报告.docx_第5页
第5页 / 共14页
计算机图像学实习报告.docx_第6页
第6页 / 共14页
计算机图像学实习报告.docx_第7页
第7页 / 共14页
计算机图像学实习报告.docx_第8页
第8页 / 共14页
计算机图像学实习报告.docx_第9页
第9页 / 共14页
计算机图像学实习报告.docx_第10页
第10页 / 共14页
计算机图像学实习报告.docx_第11页
第11页 / 共14页
计算机图像学实习报告.docx_第12页
第12页 / 共14页
计算机图像学实习报告.docx_第13页
第13页 / 共14页
计算机图像学实习报告.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机图像学实习报告.docx

《计算机图像学实习报告.docx》由会员分享,可在线阅读,更多相关《计算机图像学实习报告.docx(14页珍藏版)》请在冰点文库上搜索。

计算机图像学实习报告.docx

计算机图像学实习报告

 

计算机图形学

实习报告

一、实习目的与意义

AutoCAD软件操作实习目的:

1、了解CAD的各项功能,并熟练使用CAD的基本功能绘制图形;

2、熟练掌握CAD画图的基本原理和方法;

3、学习用CAD制作二维模型,能根据平面图纸画出图形,并正确标注;

4、学习用CAD制作三维模型,能根据三视图或立体图画出三维模型,并正确标注;

5、学习用CAD设计较为简单的二维模型以及三维模型。

基于VC6.0下的计算机图形学程序编写实习目的:

1、熟练掌握计算机图形学的基本原理和方法;

2、熟练掌握计算机图形学算法的实现算法;

3、学习和掌握图形系统的设计;

4、学习用VC++编写计算机图形学程序,对MFC的框架有进一步的了解,建立初步面向对象编程的基本概念,对C++编程语言熟练掌握;

 

二、实习主要内容

1.AutoCAD软件操作主要内容:

(1)二维图形的绘制,包括实体绘图工具条的使用方法,实体绘图命令键盘输入的方法,绘图命令POINT、LINE、CIRCLE、ARC、DONUT、RECTANGLE、POLYLINE的功能及操作。

(2)图形编辑,包括编辑命令工具条的使用方法编辑命令应用MOVE、COPY、MIRROR、ARRAY、BREAK、TRIM、EXTEND、ROTATE、OFFSET、FILLET、CHAMFER等。

(3)图层、颜色、线性、填充等操作,包括线宽及线性比例的设置方法,图案填充的方法及步骤。

(4)尺寸标注,包括二维尺寸标注和三维尺寸标注。

(5)三维图形绘制,包括坐标系的变换,三视图,以及命令box,cylinder,union,subtract等的使用。

2.基于VC6.0下的计算机图形学程序编写实习主要内容:

(1)基本图形以及字符的绘制,包括画直线、画多边形、画圆、画字符等。

(2)对多边形进行填充,包括种子填充算法、边缘填充算法、扫描线填充算法。

(3)图形裁剪,包括直线剪裁、圆剪裁、多边形剪裁等。

(4)图形的几何变换,包括平移、旋转、缩放等。

三、实习的主要过程

第一部分AutoCAD软件操作

(1)二维图形的绘制

绘制二维图形之前首先使用limits命令设置幅面大小,然后用zoom命令使绘图绘图区域充满整个屏幕。

画简单图形时,既可以使用CAD命令,例如如POINT(点)、LINE(线)、CIRCLE(圆)、ARC(圆弧)、DONUT(圆环)、RECTANGLE(矩形)、POLYLINE(多段线),也可以使用工具栏上的工具快捷操作。

下面是一些实例,说明了如何绘制简单的二维图形:

例一:

绘制后图形平面图

绘制方法:

使用line命令,根据线段端点的坐标绘出直线。

也可以根据相对坐标的方法简化计算和绘图。

例二:

绘制后图形

绘制方法:

对于具有对称性的图形可以先绘出图形的一半,然后使用MIRROR命令,绘制整个图形。

例三:

绘制方法:

直线部分用line命令画,对于具有对称性的图形可以先绘出图形的一半,然后使用MIRROR命令,绘制整个图形。

例四:

绘制方法:

绘制所示的图形,圆环外圆直径为140,内圆直径为120。

绘制五角形的时候我们采用端点捕捉来实现。

我们在画完五边形后端点捕捉划线。

删除五边形用ERASE命令删除五边形。

绘制圆环之后进行区域填充用SOLID命令填充五角形区域。

命名并存盘。

其他例子:

(2)图形编辑

例一:

绘制方法:

用LINE命令绘制对称轴线,用PLINE命令绘制对称轴线上半部分轮廓线(倒角不画出)。

再倒角,使用Chamfer命令。

将左端和右端倒角补竖线。

用MIRROR镜像命令制作另一半图形。

再用COPY命令复制键槽腰圆图形,用MOVE命令平移腰圆图形。

例二:

绘制方法:

将点类型设置为2(PDMODE),在四个圆心处画点;用CIRCLE命令分别以A﹑B﹑C﹑D为圆心画圆。

然后重复操作绘制出另外的圆B﹑C﹑D。

用CIRCLE-TTR形式绘出圆1﹑2﹑3﹑4。

重复操作绘制出另外的圆2﹑3﹑4。

用TRIM命令剪切圆的多余部分线段完成圆的剪切。

重复操作完成圆2﹑3﹑4﹑A﹑B﹑C﹑D的剪切。

用CIRCLE命令分别以A﹑B﹑C为圆心画直径为20的圆。

用ERASE命令删除圆心点。

例三:

绘制方法:

先绘出构造线,再将构造线偏移就可以得出中心轴线旁边的线段,以线段的端点画圆弧。

多个相切的圆来绘制曲线,使用TRIM命令实现辅助线和辅助圆的消除。

通过本次练习熟练掌握辅助线和辅助圆的绘制和消除。

例四:

绘制方法:

绘制如图所示的铣刀平面图,先利用辅助圆和构造线画出重复的单元,然后再利用旋转,做出其他的部分。

例五:

绘制方法:

绘制齿轮,先绘出重复的单元,然后使用array命令,可以得到环形阵列。

其他例子:

绘制方法:

绘制最外侧的圆弧(AC),采用ARC--CSE方式,用OFFSET命令绘制出另外三根圆弧绘制右侧的小圆弧,用OFFSET命令绘制出里面两根圆弧。

绘制右侧的圆。

然后做出辅助圆以确定圆弧所在的位置。

最后进行修剪。

(3)图层、颜色、线性、填充等操作

在AutoCAD中,可将一组对象放置在一个图层中,这种组织对象的方式与原来手工绘图时把复杂的图形分成若干简单图形放在透明纸上相似。

图层特性的一个普遍应用是在一个图层上创建辅助线。

可以创建对象如直线、圆和圆弧的几何辅助线。

各个图层可设置不同的颜色、线宽、线性等。

1.通过Layer命令建立图层。

在LinetypeManager对话框中为图层设置线型;在SelectColor对话框中为图层设置颜色;在LineweightSettings对话框中为图层设置线宽。

2.设置线型比例

可以利用LinetypeManager,在“Globalscalefactor"编辑框设置全局线型比例。

3.图案填充

调用BHATCH命令。

图案填充设置,在BoundaryHatch(图案填充)对话框的Quick选项对话框中,在Type选择框内选择Predefined图案填充类型。

在BoundaryHatch(图案填充)对话框的Advanced选项对话框中,在图案填充方式,即Islanddetectionstyle(岛检测类型)中,选择Normal(普通)填充方式。

再选择填充边界,单击PickPoints按钮,选择图案填充区域内一点确定填充区域边界。

即可完成图案填充。

例一:

绘制方法:

绘制主视图和俯视图,在绘图过程中.当绘制不同线型的线段时,应及时进行图层的转换。

将主视图改为剖视图。

(4)尺寸标注

通过标注样式进行设置。

然后用DimLin命令进行标注。

例:

(5)三维图形绘制

例一:

绘制方法:

开四个视口,分别在主视图、左视图中绘制梯形以及矩形,然后进行拉伸。

例二:

绘制方法:

开三个视口,在前视图中绘制灯座、灯炳、灯泡的轮廓图米,用多段线绘制。

进行旋转曲面,结果生成旋转后的表面模型。

然后绘制支柱,即前视图中,用多段线工具绘制出支柱的路径,把当前的坐标系绕Y轴旋转90,用画圆工具绘制出支柱的截面,再进行拉伸。

绘制灯罩,在顶视图中绘制两个半径分别为“12”和“6”的同心圆,并将小圆外移。

单击直纹曲面按钮,选择所绘制的上下截面,结果生成灯罩的曲面模型。

最后是台灯的组装,即对照三个视口中的图形,把台灯各部件移动至合适位置,组装结果如第一幅图所示。

其他例子:

第二部分基于VC6.0下的计算机图形学程序编写

基本框架:

说明:

图标可以对整个图形的线宽、颜色设置。

(1)基本图形以及字符的绘制

基本框架:

说明:

直线有DDA直线、中点直线以及Bresenham直线,均可以用鼠标拾取点以及对话框输入起点和终点。

圆包括Bresenham园、正负法圆、中点圆,每一种均可以用鼠标拾取点以及对话框输入圆心、半径或者圆心、圆上一点。

算法说明

•DDA直线(第一种情况)生成总结:

1.初始条件:

(x0,y0)=(x0,y0),m=(y1-y0)/(x1-x0)

2.递推公式:

xi+1=xi+1yi+1=yi+myi+1,r=int(0.5+yi+1)

终止条件:

xi>x1

缺点:

有一个浮点运算;有一个取整函数

中点直线(第一种情况)生成总结:

总结递推公式如下:

1.初始条件:

(x0,y0,r)=(x0,y0),d0=△x-2△y

2.递推公式:

xi+1=xi+1

Bresenham直线生成方法总结:

•初始条件:

x0=x0,y0=y0,e0=2×(y1-y0)-(x1-x0)

•递推公式:

直线(x0,y0)—(x1,y1)的完整画法

1.判断直线是否水平、垂直线,如果是,直接画,否则进入下一步

2.判断直线类型,对于类型2、3、4,通过对称变换化为类型1

3.确定起始、终止端点,如果必要,通过交换使(x0,y0)为起始点,(x1,y1)为终止点

4.用类型1的直线生成方法确定每一个点

5.通过对称逆变换将每一个点变换到位

画圆同样是写出递推公式,填上像素值,再变换。

算法说明:

种子填充的原理是从堆栈中取出一粒表示区域内部的种子,从种子点出发,沿扫描线分别向左向右边填充边寻找边界点;通过左右两边的边界点确定扫描线上的填充区域范围;根据该范围在上下相邻的两条扫描线上寻找新的未填充区域,每个区域中选一粒种子压入堆栈。

这是一个最基本的填充步骤,整个区域的填充过程就是这个步骤的反复循环使用。

扫描线算法充分利用了像素之间的各种关系,即区域的连贯性、扫描线连贯性和边的连贯性,减少了计算量,提高了速度。

扫描线填充算法运用了复杂的数据结构,且在填充过程中需要反复排序,编程难度较大。

我们用的是VC类库中的函数CDC:

:

Polygon()。

边缘填充算法与扫描线算法类似,但不需要排序,用“异或”方式,绕开了排序问题。

边缘填充实质是以边缘与扫描线的交点为起点以“异或”的方式向右边最远点画点。

如果一个像素经过偶数次异或画点,将还原为背景颜色;而经过奇数次异或画点的像素将显示画点颜色与背景颜色经过异或运算混合的颜色。

所有的边缘都处理完后,多边形内部像素肯定经过了奇数次异或画点,因而显示画点颜色与背景颜色异或运算混合颜色;多边形外部像素肯定经过了偶数次异或画点,因而还原为背景颜色。

三种算法中,边缘填充算法省去了排序,且每个边缘点的操作方法一样,十分有利于编程;但要处理大量像素(尤其是对大屏幕),速度比扫描线算法慢。

种子填充算法的填充效果时间耗费多,有些象素会入栈多次,降低算法效率;栈结构占空间。

递归执行,算法简单,但效率不高,区域内每一象素都引起一次递归,进出栈,费时费内存。

扫描线算法效率高,但数据结构复杂,编程难度大,填充的过程中需要反复排序,对各种表的维持和排序开销太大,不适合硬件实现。

四、实习的主要体会

我们之前接触CAD是在测量学实习时画地图用CAD画。

我们深深的了解到了CAD的广泛适用性,不仅仅是简简单单的测绘绘图,还包括零件的设计,平面设计的图,甚至电路图、建筑图。

在经过了这次的实习后,除了二维图形,我发现简单的三维设计我们也可以完成了。

一周的CAD实习让我们学到了很多东西。

对于二维部分,首先,我们基本上是在画一些简单的零件平面图,例如螺钉、螺母以及更为复杂的手柄等。

这一点就让我们感受到了CAD的实用性。

我们发现CAD作为计算机绘图辅助软件,为机械零件设计人员带来了不少方便。

通过画这些二维图,我们掌握了许多CAD画图的技巧,例如巧妙地使用镜像,旋转,阵列等来实现节省工作量加快效率。

还有我们深刻体会到使用图层的方便之处,设置图层时用不同的线型、颜色等,可以方便的区分出主体,辅助线、标注等。

此外,使用相对坐标来定位划线的时候相当方便。

在绘制图形的时候我们要学会使用辅助线,充分用好构造线来帮助我们。

在绘制一些很大的图形有较多零件的时候,我们能使用块来方便绘制。

这样可以方便地调用块了。

对于三维部分,我们首先要有一定的空间想象。

要想清楚了空间图形才能画好。

我们在划线的时候,最后要注意合并成为多线段以便于后面的选取复制。

在绘制圆弧的时候我们可以自己选择方法,到底是用PLINE的直线命令来绘制还是用几个圆来剪切。

我们在配置的时候把一些常用的比如UCS等工具栏放在合适的地方以便于我们使用。

在绘图之前设置好我们需要的图层。

在屏幕下有很多工具,我们可以选择端点捕捉或者中点捕捉等等工具。

在三维图形的最后,我们可以利用体着色,三维动态观察器空间图形是否和想象的一致。

对于第二周的VC6.0的计算机图形学的编程实习。

这次实习我们将平时学到的理论知识充分应用在了实习中。

在本次实习中让我对计算机图形学有了一个更深的理解。

老师给我的实习指导书相当的详细,所以我们在实习的时候,基本上是按照这实习指导书的步骤进行着。

有着前面几次实习,我们对于VC6.0也很熟悉,所以在实习的时候,对于MFC等很容易上手。

我们主要涉及的是计算机图形学的一些算法,来根据实习指导书给的算法实现比如DDA直线等的绘制。

我们水平有限,所以很大程度上依赖于实习指导书,通过上面给的算法来实现程序的实现。

由于之前我们课间实习的时候就已经做过一部分,所以可以有更多的时间将自己的程序写得更好。

通过自己写以及对指导书上的程序进行修改,我们对程序有了更深刻的理解。

例如圆裁剪,指导书上没有写橡皮筋,我自己改好了圆裁剪的橡皮筋。

又如平移可以对多个对象进行平移。

其余复杂的的功能实现则有些无法下手,耗费了大量的时间进行尝试,这时与同学之间的交流,向老师询问咨询等。

经过各种探讨和摸索,我编程能力大大提高,明白了各种算法以及颜色和线宽设置等。

这次实习暴露了我在编程上的许多问题,在很大程度上还是编程做的不够多,不够熟练。

只有多做多想才能熟能生巧。

通过实习,从而发现自己的不足,从而反馈到学习中去,达到提高的效果。

在充分磨炼自己,这都是我的收益。

此外,我理解了一个系统大概是怎么设计和实现的。

开始,我是一个一个设置颜色和线宽的,其实这样很麻烦,后来我予以了改进,改成如果用图标就可以统一设置。

在这次实习中还是有很大的收益的。

不仅仅是动手能力,更是一些编程习惯。

每次解决一个问题,我都有一种成就感,尤其是首先弄了很久才解决的时候。

这次实习,也让我更加深刻理解了计算机图形学里面的一些概念。

这让我在专业知识上能加深理解。

通过这次实习,我的编程能力又能了很大的提高。

最后要感谢指导我的老师以及帮助过我的同学。

当我有不懂的问题时,老师总是耐心解答,同学们也很乐于帮助,如果没有他们的耐心与热心,我不可能顺利解决一些问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2