计算机图形学实习报告.doc

上传人:文库蛋蛋多 文档编号:2391717 上传时间:2023-02-17 格式:DOC 页数:7 大小:41KB
返回 下载 相关 举报
计算机图形学实习报告.doc_第1页
第1页 / 共7页
计算机图形学实习报告.doc_第2页
第2页 / 共7页
计算机图形学实习报告.doc_第3页
第3页 / 共7页
计算机图形学实习报告.doc_第4页
第4页 / 共7页
计算机图形学实习报告.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《计算机图形学实习报告.doc》由会员分享,可在线阅读,更多相关《计算机图形学实习报告.doc(7页珍藏版)》请在三一办公上搜索。

1、一、实习目的与意义本次实习为集中实习,基于AutoCAD2004平台与VC环境系统,制作二维和三维立体产品。通过对AutoCAD2004与VC系统的应用实习,熟悉其的基本功能及操作特点,掌握基本的制作过程。通过本次实习,学生应能熟练使用AutoCAD软件、建立初步面向对象编程的基本概念、以及学会使用VC编程语言。二、实习主要内容1、AutoCAD软件操作(1)简单图形绘制(2)图形的基本编辑(3)文字及填充(4)三维图形绘制2、 基于VC6.0下的计算机图形学程序编写(1)画直线、画多边形、画圆、画字符(2)对多边形进行填充(3)图形裁剪(4)图形的几何变换(5)三维图形的消隐及着色三、实习的

2、主要过程 实习为期两周,第一周实习部分为CAD 软件实习,第二部分为计算机图形学基础的编程实习。第一周实习CAD画图,在实习第一天一晚上老师给我们讲了这两周实训的任务安排,讲述了本周实训的主要内容,实训目的以及意义所在,然后交代了一些细节方面的问题,强调应当注意的一些地方,以及考试成绩打分等。并建议到图书馆找谢相关的书籍学习。开始我们跟着实习指导书开始一步一步的做。前两天主要学习CAD的二维画图,主要是掌握了二维的POINT、LINE、CIRCLE、ARC、DONUT、RECTANGLE、POLYLINE、ELLIPSEPOLYGONSPLINEMLINETRACESOLIDXLINERAY的

3、功能及操作。 学会设置幅面、使用实体绘图工具条、擦除命令(ERASE)、重画命令(REDRAW)及 SOLID命令操作及编辑命令操作MOVE、COPY、MIRROR、ARRAY、BREAK、TRIM、EXTEND、ROTATE、OFFSET、FILLET、CHAMFER。 倒角、 补线、SCALESTRETCHDIVIDEMEASUREEXPLODELENGTHENMEDITPEDITSPLINEDDITUUNDO。掌握剪贴板复制图形、夹点、实体快速选择。实体绘图次序改变命令、文本注写及编辑等操作。 掌握图层设置、颜色设置、线型设置的方法、特性修改的功能、特性匹配的功能、线宽及线性比例的设置方

4、法、图案填充的方法及步骤第三四天学习。掌握建立尺寸式样的方法、尺寸标注工具条各图标的含义、尺寸标注下拉菜单的使用。尺寸标注命令的输入方法、长度型尺寸标注的方法、 水平尺寸标注、垂直尺寸标注、基线型尺寸标注、连续型尺寸标注、旋转型尺寸标注、对齐 型尺寸标注、握角度型尺寸标注方法、 掌握直径型尺寸标注方法、半径型尺寸标注方法、掌握快速尺寸标注方法、掌握坐标型尺寸标注方法。块操作,了解掌握Block、 Wblock。之后开始练习三维画图,主要掌握了坐标、视口、拉伸、切割、旋转、曲面属性、交集差集的应用,渲染等。最后一天进行考核。第二周主要实习计算机图形学的编程实习。对于编程的主要步骤为:(1)程序框

