计算机图形学学习心得.docx

上传人:韩长文 文档编号:8578860 上传时间:2020-11-27 格式:DOCX 页数:21 大小:24.90KB
返回 下载 相关 举报
计算机图形学学习心得.docx_第1页
第1页 / 共21页
计算机图形学学习心得.docx_第2页
第2页 / 共21页
计算机图形学学习心得.docx_第3页
第3页 / 共21页
计算机图形学学习心得.docx_第4页
第4页 / 共21页
计算机图形学学习心得.docx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《计算机图形学学习心得.docx》由会员分享,可在线阅读,更多相关《计算机图形学学习心得.docx(21页珍藏版)》请在三一文库上搜索。

1、计算机图形学学习心得心得体会酒算机图形学是20世纪60年代以后,随着计算机技术(包括计算机硬件技术和软件技术)的发展和完善而形成的一门新兴学科。下面是_为大家收集整理的计算机图形学学_心得,欢迎大家阅读。计算机图形学学_心得篇1一、实验目的了解梁友栋算法和编码裁剪算法并利用该算法思想实现某一图形或直线段的裁剪,加深对梁友栋算法和编码裁剪算法的理解。二、实验内容利用梁友栋算法(参数化线段裁剪算法)或编码裁剪算法变成实现对直线段或者任一图形的裁剪。三、实验原理梁友栋算法简介如下:设线段两端点坐标分别为P1(x1,y1)和P2(x2,y2),则其参数化直线方程可写成下列形式:0u1当u=0时,得点P

2、1,当u=1时,得点P2。线段的裁剪条件可以由下面的不等式表示: Wxlx1uxWxr;Wyby1uyWyt这四个不等式可以表示为:upkqk k=1,2,3,4其中,参数p,q定义为:p1-x, q1x1Wxlp2x, q2Wxrx1p3-y, q3y1Wybp4y, q4Wyty1下标k=1,2,3,4分别对应裁剪窗口的左、右、下、上四条边界线。如果线段平行于裁剪窗口的某两边界,则必有相应的pk0,如果还满足qk0,则线段的端点位于窗口外部,即线段在窗口外,应该舍弃。如果qk0,线段在窗口内。当pk0时,直线是从裁剪窗口第k条边界线的外部延伸到内部。当pk0时,直线是从裁剪窗口第k条边界线

3、的内部延伸到外部。当pk不等于零时,可以计算出线段与第k条裁剪窗口边界线的交点参数: 根据定义,对于每条线段,pk中必有两个小于零,而另两个大于零。对于小于零的pk,直线同第k条裁剪窗口边线是从外到内相遇的,此时如果线段同第k条裁剪窗口边界线有交点的话,是参数u从0变大时遇到的,这时计算出相应的rk值,取0和各个rk值之中的最大值记为u1。与此相反,对于大于零的pk,计算出相应的rk值,取1和各个rk值之中的最小值记为u2。两个参数u1和u2定义了在裁剪窗口内的线段部分。如果u1u2,则线段完全落在裁剪窗口之外,应被舍弃。否则被裁剪线段可见部分的端点由参数u1和u2计算出来。四、实验环境Win

4、dows XP VisualC+6.0五、实验步骤盔入VisualC+6.0环境,在菜单中选择FileNewProjects,然后选择MFCAppWizard(exe)新建一个工程文件单击OK,在弹出的对话框中选择Single document,单击Finish,在VisualC+6.0编程界面中选择CMyView单击右键,选择Add Member Function,在弹出的对话框中添写void和函数名。/ 图形裁减View.cpp : implementation of the CMyView class/#include stdafx.h#include 图形裁减.h#include 图形

5、裁减Doc.h#include 图形裁减View.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyViewIMPLEMENT_DYNCREATE(CMyView, CView)BEGIN_MESSAGE_MAP(CMyView, CView)/AFX_MSG_MAP(CMyView)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you s

6、ee in these blocks of generated code!/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP/ CMyView construction/destructionCMyView:CMyView/ TOD

