东南大学自动化学院计算机图形学大作业
计算机图形学1_8章习题解答
计算机图形学1_8章习题解答《计算机图形学》1-4章习题解答习题11.计算机图形学的研究内容是什么?答:几何模型构造,图形生成,图形操作与处理,图形信息的存储、检索与交换,人机交互及用户接口,动画,图形输出设备与输出技术,图形标准与图形软件包的研究等。
2.计算机图形学与图像处理有何联系?有何区别?答:计算机图形学与图像处理都是用计算机来处理图形和图像,结合紧密且相互渗透,但其属于两个不同的技术领域。
计算机图形学是通过算法和程序在显示设备上构造图形,是从数据到图像的处理过程;而图像处理是对景物或图像的分析技术,是从图像到图像的处理过程。
3.简述计算机图形学的发展过程。
答:略。
(参考:教材P3)4.简述你所理解的计算机图形学的应用领域。
答:略。
(参考:教材P4~P5)习题21.什么是图像的分辨率?答:在水平和垂直方向上每单位长度所包含的像素点的数目。
2.在CMY 坐标系里找出与RGB 坐标系的颜色(0.2,1,0.5)相同的坐标。
答:1-0.2=0.8,1-1=0, 1-0.5=0.5 坐标为(0.8, 0, 0.5)3.在RGB 坐标系里找出与CMY 坐标系的颜色(0.15,0.75,0)相同的坐标。
答:1-0.15=0.85, 1-0.75=0.25, 1-0=1 坐标为(0.85, 0.25, 1)4.如果使用每种基色占2比特的直接编码方式表示RGB 颜色的值,每一像素有多少种可能的颜色?答:64222222=??5.如果使用每种基色占10比特的直接编码方式表示RGB 颜色的值,每一像素有多少种可能的颜色?答:824107374110242223101010==??6.如果每个像素的红色和蓝色都用5比特表示,绿色用6比特表示,一共用16比特表示,总共可以表示多少种颜色?答:65536222655=??7.解释水平回扫、垂直回扫的概念。
答:水平回扫:电子束从CRT 屏幕右边缘回到屏幕左边缘的动作。
计算机图形学作业
计算机图形学在CAD领域中的应用信息学院自动化0905班王睿阳200925191 计算机图形学1.1 定义及简介计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。
计算机图形学一个主要目的就是要利用计算机产生令人赏心悦目的真实感图形。
为此,必须建立图形所描述场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。
同时,真实感图形计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。
1.2 研究内容计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。
图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。
从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。
计算机图形学的研究内容非常广泛,如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。
1.3 发展概况计算机图形学是利用计算机研究图形的表示、生成、处理,显示的科学。
经过30多年的发展,计算机图形学已成为计算机科学中最为活跃的分支之一,并得到广泛的应用。
1950年,第一台图形显示器作为美国麻省理工学院(MIT)旋风一号(Whirlwind)计算机的附件诞生。
该显示器用一个类似示波器的阴极射线管(CRT)来显示一些简单的图形。
在整个50年代,只有电子管计算机,用机器语言编程,主要应用于科学计算,为这些计算机配置的图形设备仅具有输出功能。
计算机图形学处于准备和酝酿时期,并称之为:“被动式”图形学。
2 计算机图形学在CAD中的应用2.1 CAD技术简介计算机辅助设计(CAD-Computer Aided Design)指利用计算机及其图形设备帮助设计人员进行设计工作。
2016年春《计算机图形学》作业 (答案)
2016年北京大学现代远程教育《计算机图形学》作业题注意事项:1.本作业题中所标注的章节均以学习指导和课件为准;2.作业请独立自主完成,不要抄袭。
一、填空题1.(第1章)图形是由点、线、面、体等几何要素和明暗、灰度(亮度)、色彩等非几何要素构成的,从现实世界中抽象出来的带有灰度、色彩及形状的图或形。
2.(第2章)一个计算机图形系统至少应具有计算、存储、输入、输出、交互等基本功能;3.(第2章)光栅扫描图形显示器是画点设备,显示一幅图像所需要的时间等于显示整个光栅所需的时间,而与图像的复杂程度无(填“有”或“无”)关;4.(第3章)在计算机图形学中,多边形有两种重要的表示方法:顶点表示和点阵表示。
5.(第3章)多边形填充的扫描线算法先求出扫描线与多边形边的交点,利用____扫描线的连续性求出多边形与扫描线相交的连续区域,然后利用多边形边的连续性,求出下一条扫描线与多边形的交点,对所有扫描线由下到上依次处理。
6.(第3章)将区域内的一点(种子)赋予给定的颜色,然后将这种颜色扩展到整个区域内的过程叫区域填充;区域的表示方法有内点表示和边界表示两种。
7.(第4章)常用坐标系一般可以分为世界坐标系、局部坐标系、观察坐标系、设备坐标系、标准化设备坐标系。
8.(第4章)对于基本几何变换,一般有平移、旋转、反射和错切等。
这些基本几何变换都是相对于 坐标原点 和 坐标轴 进行的几何变换。
9.(第4章)在三维空间中的物体进行透视投影变换,最多可能产生 3 个主灭点。
10.(第6章)根据输入数据的不同性质,图形核心系统(GKS)和三维图形系统(PHIGS)把输入设备在逻辑上分成以下几类: 定位___设备、 笔画__设备、 定值 设备、 选择 设备、 拾取 设备、 字符串 设备。
11.(第7章)隐藏面和隐藏线的消除有两种基本的算法,一种是基于 图像空间 的方法,一种是基于 物体空间 的方法。
12.(第7章)扫描线z 缓冲器算法所用到的数据结构包括一个 多边形y 筒 、一个 边y 筒 、一个 多边形活化表__、一个 边活化表___;13.(第8章)通常,人们把反射光考虑成3个分量的组合,这3个分量分别是_ 环境光 反射、 漫 反射和 镜面 反射。
计算机图形学大作业最终版
关于计算机艺术的发展与应用的文献综述梁文卓(08007236)【摘要】:计算机艺术是两个学科的交融。
计算机属于工科,属于自然科学。
而艺术则是思想领域范畴的,两者交汇会衍生出新的学科。
我随着科技的日益发展,计算机运算的速度和精度日益提高,随之而来的就是信息时代,而图形处理则作为信息时代的产物。
本文从计算机艺术这个主题出发,以图形处理作为切入点,论述了艺术在计算机图形处理当中的应用。
本文分两部分:第一部分为艺术的数位化现象的讨论;第二部分为计算机艺术在各个领域中的应用。
【关键字】:计算机艺术、图形处理、艺术的数位化现象随着科技的进步,计算机走近了人们的日常生活。
计算机图形处理则是其改善人们生活方式的其中一个体现。
计算机通过数码相机或者扫描仪把图形读入,然后进行平面立体化或空间立体化的处理,在计算机显示器上建立了“虚拟空间”,表现了科学技术与思想情感的有机结合。
然而,这些处理后的图形还不能称得上图形艺术,因为这些视觉图形虽然通过软件让人们产生共性和美感,但是却不具备艺术创作的本质内涵。
只有将人们的思想与计算机技巧结合起来,这样的作品才称得上是一件计算机艺术品。
第一部分:艺术的数位化现象的讨论。
在计算机艺术的这个论题上,很多学者提出了很多思辨性的结论。
翟建勇教授从哲学的角度讨论了计算机图形的美学价值。
他认为电子图像是设计的产物,表达了设计者的美学观,设计者在满足作品的用途的条件下,加入了个人的思想。
计算机图形的“个人因素”是其美学价值重要的组成部分,一副图形的美丑都不是图形的美学价值重点,关键在于它是否正确表达作者想要表达的思想。
雍晴在她的学位论文中提出了对电脑动画创作现状的思考。
她认为数码艺术中技术、艺术以及情感应该达到一种平衡的状态。
她重新定义了数码艺术的含义。
由于我国数码艺术的起步较晚,很多人对数码艺术的认识仅仅停留在计算机技术应用这样一个层面上。
她认为数码艺术虽然依赖于技术,但技术无论多么重要,它都是手段而不是目的。
《计算机图形学》练习试题及参考答案大全
《计算机图形学》练习试题及参考答案(后面有答案)一、名词解释:(每个4分)1.计算机图形学2.图象处理3.模式识别4.计算几何5.凸多边形6.种子填充算法7.窗口8.视区9.光顺性10.拟合11.多项式插值12.小挠度曲线13.图形变换14.齐次坐标系15.凸包16.轮廓线17.等值线18.图形的翼边表示19.ER模型20.图形消隐21.本影22.半影23.用户坐标系24.规范化设备坐标系25.构造26.约束技术27.光线跟踪28、走样29、CRT(Cathode Ray Tube)30、隔行(interlaced)扫描31、输入模式32、取样方式(sample mode)33、区域34、边界表示法35、复合变换36、二维复合平移37.二维复合比例38.二维复合旋转39.视区(Viewport)40、投影变换41、平面几何投影42. 参数图43. 像素图44.人机界面45.地理信息系统46.虚拟现实47.几何造型技术48.扫描转换49. 插值曲线50.逼近曲线51. 用户接口52. 交互技术53. 交互式图形系统的基本交互任务54. 定位任务55. 选择任务56. 拾取任务57 .选择技术58. 菜单技术59. 文字输入任务60. 数值输入任务61.动画62.帧63.场64. 消隐65.物体空间的消隐算法66. 漫反射光67. 环境光68. 镜面反射光二、选择题(每题2分)1、计算机图形学与计算几何之间的关系是( )。
A)学术上的同义词B)计算机图形学以计算几何为理论基础C)计算几何是计算机图形学的前身D).两门毫不相干的学科2、计算机图形学与计算机图象学的关系是( )。
A)计算机图形学是基础,计算机图象学是其发展B)不同的学科,研究对象和数学基础都不同,但它们之间也有可转换部分C)同一学科在不同场合的不同称呼而已D)完全不同的学科,两者毫不相干3、触摸屏是( )设备。
A)输入B)输出C)输入输出D)既不是输入也不是输出4.计算机绘图设备一般使用什么颜色模型?( )A)RGB;B)CMY;C)HSV ;D)HLS5. 计算机图形显示器一般使用什么颜色模型?( )A)RGB;B)CMY;C)HSV ;D)HLS6.分辨率为1024×1024的显示器各需要多少字节位平面数为24的帧缓存?( ) A)512KB;B)1MB;C)2MB ;D)3MB7.哪一个不是国际标准化组织(ISO)批准的图形标准?( )A)GKS;B)PHIGS;C)CGM ;D)DXF8.下述绕坐标原点逆时针方向旋转a角的坐标变换矩阵中哪一项是错误的? ( )| A B || C D |A) cos a;B) sin a;C) sin a;D) cos a9、在多边形的逐边裁剪法中,对于某条多边形的边(方向为从端点S到端点P)与某条裁剪线(窗口的某一边)的比较结果共有以下四种情况,分别需输出一些顶点.请问哪种情况下输出的顶点是错误的? ( )A)S和P均在可见的一侧,则输出S和P.B)S和P均在不可见的一侧,则输出0个顶点.C)S在可见一侧,P在不可见一侧,则输出线段SP与裁剪线的交点.D)S在不可见的一侧,P在可见的一侧,则输出线段SP与裁剪线的交点和P.10、在物体的定义中对边的哪条限制不存在? ( )A) 边的长度可度量且是有限的B) 一条边有且只有两个相邻的面C) 一条边有且只有两个端点D) 如果一条边是曲线,那么在两个端点之间不允许曲线自相交11.下述哪一条边不是非均匀有理B样条(NURBS)的优点? ( )A) NURBS比均匀B样条能表示更多的曲面B) 对于间距不等的数据点,用NURBS拟合的曲线比用均匀B样条拟合的曲线更光滑C) NURBS提供的权控制方法比用控制点更能有效的控制曲线的形状D) 使用NURBS可以提高对曲面的显示效率12.下列关于图的存储表示的叙述中,哪一个是不正确的?A) 无向图的相邻矩阵是对称矩阵B) 对于带权的图,其相邻矩阵中值为1的元素,其值可以用边的权来权替C) 用邻接表法存储包括n个结点的图需要保存一个顺序存储的结点表和n个链接存储的边表D) 用邻接表法存储包括n条边的图需要保存一个顺序存储的结点表和n个链接存储的边表13*.在面片的数量非常大的情况下哪一个消隐算法速度最快? ( )A) 深度缓存算法(Z-Buffer)B) 扫描线消隐算法C) 深度排序算法(画家算法)D) 不知道14*.下面关于深度缓存消隐算法(Z-Buffer)的论断哪一条不正确? ( )A) 深度缓存算法并不需要开辟一个与图像大小相等的深度缓存数组B) 深度缓存算法不能用于处理对透明物体的消隐C) 深度缓存算法能并行实现D) 深度缓存算法中没有对多边形进行排序15.在用射线法进行点与多边形之间的包含性检测时,下述哪一个操作不正确? ( )A) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数0次B) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数2次C) 当射线与多边形交于某顶点时且该点的两个邻边在射线的两侧时,计数1次D) 当射线与多边形的某边重合时,计数1次16*、扫描消隐算法在何处利用了连贯性(相关性Coherence)?(1)计算扫描线与边的交点;(2)计算多边形在其边界上的深度;(3)计算多边形视窗任意点处的深度值;(4)检测点与多边形之间的包含性。
《计算机图形学》练习试题及参考答案(六)
《计算机图形学》练习试题及答案一、名词解释1、齐次坐标系2、光顺性3、种子填充算法4、镜面反射光5、投影变换6、光线跟踪7、复合变换8、走样9、几何造型技术10、虚拟现实二、简答题1、前截面距离F和后截面距离B定义了什么?2、计算机动画的制作主要步骤3、计算机图形显示器和绘图设备表示颜色的方法各是什么颜色系统?它们之间的关系如何?4、图形软件主语言的选择应考虑哪些因素?5、制定CGI,CGM,IGES标准的目的分别是什么?6、自由曲面的表示通常有哪两种?7、什么叫做走样?什么叫做反走样?反走样技术包括那些?8、简述区域连贯性、扫描线的连贯性以及边的连贯性。
9、简述Bezier曲线的不足之处。
10、建立图形软件可采用哪三种方法?11、在观察空间中,如何确定投影的类型和方向?12、简述编码裁剪法(即Cohen-Sutherland线段裁剪法)的算法过程。
三、应用题1、分析边标志算法的实现过程,并写出其算法的C语言描述。
2、简述深度缓存算法及其特点。
3、假设在观察坐标系下窗口区的左下角坐标为(wxl=10,wyb=10),右上角坐标为(wxr=50,wyt=50)。
设备坐标系中视区的左下角坐标为(vxl=10,vyb=30),右上角坐标为(vxr=50,vyt=90)。
已知在窗口内有一点p(20,30),要将点p映射到视区内的点p`,请问p`点在设备坐标系中的坐标是多少?(本题10分)4、如下表是采用DDA算法画出(0,0)到(5,2)的直线的数据,请填写空格处。
i xi yi yi+0.5 int(yi+0.5)1 0 0 0.5 02 13 24 35 46 5 2 2.5 25、已知三角形ABC各顶点的坐标A(1,2)、B(5,2)、C(3,5),相对直线Y=4做对称变换后到达A’、B’、C’。
试计算A’、B’、C’的坐标值。
(要求用齐次坐标进行变换,列出变换矩阵)6、试对下图中的多边形进行裁剪,用图表示裁剪过程。
计算机图形学第一章课后习题作业
1. 阐述计算机图形学,图象处理,模式识别和计算几何这四门学科之间的关系.答: 计算机图形学研究是数据模型和几何模型转化为图像信号,模式识别是研究图像信号到数据模型和几何模型图像处理是处理图像到图像。
计算几何是研究几何模型和数据处理的学科,探讨几何形体的计算机表示.2.计算机图形学的研究内容是什么?计算机图形学是研究通过计算机将数据转换为图形,并在专门显示设备上显示的原理、方法和技术的学科.计算机图形学的研究内容非常广泛,主要有以下几个方面:计算机图形学的应用;计算机图形设备和系统;国际标准化组织(ISO)发布的图形标准;人机交互接口技术;基本图形实体、自由曲线和自由曲面的生成算法;图形变换和裁剪;曲面和实体造型算法;颜色、光照模型及真实感图形显示技术与算法等内容。
2. 简述计算机图形学的发展过程和发展趋势发展过程:1950年,第一台图形显示器作为美国麻省理工学院(MIT)旋风I(Whirlwind I)计算机的附件诞生了。
该显示器用一个类似于示波器的阴极射线管(CRT)来显示一些简单的图形。
1958年美国Calcomp公司由联机的数字记录仪发展成滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。
1962年,MIT林肯实验室的Ivan E.Sutherland 发表了一篇题“Sketchpad:一个人机交互通信的图形系统”的博士论文,他在论文中首次使用了计算机图形学Computer Graphics”这个术语,证明了交互计算机图形学是一个可行的、有用的研究领域,从而确定了计算机图形学作为一个崭新的科学分支的独立地位。
1973年开始,相继出现了英国剑桥大学CAD小组的Build系统、美国罗彻斯特大学的PADL-1系统等实体造型系统。
从80年代中期以来,超大规模集成电路的发展,为图形学的飞速发展奠定了物质基础。
计算机的运算能力的提高,图形处理速度的加快,使得图形学的各个研究方向得到充分发展,图形学已广泛应用于动画、科学计算可视化、CAD/CAM、影视娱乐等各个领域。
计算机图形学习题,DOC
计算机图形学部分习题答案王飞1.流水线的主要特点是每个基元可以单独处理,这样的结构不尽使性能更快,而且降低了内存需求,主要缺点是我们不能操控大多=Xs=u+w*同理可得Ys=v+h*6.可以使用扫描线的方式,每一个扫描线对应于帧缓存中的一行像素,通过交点的方式判断点是否在多边形内部。
按照一定的方向观察扫描线与多边形的交点,第一个交点是扫描线上接下来一系列在多边形内部的点的起点,第二个交点是离开多边形的起点,第三个交点又是进入的起点。
依次进行,根据点在那两个交点之间即可判断是否在多边形内。
按照一定方向移动扫描线,即可完成对所有点的判断。
(1)旋转和均匀缩放假设缩放矩阵为旋转矩阵为(绕Z轴旋转)T1=*=T2=*=T1=T2,得旋转和缩放是可交换的。
2)绕同一个轴的两个旋转以及T1=*=T2=*=以及T1=*=T2=*=T1=T2,所以两个平移操作可交换14.在三维仿射变换中有12个自由度,考虑点p,该点呗矩阵M转换为,因为我们已经有了关系=p,在该式中,p,都是未知的,因此,我们可以得到拥有12个未知数的三个等式,如果我们有四对这样的点,我们就会有12个含有这12个未知数的方程,这可以帮助我们找到矩阵M的元素。
因此,如果我们知道一个四边形是如何构成的,我们就可以得出仿射矩阵。
在二维的情况下,在矩阵M中有6个自由度,但是p和只有x和y两个变量,因此,如果我们知道变换前得三个点一级变换后对应的三个点,我们就会得6平面内部。
21. 日食是物体投影到非平面表面的好例子,任何时候,阴影被投射到曲面上,那么就产生了非平面投影。
所有的地图都是曲线投影的例子,如果投影线不弯曲,就不可能把一个弯曲的椭球型表面投影到一个矩形上。
22. u的方向等于VPN与VUP叉积所得结果的方向,然后,v的方向等于u与VPN叉积所得结果的方向23. C OP位于(0,0,d),则产生的投影相当于是COP位于(0,0,0)时产生的投影沿Z轴正方向移动了d,所以把投影变换矩阵第三行第四列的值加d即可图形。
计算机图形学大作业PPT
本软件系统概述
Autodesk Maya是美国Autodesk公司出品的世界顶级的三维
动画软件,应用对象是专业的影视广告,角色动画,电影特技等。
Maya功能完善,工作灵活,易学易用,制作效率极高,渲染真实感极强,是电影级别的高端制作软件。
Maya
售价高昂,声名显赫,是制作者梦寐以求的制作工具,掌握了Maya,会极大的提高制作效率和品质,调节出仿真的角色动画,渲染出电影一般的真实效果,向世界顶级动画师迈进。
Maya 集成了Alias、Wavefront 最先进的动画及数字效果技术。
它不仅包括一般三维和视觉效果制作的功能,而且还与最先进的建模、数字化布料模拟、毛发渲染、运动匹配技术相结合。
在目前市场上用来进行数字和三维制作的工具中,Maya 是首选解决方案。
谢谢观赏
信息技术学院
宋红林084209135陈凯炜084209134。
计算机图形学期末大作业3D建模
深圳大学实验报告课程名称:计算图形学实验名称:3D建模和真实感图形绘制学院:计算机与软件学院专业:计算机科学与技术报告人:学号:******* 班级: 1同组人:无指导教师:**实验时间:2014年11、12月实验报告提交时间:2014/12/28教务处制一.实验目的1、使用OpenGL创建和动画你自己设计的角色。
2、熟悉3D层次建模和转换。
二.实验步骤1、打开VC6.0打开工作空间modeler.dsw, 可以看到工程的所有工程都包含进来了。
找到sample.cpp并打开。
2、找到sample.cpp中的draw函数,在这个函数中绘制图形。
首先,在一对glPushMatrix()和glPopMatrix()之间用glTranslated函数确定绘制图形坐标系的原点(以下图形的绘制均用到这对函数,后面不再赘述)。
然后用三角形绘制平行四边形的地板,用setDiffuseColor函数设定不同的颜色参数。
主要代码如下:2、为模型绘制背景,即三角旋转阶梯。
同样的,用三角形绘制,使得整个画面看起来像舞台般宽敞华丽。
主要代码如下(为了方便截图,一行代码过长的地方我都做了换行截断):3、在舞台的中心设置柱子。
为了使其更加精致美观,此处用三角形拼接柱子,并且颜色设置成黄白相间,使气氛柔和淡雅。
4、柱子一般都有柱台的。
此处用长方体作为柱台,大气得体。
颜色选择淡蓝色,正好跟柱子的颜色相辉映。
主要代码如下:5、俗话说好事成双。
在同一个层次中,我再绘制了同样的柱子和柱台,使画面呈现对称美。
6、柱子是空心的,得给它加个“盖子”。
为了统一柱子的结构,此处依然用三角形拼接柱子的尖顶,尖顶作为柱子的下一个层次。
如图:主要代码如下:7、柱子上再加个球体,显得气势恢宏。
用drawSphere函数就可以了。
下面是加上两个球体后的效果:8、场景都绘制好了,下面增加人物模型。
此处先画身体,选择圆柱函数来画。
设置上下底的半径,就可以画出一条可爱的小裙子了。
计算机图形学课程实验指导书和作业
《计算机图形学》实验指导书、作业学期:2011-2012(2)班级:测绘工程10-1班姓名:汪帅学号:20100202测绘工程学院目录实验一直线段生成算法实现 (1)实验二圆生成算法的实现 (5)实验三二维图形几何变换的实现 (8)实验四直线段裁剪算法的实现 (13)实验报告1 (19)实验报告2 (26)实验报告3 (30)实验报告4 (37)实验一 直线段生成算法实现一、实验目的熟练掌握DDA 直线生成算法、中点直线生成算法、Bresenham 直线生成算法的算法思想,了解各个算法中寻找直线段上的像素点的过程。
二、实验学时 2学时三、实验类型现代实验、验证性、自立式四、实验要求1.根据指导书所给的参考代码,每人至少实现两种直线段的生成算法。
2.要求能够实现任意起始点和终止点坐标的直线段的绘制。
3.能够实现不同线型(实线、虚线、点划线)、不同线宽(单像素宽度、多像素宽度)的直线段的绘制。
五、实验原理与步骤 原理:1.数值微分法(DDA )设一直线段的起点和终点坐标分别为(xs , ys)和(xe , ye)。
则直线段在X 和Y 方向的增量分别为: △x=xe- xs ,△y= ye- ys 设△t=max(|△x|,|△y|)取时间步长为1/△t,若当前像素点坐标为(xi, yi),则下一个像素点的坐标可由以下两式确定: xi+1=xi+dx=xi+Dx/Dt yi+1=yi+dy=yi+Dy/Dt 2.中点直线生成算法:假定直线斜率0<m<1,且已确定点亮象素点P (Xi ,Yi ),则下一个与直线最接近的像素只能是P1点或P2点。
设M 为中点,Q 为交点,现需确定下一个点亮的象素。
当M 在Q 的下方-> P2离直线更近更近->取P2 。
M 在Q 的上方-> P1离直线更近更近->取P1 M 与Q 重合, P1、P2任取一点。
假设直线方程为:ax+by+c=0 其中a=y0-y1, b=x1-x0, c=x0y1-x1y0 F(x,y)=0 点在直线上面 F(x,y)>0 点在直线上方 F(x,y)<0 点在直线下方欲判断M 点是在Q 点上方还是在Q 点下方,只需把M 代入F(x,y),并检查它的符号。
计算机图形学大作业
计算机图形学大作业计算机图形学是一门融合计算机科学与绘图技术的学科,它已成为当今人工智能发展的重要组成部分。
它的研究主要是围绕具有图形表示形式的计算机屏幕图像的产生及处理以及数字图像的存储、处理等方面展开的。
计算机图形学的研究及应用得到了广泛应用,如动画制作、图像处理、科学可视化、智能识别等等,在电子游戏、电影及动画制作、合成图像等方面都发挥着重要作用。
在计算机图形学的课程学习当中,大作业是一个重要的组成部分。
大作业通常由学生们根据老师的要求,自行挑选或发挥创造力进行编写,根据不同的要求内容,学生有必要进行深入的钻研研究,完成一篇具有深度的以计算机图形学为主题的文章。
在计算机图形学大作业的内容中,首先要确定写作的主题和目标,确定文章的研究方向及内容,定义作业目标和范围。
然后,要细化研究内容,收集资料,分析学术论文和权威文献,如计算机图形学的发展历史、计算机图形学的基础原理、研究方法、应用领域以及未来的发展趋势等。
确定文章的写作形式,如报告、白皮书、论文和演讲等,根据不同的写作形式配置不同的内容结构。
此外,还要将获取的资料进行整理编写,正确组织语言、架构有条理的框架,撰写详尽、有力的文章,将所研究的内容详细梳理,归纳出层次清晰、概念明确、理论严谨的文章,力求说服力及深度。
同时,在完成写作内容后,要加强文章的质量控制,及时修订文章,添加精彩的细节,提高文章的质量,最终形成一篇条理清晰、内容丰富、表达流畅的计算机图形学大作业文章。
总之,完成一篇计算机图形学为主题的大作业文章,要求学生有深入的了解和研究,掌握计算机图形学的原理、范畴和实践,以深刻理解计算机图形学的基本原理和应用,通过完成一篇系统的计算机图形学大作业,扩展学生的学习深度,对计算机图形学的学习有更深的理解和把握。
计算机图形学试卷及答案
《计算机图形学》试卷及答案(总8页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--一、填空题(每空分,共 1 0 分) 1、计算机图形学中的图形是指由点、线、面、体等 和明暗、灰度(亮度)、色彩等 构成的,从现实世界中抽象出来的带有灰度、色彩及形状的图或形。
2、一个计算机图形系统至少应具有 、 、输入、输出、 等基本功能。
3、 常用的字符描述方法有:点阵式、 和 。
4、 字符串剪裁的策略包括 、 和笔划/像素精确度 。
5、 所谓齐次坐标就是用 维向量表示一个n 维向量。
6、 投影变换的要素有:投影对象、 、 、投影线和投影。
7、输入设备在逻辑上分成定位设备、描画设备、定值设备、 、拾取设备和 。
8、人机交互是指用户与计算机系统之间的通信,它是人与计算机之间各种符号和动作的 。
9、按照光的方向不同,光源分类为: , , 。
10、从视觉的角度看,颜色包含3个要素:即 、 和亮度。
二、单项选择题(每题 2分,共 30分。
请将正确答案的序号填在题后的括号内)1、在CRT 显示器系统中,( )是控制电子束在屏幕上的运动轨迹。
A. 阴极B. 加速系统C. 聚焦系统D. 偏转系统2、分辨率为1024×1024的显示器需要多少字节位平面数为16的帧缓存?( )A. 512KBB. 1MBC. 2MBD. 3MB 3、计算机图形显示器一般使用什么颜色模型?( )A. RGBB. CMYC. HSVD. HLS4、下面哪个不属于图形输入设备?( ) A. 键盘 B. 绘图仪 C. 光笔 D. 数据手套5、多边形填充算法中,错误的描述是( )。
A. 扫描线算法对每个象素只访问一次,主要缺点是对各种表的维持和排序的耗费较大 B. 边填充算法基本思想是对于每一条扫描线与多边形的交点,将其右方象素取补C. 边填充算法较适合于帧缓冲存储器的图形系统D. 边标志算法也不能解决象素被重复访问的缺点6、 在扫描线填色算法中,扫描线与顶点相交时,对于交点的取舍问题,下述说法正确的是( )。
图形学大作业范例
滁州学院图形学设计报告课程名称:计算机机图形学设计题目:简单图形绘制软件的设计与实现系别:计算机科学与技术系专业:姓名:起止日期:2011年5月20日~ 2011年6月20日指导教师:计算机科学与技术系二00九年制目录⒈引言 (1)⒉需求分析 (1)⒊概要设计 (1)3.1概要设计实现的内容 (1)3.2函数的功能描述 (1)⒋详细设计 (2)⒌调试与操作说明 (4)⒍课程设计总结与体会 (6)⒎致谢 (6)⒏参考文献 (6)⒐附录 (7)课程设计的主要内容⒈引言本学期系统的学习了计算机图形学,在学期末按课程要求对其进行设计,本课程主要内容包括以图形学算法为目标,深入研究。
续而策划设计实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面做出评价和改进意见。
通过完成一个完整程序,经历策划、设计、开发、总结。
达到通过本课程设计,使自己巩固和实践计算机图形学课程中的理论和算法;掌握基本图形显示程序设计方法,及二维和三维图形变换等程序设计方法,学习表现计算机图形学算法的技巧。
同时以达到培养认真学习积极探索的精神。
⒉需求分析图形学设计报告题目:地球与卫星模拟图。
图形学设计报告任务及要求:以计算机图形学的研究内容、发展与应用,实现图形输入输出设备,图形显示原理,图形软件标准,基本图形生成算法,图形几何变换与裁剪,自由曲线和曲面,三维实体造型,光照模型,颜色模型,光线跟踪,纹理模拟,常用的计算机动画技术和软件等。
课程设计思想:绘制一个地图与卫星模拟图,在此中综合实现本学期中学习到OpenGL编程中大部分的方法与操作。
软硬件运行环境:Microsoft Windows XP。
工发工具:VC++ 6.0。
⒊概要设计3.1概要设计实现的内容利用VC++ 6.0完成了一个地图与卫星模拟图,该模拟图能实现基本的图形操作功能。
通过本次实验,应该了解图形学里使用OpenGL的一些基于操作,了解直线、矩形、圆和Bezier曲线和曲面等图形的绘制原理、旋转原理、移动原理和缩放原理等。
[VIP专享]计算机图形学的应用实例(计算机图形作业)
计算机图形学大作业计算机图形学的应用实例班级:学号:姓名:2012-03-12计算机图形学的应用实例一.计算机图像学简介计算机图形学是计算机专业本科生必修的专业基础课。
本课程介绍图形显示及图形表示的方法和原理。
通过本课程的学习,使学生了解计算机在图形应用方面的基础原理,了解图形应用中的特殊性处理方法,进而学习和掌握计算机在图形领域应用中分析、建模、程序设计等方面知识,为问题的解决提供适宜的模型和办法。
简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。
图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。
其主要的目的是要利用计算机产生令人赏心悦目的真实感图形。
为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。
事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。
计算机图形学的研究内容非常广泛,如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。
整个课程以C语言为例,通过介绍30多个算法和程序设计的例子,阐述计算机图形学的原理、方法和程序设计知识。
下面我们将实例分析计算机图形学中出现的一系列的理论在实际图形中的应用。
二.多边形的扫面转换与区域填充1.种子填充算法这里讨论的区域指已经表示成点阵形式的填充图形,它是象素的集合。
区域可采用内点表示和边界表示两种表示形式。
在内点表示中,区域内的所有象素着同一颜色。
在边界表示中,区域的边界点着同一颜色。
区域填充指先将区域的一点赋予指定的颜色,然后将该颜色扩展到整个区域的过程。
区域填充算法要求区域是连通的,因为只有在连通区域中,才可能将种子点的颜色扩展到区域内的其它点。
2023年计算机图形学大作业
程序大作业选题内容用VC++或者OpenGL上机编程实现如下算法,选择OpenGL编程者可以将文献综述报告选为对OpenGL图形标准和相关库函数的介绍。
程序设计报告规定用A4纸打印,规定报告规定有以下内容:1设计目的和规定2算法原理介绍3程序源代码4程序运营结果抓图5参考文献6 学习体会1.NURBS曲线的生成与显示。
规定可以演示出w权因子的变化对曲线形状的影响,以及控制顶点的变化对曲线形状的影响,有良好的程序界面,交互式地控制w因子的变化和控制顶点的变化,以示可以通过控制点和权因子来灵活地改变形状。
2.参数多项式曲面的生成与显示涉及双线性曲面、单线性曲面、双三次参数曲面片、孔斯(Coons)曲面。
3.双三次Bezier曲面的生成与显示规定用不同颜色显示双三次Bezier曲面和曲面的控制网格,并且可以取消曲面控制网格的显示,允许交互式地改变控制网格的顶点位置,以观看Bezier曲面性状的改变。
4.双三次B样条曲面的生成与显示规定用不同颜色显示双三次B样条曲面和曲面的控制网格,并且可以取消曲面控制网格的显示,允许交互式地改变控制网格的顶点位置,以观看B样条曲面性状的改变。
5.扫描曲面的生成与显示通过任意指定被运动的基体、以及基体运动的途径,显示生成的扫描曲面。
6.生成并显示Julia集和Madelbrot集的逐级放大图。
如下图所示:7.实现分形图像压缩算法。
规定可以实现图像的打开、显示和保存功能,并同时显示压缩前和压缩后的图像。
8.用随机插值模型生成并显示山的模型9.绘制Sierpinski金字塔(需要考虑多边形绘制的顺序,并使用消隐算法,才干显示对的的结果)10.绘制Sierpinski海绵(需要考虑多边形绘制的顺序,并使用消隐算法,才干显示对的的结果)11.用粒子系统模拟自然景物,例如跳动的火焰、烟雾、下雨、行云、随风摇曳的草丛等(任选其一)。
12.任意选择一种消隐算法,实现曲面物体的消隐(例如一个圆环中间放置一个球)。
计算机图形学习题参考答案(完整版)
9、使用中点圆算法,绘制圆心为 (0, 0) ,半径 r 10 的圆在第一象限中的部分。 解:
k (x k, yk) (x k ', yk ') pk 0 (0,10) (10, 0) 1r 9 1 (1,10) (10,1) p0 2x 116 2 (2,10) (10, 2) p12x 2 11 3 (3,10) (10, 3) p2 2x 3 2x 4 12y 4 3 5 (5, 9) (9, 5) p4 2x 5 18 6 (6, 8) (8, 6) p5 2x 6 12y6 5 7 (7, 7)
1
度,可以沿着三个方向移动,也可以沿着三个方位旋转,同时还可以建立与其他三维空间的超链接。 因此 VRML 是超空间的。 7、图形的构成要素有哪些? 解: ① 刻画形状的点、线、面、体等几何要素; ② 反映物体表面属性和材质的灰度、颜色等非几何要素。 8、计算机图形学的最高奖以谁的名字命名,获得第一届和第二届该奖的分别是谁? 解: 计算机图形学的最高奖是以 Coons 的名字命名的, 获得第一届和第二届 Coons 奖的是 Ivan Sutherland 和 Pierre Bézier。
2
11、已知: A(0, 0) 、 B(1, 1) 、 C(2, 0) 、 D(1, 2) ,请判断多边形 ABCD 是否是凹多边形。 解: 多 边 形 的 边 向 量 为 AB (1,1, 0) , BC (1, 1, 0) , CD (1, 2, 0) , DA(1, 2, 0) 。 因 为
第 2 章 基本图元的显示
1、假设 RGB 光栅系统的设计采用 810 英寸的屏幕,每个方向的分辨率为每英寸 100 个像素。如果 每个像素 6 位,存放在帧缓冲器中,则帧缓冲器需要多大存储容量(字节数)? 解: 8100101006/8600000 (字节) 。 2、假设计算机字长为 32 位,传输速率为 1 MIP(每秒百万条指令) 。300 DPI(每英寸点数)的激光打 印机,页面大小为 8.511 英寸,要填满帧缓冲器需要多长时间。 解:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机图形学大作业——程序设计用简单光照模型显示一系列小球在不同参数情况下的镜面反射效果学号:08009223 姓名:贺国睿专业:自动化日期:2012.5.261 设计目标和要求•用简单光照模型显示一系列小球在不同参数情况下的镜面反射效果;2 算法原理介绍2.1光源分析在现实生活中的物体,要有光照存在才可以被看到。
物体通过自身发光以及反射光进入人眼,物体才能在人眼中成像。
如果没有任何的光,人眼将观察不到任何东西,一片漆黑。
在光照中首先是光源,要有光源才能产生光线,才有以后的一系列反射、折射、散射等效果。
不同的物体的表面物理属性不同,所以相同的光线照射到不同表面属性的物体表面会产生不同的效果,发生漫反射,镜面反射的比例各不相同,有的属于半透明的物体还有折射效果。
这些不同的物体表面物理属性属于材质的范畴。
除了材质以外,物体表面还有各种图案效果,这就是纹理。
光线在空中穿行的时候,还会有更多复杂的效果。
在现实中,光源的类型很多,而且有的光源不能简单的用一种模型来描述,而是具有多种不同类型光源特点。
几种基本的光源类型是:点光源、无穷远光源、方向光源和环境光。
点光源:光线从光源点向四面八方发散,发光的恒星(如太阳)、发光的灯泡一般使用该光源模型模拟,是最简单的光源。
无穷远光源:所有的光线都平行的从一个方向过来,当发光体(如太阳)离渲染的场景很远可以认为是无穷远时,一般使用该光源模型进行模拟。
方向光源:光线沿着一个方向在特定角度范围内逐渐发散开。
现实世界中的车灯,手电筒一般使用该光源模型进行模拟。
环境光源:光线从各个地方以各个角度投射到场景中所有物体表面,找不到光源的确切位置。
现实世界中不存在这样的光源,一般使用该光源模型来模拟点光源、无穷远光源、方向光源在物体表面经过许多次反射后的情况,环境光源照亮所有物体的所有面。
这四种基本的光源模型,只能近似的描述光源,不可能做到非常逼真。
在现实中,一束光线照射到物体表面发生反射后,再照射到另外的物体的表面,如此循环反复这才是环境光的真正情况。
这个过程是个无限次反射的过程,计算机无法处理无限的问题,所以采取了简单的近似处理。
而且环境光源在反射过程中,上一次反射所带的颜色会影响下次反射所照物体的颜色,并且无限的重复。
光线追踪算法是一种好得多的近似描述,但也仅仅是近似描述,只是近似效果比用环境光源模型要好。
OpenGL还提供了让物体自发光让自己可以被看见的方式。
这就是物体自发光。
物体自发光对于光源十分的重要,比如电灯泡可以看作是一个点光源,我们把点光源的位置设置到灯泡的中央,这样灯泡周围的物体将被照亮,但是灯泡的外表面由于相对光源来说是背面,将不能被照亮。
这与实际情况不符合,灯泡照亮其它物体,而自身却不亮,所以需要通过物体自发光让灯泡的外表面也发亮。
光源的一般属性包括:镜面反射光线颜色、漫反射光颜色、环境光线颜色、光源位置。
镜面反射光颜色:在物体表面将发生镜面反射的光线的颜色。
漫反射光颜色:在物体表面将发生漫反射的光线的颜色。
环境光线颜色:照亮所有物体所有表面的光线的颜色。
光源位置就是光源在场景中所在的位置。
光线的衰减:光源发出的光线的强度会随着传播距离越来越大而变弱(无穷远光源除外)。
光线强度会乘以一个衰减因子。
衰减因子=1/(K1 + K2 * d + k3 *d^2) 其中d为光源距离(无穷远光源的衰减因子为1)方向光源发出的光线会随着偏移中心方向的角度增大而减弱。
2.2 光照中的材质材质是光照效果中的重要属性。
材质描述了物体表面的光学物理属性,决定了光线在该表面光线反射的具体情况。
材质决定了物体的表面特性,决定了光线在物体表面反射的情况。
物体表面的反射分为漫反射和镜面反射。
物体反射各种类型光源的情况都可以分为:漫反射和镜面反射两种。
漫反射:光线射到物体表面以后,反射光线的方向是任意方向的。
漫反射镜面反射:光线射到物体表面以后,反射光线根据照射表面位置的法线方向,发生方向唯一确定的镜面反射。
镜面反射在OpenGL中漫反射部分的光线与镜面反射部分的光线是分开计算的,然后将分开计算的效果进行叠加。
材质的属性包括:镜面反射颜色、漫反射颜色、环境光颜色、光洁度、自发光颜色。
镜面反射颜色、漫反射色、环境光颜色:分别与光源的镜面反射光颜色、光源的漫反射颜色、光源的环境光颜色共同决定物体表面的镜面反射颜色、漫反射颜色、环境光颜色。
3种类型的结果分别计算,然后叠加共同确定反射表面像素值的颜色。
漫反射项:max{L*n,0}×DIFFUSE_light×DIFFUSE_material环境光项:AMBIENT_light×AMBIENT_material在OpenGL中可以使用下面的代码来设置材质属性:GLfloatplanet_ambient[] = { 0.01 , 0.01 , 0.01 , 1.0 };GLfloatplanet_diffuse[] = { 0.7 , 0.7 , 0.7 , 1.0 };glMaterialfv(GL_FRONT , GL_AMBIENT ,planet_ambient);glMaterialfv(GL_FRONT , GL_DIFFUSE ,planet_diffuse);2.3 函数解析//开启光照渲染glEnable(GL_LIGHTING);//设置光源属性GLfloatlight_ambient[] = { 1.0 , 1.0 , 1.0 , 0.0 };GLfloatlight_diffuse[] = { 1.0 , 1.0 , 1.0 , 1.0 };//指定光源的位置GLfloat light _position[] = { 0.0 , 0.0 , 1.0 , 1.0 };//用定义好的光源属性给指定光源GL_LIGHT0进行设置glLightfv(GL_LIGHT0 , GL_AMBIENT , light_ambient);glLightfv(GL_LIGHT0 , GL_DIFFUSE , light_diffuse);glLightfv(GL_LIGHT0 , GL_POSITION , light_position);//开启设置的光源GL_LIGHT0glEnable(GL_LIGHT0);在设置光源的位置的时候需要注意Z轴的正方向是垂直于屏幕向外,当设置Z的值为负值的时候,光源的位置位于屏幕内部;设置Z为正值的时候,光源的位置位于屏幕的外部。
如上面的代码设置的位置是屏幕正中央,垂直于屏幕表面外面1个单位的位置。
我们如果要打开全局光照,也就是在没有指定光源的时候,让场景中的物体也可以被照亮,可以使用下面的代码。
//全局光照系数GLfloatglobel_ambient[] = { 0.0 , 0.0 , 0.0 , 1.0 };//打开全局光照glLightModelfv(GL_LIGHT_MODEL_AMBIENT , globel_ambient);3 程序源代码// heguorui_08009223.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include <gl/glut.h>GLfloatlight_ambient[] = {0.0f, 0.0f, 0.0f, 1.0f};//留在环境中的光照GLfloatlight_diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};GLfloatlight_specular[] = {1.0f, 1.0f, 1.0f, 1.0f};GLfloatlight_position[] = {0.0f,-10.0f, 0.0f, 0.0f};//光照位置floatlight_z = 0.0f;floatlight_y = -10.0f;voidinit(void){glClearColor(0.5,0.25,0.25,0.0);glEnable(GL_DEPTH_TEST);glShadeModel(GL_SMOOTH);glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);glLightfv(GL_LIGHT0, GL_POSITION, light_position);glEnable(GL_LIGHT0);glEnable(GL_LIGHTING);}voidmyDisplay(void){if(light_z<10) {light_z+=0.01;} else {light_z-=0.01;}light_y += 0.01;light_position[2] = light_z;light_position[1] = light_y;glLightfv(GL_LIGHT0, GL_POSITION, light_position);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/*glPushMatrix();glTranslatef(-3.75,3.0,0.0);glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat);//表示各种光线照射到该材质上,经过很多次反射后最终遗留在环境中的光线强度(颜色)glMaterialfv(GL_FRONT, GL_DIFFUSE, earth_mat_diffuse);//表示光线照射到该材质上,经过漫反射后形成的光线强度(颜色)glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat);//表示光线照射到该材质上,经过镜面反射后形成的光线强度(颜色)。
通常,GL_AMBIENT和GL_DIFFUSE都取相同的值,可以达到比较真实的效果glMaterialfv(GL_FRONT, GL_SHININESS, no_shiniess);//该属性只有一个值,称为“镜面指数”,取值范围是0到128glMaterialfv (GL_FRONT, GL_EMISSION, no_mat);//该属性由四个值组成,表示一种颜色。
OpenGL认为该材质本身就微微的向外发射光线glutSolidSphere(1.0, 64, 64);glPopMatrix();*/GLfloatno_mat[]={0.0,0.0,0.0,1.0};GLfloatmat_ambient[]={0.7,0.7,0.7,1.0};GLfloatmat_ambient_color[]={0.8,0.8,0.2,1.0};GLfloatmat_diffuse[]={0.1,0.5,0.8,1.0};GLfloatmat_specular[]={1.0,1.0,1.0,1.0};GLfloatno_shininess[]={0.0};GLfloatlow_shininess[]={5.0};GLfloathigh_shininess[]={100.0};GLfloatmat_emission[]={0.3,0.2,0.2,0.0};glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//第一行第一列绘制的球仅有漫反射光而无环境光和镜面光glPushMatrix();glTranslatef(-3.75,3.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第一行第二列绘制的球有漫反射光和镜面光并有低高光,而无环境光glPushMatrix();glTranslatef(-1.25,3.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第一行第三列绘制的球有漫反射光和镜面光,并有很亮的高光,而无环境光glPushMatrix();glTranslatef(1.25,3.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第一行第四列绘制的球有漫反射光和辐射光,而无环境和镜面反射光glPushMatrix();glTranslatef(3.75,3.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第二行第一列绘制的球有漫反射光和环境光,而无镜面反射光glPushMatrix();glTranslatef(-3.75,0.0,0.0);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第二行第二列绘制的球有漫反射光,环境光和镜面光,且有低高光glPushMatrix();glTranslatef(-1.25,0.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第二行第三列绘制的球有漫射光,环境光和镜面光,且有很亮的高光glPushMatrix();glTranslatef(1.25,0.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第二行第四列绘制的球有漫反射光,环境光和辐射光,而无镜面光glPushMatrix();glTranslatef(3.75,0.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第三行第一列绘制的球有漫反射光和有颜色的环境光,而无镜面光glPushMatrix();glTranslatef(-3.75,-3.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第三行第二列绘制的球有漫反射光和有颜色的环境光以及镜面光,且有低高光glPushMatrix();glTranslatef(-1.25,-3.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第三行第三列绘制的球有漫反射光和有颜色的环境光以及镜面光,且有很亮的高光glPushMatrix();glTranslatef(1.25,-3.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0, 64, 64);glPopMatrix();//第三行第四列绘制的球有漫反射光和有颜色的环境光以及辐射光,而无镜面光glPushMatrix();glTranslatef(3.75,-3.0,0.0);glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);glutSolidSphere(1.0, 64, 64);glPopMatrix();glFlush();glFlush();}voidTimerFunc(int value){glutPostRedisplay();glutTimerFunc(value, TimerFunc, 1);}voidmyReshape(int w, int h){glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if(w <= (h*2))glOrtho(-6.0 , 6.0, -3.0*((GLfloat)h*2)/(GLfloat)w, 3.0*((GLfloat)h*2)/(GLfloat)w, -10.0 , 10.0);elseglOrtho(-6.0*(GLfloat)w/((GLfloat)h*2), 6.0*(GLfloat)w/((GLfloat)h*2), -3.0,-3.0,-10.0 , 10.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}void main(intargc, char* argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH);glutInitWindowPosition(0, 0);glutInitWindowSize(1000, 700);glutCreateWindow("简单光照模型显示一系列小球在不同参数情况下的镜面反射效果08009223 贺国睿");init();glutReshapeFunc(myReshape);glutDisplayFunc(&myDisplay);glutTimerFunc(250, TimerFunc, 1);glutMainLoop();}4 程序运行结果抓图第一行第一列绘制的球仅有漫反射光而无环境光和镜面光第一行第二列绘制的球有漫反射光和镜面光并有低高光,而无环境光第一行第三列绘制的球有漫反射光和镜面光,并有很亮的高光,而无环境光第一行第四列绘制的球有漫反射光和辐射光,而无环境和镜面反射光第二行第一列绘制的球有漫反射光和环境光,而无镜面反射光第二行第二列绘制的球有漫反射光,环境光和镜面光,且有低高光第二行第三列绘制的球有漫射光,环境光和镜面光,且有很亮的高光第二行第四列绘制的球有漫反射光,环境光和辐射光,而无镜面光第三行第一列绘制的球有漫反射光和有颜色的环境光,而无镜面光第三行第二列绘制的球有漫反射光和有颜色的环境光以及镜面光,且有低高光第三行第三列绘制的球有漫反射光和有颜色的环境光以及镜面光,且有很亮的高光第三行第四列绘制的球有漫反射光和有颜色的环境光以及辐射光,而无镜面光移动光源下的效果图,光源从最下方移动到最上方(定时,循环上移光源即可)5 参考文献[1] 《OpenGL编程指南》,Dave Shreiner,出版社:机械工业出版社[2] /fcl06/item/ac66f033a240a884c2cf299d , OpenGL的光照详解6 学习体会计算机图形学是一门很博大的学问。