5、架建立:打开Visual C+6.0 软件,以计算机图形学的一个Project,利用MFC新建一个单文档程序,在生成的程序框架中添加必要的实现功能程序代码,根据具体情况设置相应的程序,然后在该程序里实现所有编程任务。(2)添加新的菜单项框架中必不可少的那就是菜单选项,所以根据我们的实习任务,首先要建立一个菜单项。点击VC平台左边窗口中的Resource View标签,点击打开Menu,添加完菜单项相应的菜单,接下来就是为菜单项添加菜单响应函数,以及添加必要的条件响应代码。(3)直线:DDA算法实现、中点画线算法、Bresenham直线算法在二维坐标平面上的直线可按其斜率以及起点终点横坐标的相对

6、大小分为以下六种:水平、垂直、斜率不同的四种情况。由DDA算法可得起始条件为x0、y0;递推条件为横坐标两每增加1,纵坐标量增加m;终止条件为横坐标变量大于x1。DDA直线的程序实现如下:首先编写菜单响应函数,对MenuID和PressNum两个变量赋初值;接下来建立相应的鼠标响应程序框架,DDA直线要求第一次点鼠标左键确定起始点,第二次点鼠标左键确定直线终止点,并画出直线,中间利用橡皮筋技术实时显示直线的形状,完成直线绘画后,还要将橡皮筋旧线擦除。中点画线算法实现过程和DDA算法大致相同,但是其思想更加合理,更有利于硬件实现,提高了算法效率,其程序来源于源码中,程序实现同DDA大同小异,DO

7、C.cpp中核心算法不同而已,是用交点与中点差比较得判定。Bersenham是用e比较。(4)圆的生成:Bresenham画圆法、正负圆法先为Bresenham 圆添加菜单响应函数确定MenuID,然后画圆的OnLButtonDown()响应:用鼠标确定圆心,再移动鼠标确定半径。在确定半径时,随着鼠标的移动,一个圆随着鼠标的移动半径发生变化。然后调用Bresanham 算法完成圆的绘制。Bresenham圆的编程实现如下:首先编写菜单响应函数,对MenuID和PressNum两个变量赋初值;接下来建立相应的鼠标响应程序框架,Bresenham圆要求第一次点鼠标左键确定圆心,第二次点鼠标左键确定

8、圆上一点,并由此确定半径,画出完整的圆;然后再在Doc.h头文件中声明必要变量和函数,并在Doc.cpp中完成Bresenham圆的生成函数。正负画圆法的编程实现与Bresenham圆的相类似。(5)曲线生成:Berier曲线 与 B样条曲线之前的响应与直线与圆的生成方法一样,先为Berier曲线添加菜单响应函数确定MenuID,先用左击鼠标响应OnLButtonDown(),得到控制点个数PointNum中,得到控制点后,单击鼠标右键响应调用Berier函数,用控制点和基函数逐个像素描点得到曲线。B样条曲线方法相同,不同的是DOC.cpp中的基函数。(6)图形变换平移、任意多边形平移、缩放、

9、旋转和对称变换同样添加菜单响应函数确定MenuID,对于对已知图形的平移,则先在屏幕上显示一个图形,用鼠标左键先后点两点,用这两点的间距作为图形的平移量,对显示的图形进行平移。显示图形的数据存放在文档类数组group 中,图形的数据量存放在文档类变量PointNum 中。在文档类中增加两个函数:DrawGraph( )和GenerateGraph( )完成这些工作,其中,DrawGraph( )根据存储在group 数组中的数据生成图形,GenerateGraph( )先准备数据,然后调用DrawGraph( )生成图形。有关操作涉及到鼠标左键函数和鼠标移动函数。左键第一点确定基点,左键第二点