7、O: add construction code hereCMyView:CMyViewBOOL CMyView:PreCreateWindow(CREATESTRUCT cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CMyView drawingvoid CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocument;ASSERT_VALID(pDoc);LINECL

8、IP;/ TODO: add draw code for native data here/ CMyView printingBOOL CMyView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CMyView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CMyView:OnEndPrin

9、ting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CMyView diagnostics#ifdef _DEBUGvoid CMyView:AssertValid constCView:AssertValid;void CMyView:Dump(CDumpContext dc) constCView:Dump(dc);CMyDoc* CMyView:GetDocument / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUN

10、TIME_CLASS(CMyDoc);return (CMyDoc*)m_pDocument;#endif /_DEBUG/ CMyView message handlersvoid CMyView:LINECLIP/使用梁友栋-Basky直线裁剪算法CDC* pDC=GetDC;/取得绘图设备环境上下文指针/设置不同颜色画笔CPen newpen1(PS_SOLID,0,RGB(183,198,0);/窗口颜色CPen newpen2(PS_SOLID,0,RGB(0,0,1);/待裁剪线段颜色CPen newpen3(PS_SOLID,0,RGB(160,1,255);/裁剪后可见线段颜色

11、/辅助变量float p4,q4,u4;float u1,u2,r4;int x1,y1,x2,y2,x0,y0,x3,y3;int dx,dy,k;int wxl=300,wxr=450,wyb=100,wyt=400;/绘制裁剪窗口pDC-SelectObject(newpen1);pDC-Rectangle(wxl,wyt,wxr,wyb);x1=100;y1=200;x2=600;y2=400;/绘制被裁剪线段pDC-SelectObject(newpen2);pDC-MoveTo(x1,y1);pDC-LineTo(x2,y2);/计算dx=x2-x1;dy=y2-y1;p0=(fl

12、oat)-dx;p1=(float)dx;p2=(float)-dy;p3=(float)(dy);q0=(float)(x1-wxl);q1=(float)(wxr-x1);q2=(float)(y1-wyb);q3=(float)(wyt-y1);for(k=0;k4;k+)if (pk=0)/垂直或水平线段,由不为0的另外两个参数确定可见部分uk=1000;elserk=qk/pk;if(pk0)uk=(0rk)rk:1;/取用1与rk中的小值/参数在0-1之间变化,超出为无效参数u1=0.0;u2=1.0;for(k=0;k4;k+)if(pk0)u1=(uku1)?uk:u1;/取用

13、0与uk中的大值elseu2=(uk/满足条件为可见部分线段if(u1=u2)/计算可见部分线段x0=(int)(x1+u1*dx);y0=(int)(y1+u1*dy);x3=(int)(x1+u2*dx);y3=(int)(y1+u2*dy);/绘制窗口内可见线段pDC-SelectObject(newpen3);pDC-MoveTo(x0,y0);pDC-LineTo(x3,y3);六、实验结果与分析本图中矩形内紫色线段为裁剪之后可见线段,外部的黑色线段部分为带裁剪部分。七、实验中遇到的问题及解决方法1.对于VisualC+6.0的工程文件即:MFC的环境不熟悉,开始时编写视图View下

14、的程序在步骤上尚有困难,不知道该怎样使用该环境,再参考了一些相关书籍和求教于其他人之后,这个问题得到了解决。2.最初只是在后面添加了自编程序,并没有在OnDraw里面加入该程序的调用,程序编译没有错误,但运行后只是一个窗口,并没有图像,后来在同学的帮助下发现了这个错误,改正后程序顺利运行。3.程序编写过程中的语法不再是问题,偶尔有疏忽的时候,编译时一般就能改正了。4.在程序编写时对于点的坐标值不是很注意,随意定义了一些点,造成直线画到了图形的外面。计算机图形学学_心得篇2酒算机图形学是利用计算机研究图形的表示、生成、处理和显示的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表

15、示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。经过30多年的发展,计算机图形学已成为计算机科学中最为活跃的分支之一,并得到广泛的应用。在科技高度发展的今天,计算机在人们之中的作用越来越突出。而C语言作为一种计算机的语言,我们学_它,有助于我们更好的了解计算机,更好的学_计算机图形学。因此,C语言对我们计算机图形学的学_尤其重要,而我们也需要一定的C语言基础知

16、识。在这个学期里,我们班级的学生在计算机图形学老师何老师的带领下进行了计算机图形学的上机实践学_。在这之前,我们已经对C语言这门课程学_了一个学期,对其有了一定的了解和掌握,这对我们计算机图形的学_打下了良好的基础。但是,万事开头难,在计算机图形学的上机实践的过程中还是遇到了一些问题。上机实验是学_计算机图形学必不可少的实践环节,上课学_到的知识都需要通过C语言编程做出程序来真正掌握它。对于计算机图形学的学_目的,可以概括为图形的表示、图形的生成、图形的处理和显示,这些都必须通过充分的实际上机操作才能完成。我们上机实验总共包括七个, 每个实验之前老师都会给我们做详细的介绍,具体的操作步骤老师也

17、给了一个参考书,这样的话,我们在上机过程中也省去了很多麻烦,节约了很多时间。因此,我们才有了充裕的时间来理解实验原理,并结合自己的想象力,编写出属于自己的程序。学_计算机图形学除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程安排在周四晚上统一上机实验,所以我们需要有效地利用上机实验的机会,尽快掌握理解计算机图形学的基础知识,为今后的继续学_打下一个良好的基础。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:居深对课堂讲授内容的理解课堂上要讲授许多关于计算机图形学的知识和原理,听起来十分枯燥

18、无味,也不容易记住,死记硬背是不可取的。然而要使用C程序这个工具解决实际学_中的问题,通过多次上机练_,在理解的基础上就会自然而然地掌握计算机图形学图形生成的算法和处理方式。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,编写出来的程序无法运行,这是由于大部分学生C语言基础只是不够牢固的原因。学_计算机图形学不能停留在学_它的程序语言,而是利用学到的知识编写C语言程序来验证自己的想法,深入理解图形生成的原理,解决实际问题。即把C语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握C语言、自己编写的程序是否能够正确运行、对计算机的理解

19、是否到位。通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去掩盖程序中的错误,而不是尽可能多地发现程序中存在的问题。而且计算机图形学上机实验是依附在C语言编程基础之上的,我们对图形生成算法的理解要通过C程序才能体现出来。通过这次为数不多的几天计算机实践学_,我们巩固了一些关于C语言的知识,理解了我们计算机图形学的理论知识,这对我们将来到社会工作将会有莫大的帮助。同时它让我知道计算机图形的强大和瑰丽之处,虽然我们学的都是基本的生成算法,但是通过老师展示的几个计算机图形学高

20、级程序,我们才了解到计算机图形学可以做出非常华丽的视觉效果,而且只要你努力,任何东西都不会太难。最后,还是很庆幸能学到计算机图形学这样的一门课程,在学_本课程的同时,已经涉及了很多的学科,让我们更有能力成为全方位、多特色的新世纪人才。编程能力、思维能力都获得了提高,真是一举多得。计算机图形学学_心得篇3酒算机图形学是20世纪60年代以后,随着计算机技术(包括计算机硬件技术和软件技术)的发展和完善而形成的一门新兴学科。至今,计算机图形学已在建筑,机械,电子,造船,航空,汽车,轻工,广告,艺术等领域得到了广泛的应用。可以说,它几乎影响了所有涉及领域,冲击和改变着传统的设计模式。一打开计算机,人们首

21、先接触到的就是计算机图形学的内容,因为计算机的用户界面已广泛使用了计算机图形技术。事实上,计算机图形技术已深入到各个领域。计算机图形的生成一般包括两种方法:程序绘图和交互绘图。所谓程序绘图,就是先用计算机语言(例如C语言)编好绘图程序,然后运行该程序并绘出图形。而交互绘图则是应用交互式图形软件,通过交互命令(键盘命令,菜单命令等)由计算机生成图形。程序绘图是交互式绘图的基础。掘单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看,图

22、形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。 计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时,真实感图形计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。这学期我们主要学_了MFC图形编程,学_了 VC+

23、图形程序设计基础。从中学_了如何建立MFC项目和简单的输入与输出。三视图即主视图、俯视图、侧视图是分别将三维立体对正面、水平面和侧面作正投影得到的三个基本视图。用计算机绘制立体图的三视图的具体步骤:卡立三维空间坐标系,这里定义一个右手直角坐标系,即z轴正向朝上。在这个定义的坐标系下,确定三维立体上各点的位置坐标,同时引入 齐次坐标。 求出所作变换相应的四阶变换矩阵,一般根据变换前后图形上点的几何关系或由已知的变换矩阵求得。揩所作变换写出矩阵表示式,通过运算求得三维立体上各点(x, y, z)竟变换后的相应点(x , y)或(y , z)或(x , z),一般是二维点的齐次坐标。有变换后的所有二

24、维点绘出三维立体投影后的平面图形,即为主视图、俯视图或侧视图。在右手直角坐标系中,将三维立体向xOz面(正面V)作正投影,得到主视图。由投影变换前后三维立体上点到主视图上点的关系,可知此投影变换的变换矩阵为:10Tv=0 0 000000100001Tv:主视图的投影变换矩阵,简称投影矩阵。若已知三维立体上 n 个点(xi , yi , zi),则各点的齐次坐标可写成 n4 阶矩阵,主视图的投影变换矩阵表示式为:x1y1z111000x10z11x0z1 x2y2z212_0=0010 xyz10001x0z1nnnnn在绘图时,只要取x=xi , y=zi (i=1,2,n),就可在屏幕上绘

25、出三维立体的主视图三维立体向xOy面(水平面H)作正投影得到俯视图。其投影变换矩阵: 1000 0100 T=0000 0001为了使俯视图与主视图也画在一个平面内,就要使H面绕x轴负方向转90o,此旋转变换矩阵为:100000-10 Tx= 0100 0001为了使俯视图与主视图间有一定的间距,还要使H面沿负z方向平移一段距离z0。其变换矩阵为: 1000 0100 T=0010 00-z01因此俯视图的投影变换矩阵为上面三个变换矩阵的连乘积,即:100010001000 T=TTT=0100 00-100100Hx000001000010 00-z1000100010 1000 00-10

26、 =0000 00-z1 0俯视图的投影变换矩阵表示为:x1y1z11x10(-y1-z0)1xyz11000x0(-y-z)1 2220200-102 =0000 00-z1 0xnynzn1xn0(-yn-z0)1由此得到三维立体的俯视图上n个点(xi , -yi-z0) (i=1,2,n),取x=xi , y=-yi-z0(i=1,2,n),便可绘出三维立体的俯视图。揩三维立体向yOz面(侧面W)作正投影得到俯视图。其投影变换矩阵: 0000 0100 T=0010 0001为了使俯视图与主视图都画在一个平面内,就要使W面绕z轴转90o,此旋转变换矩阵为:0100-1000Tz=0010

27、0001第3 / 4页为了使侧视图与主视图间有一定的间距,还要使W面沿负x方向平移一段距离x0。其变换矩阵为:10000100 T= 0010 -x0001因此侧视图的投影变换矩阵为上面三个变换矩阵的连乘积,即:0000010010000100-10000100 Tw= 001000100010 00010001-x00010000 -1000 = 0010 -x0010 x1y1z11(-y1-x0)0z11 0000xyz1(-y-x)0z12222 -100020= 0010 -x0010 xnynzn1(-yn-x0)0zn1由此得到三维立体的侧视图上n个点(-yi-x0 , zi)

28、(i=1,2,n),取x= -yi-x0, y=-zi(i=1,2,n),便可绘出三维立体的侧视图。先让三维立体作投影面,然后旋转投影面得到平摊在同一个平面上的三个视图。也可以先把三维立体作旋转,然后再向投影面作正投影得到同样的三视图。通过这这们课的学_,让我对计算机的应用有了更新的认识,对于图形学中基本图形的生成算法有了一定的了解,图形学是计算机科学与技术学科的活跃前沿学科,被广泛的应用到生物学、物理学、化学、天文学、地球物理学、材料科学等领域。我深深感到这门学科涉及的领域之广是惊人的,可以说博大精深。在这个计算机的时代什么都要用到计算机技术,图形也是我们生活中重要的部分,好学好图形学为我以后的就业课成学_及新兴科学技术的运用打下了坚实基础。更为我以后的就业打下了坚实的良好基础,使我对未来充满了信心。感谢向华萍老师对我们的认真指导。

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1