10、确定平移量,并完成图形平移。在确定第二点之前的鼠标移动时,从基点拉出一根橡皮筋以显示平移量。任意多边形平移,与平移不同的区别在于参考平移是对已知的group4平移、而是另行设置的数组m_nPolygon;平移时则是先用多边形画出任意形状的多边形,然后用相同的方法计算位移量,调用 DrawGraph( )重新画图。旋转则是用之前数图实习的方法做的,MFC的响应方法类似。只是多加了个通过计算每个点旋转后的位置。同理于缩放与对称的方法。(7)图形显示边缘填充、扫描线填充、种子填充、自由种子填充边缘填充算法、扫描线填充与扫面线填充算法都是在多边形基础上,然后再画完后,早鼠标右键闭合多边形后直接改变Me

11、nuID的值进行多边形的填充,而种子填充则是先选定填充颜色然后对填充对象在区域内选定填充点,然后填充的,如果没有选色,则会溢出,为了解决这一个问题,我自己设计了一个小程序,利用一个计数程序,使得在首次使用填充命令式弹出填充颜色选择对话框,以选择填充颜色,第二次使用填充命令就不再弹出选择颜色对话框。基本操作,边缘填充算法与扫面线填充算法,都是先画一多边形对所画图像立刻进行填充,而自由填充算法,则是可以对任何闭合多边形都可以随意填充所选颜色,不局限于某个多边形。且多边形边界可以任意的。(8)二维裁剪多边形裁剪、中点裁剪、Liang-Barsky裁剪和Cohen-Sutherland裁剪所有的裁剪都

12、是在固定的窗口下完成的,已知了窗口X、Y的边界值。 首先编写菜单响应函数,对MenuID和PressNum两个变量赋初值;接下来建立相应的鼠标响应程序框架,CohenSutherland算法要求单击鼠标左键确定直线的起止点;多边形裁剪要求单击鼠标左键确定多边形的顶点,单击鼠标右键结束选点,并封闭生成多边形,并完成多边形裁剪;然后再在Doc.h头文件中声明必要变量和函数,并在Doc.cpp中完成CohenSutherland算法和多边形裁剪的生成函数。正确完成上述步骤后,对整个工程进行编译、执行,单击多边形的CohenSutherland算法和多边形裁剪的菜单项,便可生成CohenSutherl

13、and算法和多边形裁剪的图形。中点裁剪、Liang-Barsky裁剪与CohenSutherland实现方法大致一样,最后在断定直线与边界的交点改变而已。四、实习的主要体会第一周的CAD实习,虽然说时间不长,可是对于我来说收获却是很多的。首先对CAD知识较以前来说有所提高。我从书上得知,CAD可以绘制机械、建筑、航空、石油等多方面的二维平面图形和三维立体图形等等,所以说它的使用性是非常之广泛的,电脑辅助绘图相对于手工绘图有很多突出的优势在精度,准度,美观度方面它远超于手工画图。学习到是非常有用的。一想到自己如果能学会用CAD就可以画出各式各样的图形,心一下子就很兴奋。,CAD不但用处很大,我们

14、可以用它作出工程、建筑等方面的图画来,而且易学,就是把那些基本的套路把握熟悉了以后就很简单了,还有要害的一点就是对自己要画的东西一定要熟悉的,否则一些要害性的标本就画得不恰当了。 计算机绘图的目标就是要使设计的结果在生产实践是发挥作用。目前的设计结果基本上以纸基图纸的方法进入到生产中,同时,在设计单位,纸基的图纸也是图纸档案治理的主要对象。虽然计算机辅助设计的发展方向是达到设计、生产的无纸化,但除了极少数巨型的制造企业外,绝大多数普通的设计生产单位还是以纸基图作为组织设计生产的依据。因此,怎样将CAD设计产生的电子格式的图纸转换成为描绘在规定幅面上的纸基格式的图纸,是一个与生产实际结合得非常紧

15、密的问题,在某种意义上来说,这一步与图形的修改、编辑等绘图过程同等重要。 刚实习的第一天晚上,老师就告诉我实习的时间很短很紧,我们需从图书馆借相关书籍自己学习,的确在作图的过程中我遇到了不少的难题,不是所有的都要在老师及同学的帮助解决。有书后可以更快的解决,也可以在寝室自己课后学。凡事开头难,第一天的实习进度比较难,刚打开软件都不知道自己该怎么做,该做什么。大概只能跟着指导书做一到两个实习小节,当对CAD开始有了初步的了解后,自己的兴趣也随之增加,开始白天在寝室自己跟着借来的书本做,晚上在机房实习。按书本是按部就班,能学到较为系统的方法,在机房实习通过老师与同学的帮助能学到一些快捷方式及同一图

16、用不同的方法的比较。我一直认认真真去绘制每一个图,思考每一个细节,作图步骤,哪怕是一个很小的问题。对于指导书多讲得是用不同的命令,讲解粗略,也不知道具体的用途,经常出错。但指导书比较综合,每个图形都代表一种画法。学完后可以比较好的将CAD各种基础的画法与命令掌握。学习CAD的目的就是能够完成与之相关的实际绘制任务,在实际工作中能够更快更准的完成制图作业。刚开始学的时候,也遇到不少问题。如同样画一张图,有的同学画的大小适中,有的同学画的图形就很小,甚至看不见,这是因为绘图区域界限的设定操作没有做,或虽用LIMITS命令进行了设定,但忘记了用 ZOOM命令中的ALL选项对绘图区重新进行规整.绘图区

17、域的设定是根据实际的绘图需要来进行 的.在进行尺寸标注以后,有时发现不能看到所标注的尺寸文本,这是因为尺寸标注的整体比例因子设置得太小,将尺寸标注方式对话框打开,修改其数值 变大即可.用线型名称为HIDDEN的线型画线段,但发现画出的线段看上去像是实线, 这是什么原因引起的? 这是线型比例不合适引起的,也就是说线型比例太大,也可能是太小.解决问题 的办法是将线型管理器对话框打开,修改其全局比例因子至合适的数值即可。在对图层操作时,发现没有图层这一栏了,也就是对象特性没有了,究其原因,是在无意中用鼠标错误点击,将其关闭。解决方法:视图工具栏对象特性。在对象特性前面的小方框中打钩。屏幕上出现对象特

18、性工具栏,用鼠标将其拖到屏幕上方,标准工具栏的下面即可。所谓笨鸟先飞。就这样一周的时间,自己在寝室几乎是手不停地重复着同样的操作,一天下来,手感到有 些酸痛酸痛的,眼睛长时间对着电脑屏幕,感觉比较疲劳,下课后看东西都有一些朦胧.虽 然有一些辛苦, 但还是有回报的, 作图速度提高了, 作图错误也减少了. 在接下来的几天里, 没有一丝的放松,加紧练习操作.随着操作的时间越多,作图的速度也不断的提高,在实训 周的第四天就提前完成了所有图画,比老师规定的时间提前半天完成任务. 回想这一周的实训,感觉过得很快,一周时间过去了,脑袋中想的全是关于 CAD 的.这一周下来,感觉收获还真不少.经过一周的集中实

19、训,作图速度有了明显提高。私下在寝室画CAD的确帮助不少,最后在两小时的考核中,我三维画图明显快很多。当然这次实习也获得一些经验。还有些常用技巧如文字中编辑L对已标注的文字进行编辑AUTOCAD提供二个命令:doledit 和Broperties 命令。三维中Autocad采用三维坐标系统确定在空间位置显示在屏幕上状态栏中的坐标值。就是当前光标所在位置。使用工具按钮进行视窗缩放,在标准工具栏中安排了视窗缩放按钮,操作时首先用鼠标左键单击打开。并将鼠标移到所选位置放开左键。进行图的单轴拉伸,就CAD来说就有一种方法:将绘制好的图定义成块,然后插入块,此时就可以进行单轴拉伸(缩放),方法是,使用绘

20、图菜单,单击“块”创建块出现块定义对话框命名选取对象确定。随后在图纸或模型空间插入块,出现插入对话框,选择刚定义的块,在此对话框中的“缩放比例”选项中输插入块在X或Y方向的缩放比例,确定,插入的图形就按你指定的比例缩放。也总结了些许经验,首先画图时可用不同方法。所以要有比较,才有鉴别 容易混淆的命令,要注意使自己弄清它们之间的区别。其次,层次要分明 图层就像是透明的覆盖图,运用它可以很好地组织不同类型的图形信息.学习过程中,我偷懒,直接从对象特性工具栏的下拉列表框中选取颜色,线型和线宽等实体信息,这很不好,使得处理图形中的信息不那么容易,要特别注意纠正自己的这一不好习惯.严格做到 层次分明,规

21、范作图.我的体会是:养成良好的习惯,受益匪浅。再次,粗细要清楚使用线宽,可以用粗线和细线清楚地展现 出部件的截面,标高的深度,尺寸线以及不同的对象厚度。通过图层指定线 宽,显示线宽.提高自己的图纸质量和表达水平. 此外,内外有别 利用块以及属性功能,可以大大提高绘图效率.块有内部图块与 外部图块之分. 内部图块是在一个文件内定义的图块,可以在该文件内部自由作用,内部图块一旦被定 义,它就和文件同时被存储和打开. 外部图块将块的主文件的形式写入磁盘,其他图形文件也可以使用它,要注意这是外部图块和内部图块的一个重要区别,如我们在实习画物理的电路图是将元件存储成块十分好用 。本次的CAD实训就是运用

22、前面所有的各种绘图工具与编辑工具进行绘制的,希望通过这次的复习和巩固在加上以后的完善能够更灵活快速准确的绘制各种图形从而发挥出CAD的巨大作用!第二周实习的是计算机图形学的编程学习。首先在本次实习中让我对计算机图形学有了一个更加深我们对计算机图形学课程理论知识的认识和理解,使我找到了理论与实践的最佳结合点。以前可能只是简单的了解记住课本一些原理,通过自己编写程序将理论付诸实践后。那些知识更加使我真正明白并深记着,尤其能找到一些以前会忽略的细节。这为我们以后做有关计算机图形学方面的工作打下了一个很好的基础。例如在学习曲线时课堂学习知识详细的学习Berier曲线,由于编程自己还特意地看了B样条的原

23、理。等等。这样我不仅对已经学习的知识进行近一步的巩固,还对自己为掌握的知识进行更深一步的了解。且这样对计算机图形学的基础知识能更好好的记住,印象深刻,而不是简单的背下或书面的理解各图形生成的原理。其次是我的编程能力的提高是显著的。也加强了我对整个VC结构的理解。督促自己看些VC的书。对C+的封装性有了更加深刻的理解,将图像的信息和所有对图像的处理函数都封装在了这个类中,由于对话框、传参数等操作进行得比较多,对一些消息响应更加的了解些。学会了如何调用对话框以及如何传递对话框的参数。实习出错是难免的,出错以后往往就得自己调试,学会了进行调试用处非常大,老师说过其实一个大型的程序往往并不是靠编算法,

24、而是调试找出错误。程序边运行,边调试,看数值变量是否正确,从而找到出错的地方,再分析出错原因,但每一次改错的过程都是在对所学内容进行一种印象加深。最后想说的是一种态度那就是严密。其实实习过程错误很多都是打错了或粗心造成的,多为语句错误。所以细心与严谨对于编程十分重要,当然这次实习也发现了自己许多的不足。首先自己的计算机图形学的基础知识不扎实,只知道其一些效果而用离原理去想算法还有些距离,如刚开始在做扫描线填充时对边缘直线存储方式即边表出错,导致最后填充出错。通过实习,从而发现自己的不足,从而反馈到学习中去,达到提高的效果。在充分磨炼自己, 这些都是在传统课堂上学不到的。最后我想说,无论是实习CAD还是编程都让我感触深刻,CAD的实用让我深感计算机图形学美好的发展前景。同样程序设计也让我感受到计算机图形学的深奥学好计算机图形学是非常有必要,相信这次实习也会对未来的学习有非常大的帮助。

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号