计算机图形学课程教学思考
2011-12-31王艳春张金政李绍静
计算机教育 2011年14期
摘要:为有效提高计算机图形学的教学质量,本文在分析教学过程中存在的主要问题基础上,结合计算机图形学的学科性质、特点及学生的实际情况,从教学内容、理论教学和实践教学等环节探讨了该课程的教学思路和方法,以期为计算机图形学的教学工作者提供一定的参考。
关键词:计算机图形学;教学方法;上机实践
计算机图形学是伴随着计算机及其他外围设备的发展而产生的,是一门研究怎样利用计算机表示、生成、处理和显示图形的原理、算法、方法和技术的学科[1-2]。目前,计算机图形学已经成为计算机学科中发展最活跃、应用最广泛的分支之一,成为许多计算机从业人员的必备素质之一,也是计算机及相关专业本科生的一门专业选修课。该课程在我校已经开设了多年,其教学任务是本着理论与实践相结合的原则,以基本概念、算法原理和实践技术为主线,使学生掌握计算机图形生成与处理技术的基础知识、基本原理和方法,培养学生的实际动手能力。然而,历年的教学工作中发现,由于该课程学科内容丰富、理论难度大、实践性强,且作为专业限选课学时又有限,导致了学生对所学内容不易掌握,疲于应付,甚至产生学生厌学、教学低效等现象。
因此,如何提高学生的学习兴趣,增加课堂信息量,解决课时少与内容多的矛盾、理论与实践的矛盾,是计算机图形学教学工作中一个非常值得思考的问题。本文面向计算机科学与技术专业,在分析计算机图形学教学中存在问题的基础上,针对该课程的学科特点和学生的特点,根据笔者近年来在教学实践中的亲身体会,探讨一种新的教学思路和方法。
1计算机图形学的学科特点
计算机图形学是一门理论和实践兼顾、综合性很强的交叉学科,涉及内容和应用领域都很广泛。它涵盖了计算机科学、数学、物理学等其他相关学科的知识,学科交叉繁杂,且整个学科的发展日新月异。同时,该课程对高等数学、线性代数等基础数学有较高的要求,以数据结构、计算机高级语言、图形基本原理等为先导课程。因此,要将这样一门课的内容保质保量地传授给学生,不是一件容易的事,需要积极探讨新的教学方法和教学思路。
2教学中存在的问题
在教学实践中,笔者发现该课程的教学问题主要体现在以下几个方面:
1) 理论基础要求高,教学效果差。计算机图形学理论性强,部分算法抽象且以数学为依托,教学过程中过分强调课程的数学基础,侧重于算法原理的推导,而多数学生数学功底薄弱,故在学习过程中表现出畏难情绪;同时,其先修课程都是在低年级开设的,容易遗忘,而在计算机图形学的课堂上又不可能花太多的时间进行先修课程的复习,从而使其成为部分学生难以逾越的障碍。
2) 教学内容多,知识点分散。计算机图形学涉及的方法原理很多,教学内容易面面俱到,导致学生只掌握了分散的知识点,没有形成一条完整的知识链,学生对所学知识无所适从,失去学习的目标,极大影响了学生的学习热情;同时,教学内容只局限于经典的算法原理,面向学科前沿动态的内容涉及较少,不利于开阔学生视野,激发他们自主学习的意识和兴趣。
3) 实验课比例较小且实践环节滞后。计算机图形学也是一门实践性很强的学科[3-4],上机实践是培养学生动手能力的主要手段,也是学好这门课的必要手段。但是,由于总课时的压缩,实验课时很少,仅提供8学时,使原本很重要的实践活动变成了搭配;上机实习平台采用的是目前已不作为主要开发工具的Turbo C,致使学生不能在实验中获得将来就业环境下需要掌握的编程知识,上机兴趣不高,同时大部分学生本身的编程能力也不强,最终导致学生丧失编程的兴趣和能力。
4) 学生积极性不高。计算机图形学开设在大三上学期,大部分同学把精力用在考研和考公务员等方面,而这门课不是考研的必考课,学分也不高,因此,大多数同学认为图形学不重要,学习的积极性不高,整个学习过程都很被动。
3教学思路探讨
计算机图形学的教学目标之一,就是通过本课程的学习,使学生对计算机图形学有一个全面、感性的认识,理解并掌握部分经典算法,了解当前的研究热点。根据这一实际要求,提出了计算机图形学课程的总体教学思路。在教学中,以基本理论和算法原理为主线,以Turbo C、OpenGL等软件为载体,对图形学内容进行整体优化,加以创新处理,采用多种教学方式,加强理论与实践的结合,通过正确引导,激发学生的兴趣,挖掘学生的潜能,最终培养学生的逻辑思维能力和实际动手能力。以下笔者将根据自身的教学实践来阐述该课程教学过程中的认识和做法。
3.1上好绪论课,激发学生的学习兴趣
教学过程中调查发现,大多数学生对计算机图形学采取的是一种敬而远之的态度。首先,他们通过计算机图形学在娱乐、广告等领域的广泛应用充分感受到该课程的生动有趣及实用性,对该课程饱含热情;而与此同时,在他们的印象中,计算机图形学涉及学科很多,尤其数学公式很多,很多内容难以理解和掌握,故他们又对学好这门课充满怀疑。也正是这种期望与现实的失衡成为打击学生学习热情的“元凶”。因此,我们应该重视绪论课,并以此作为突破口,通过查阅大量资料,结合目前图形学的发展动向,根据所讲授内容,充分利用多种教学手段,将图形学知识融汇贯通起来,让学生在不知不觉中了解并接受计算机图形学,解除他们的疑惑,鼓舞他们的热情。如在介绍图形学在虚拟现实的应用时,可以插入一段视频,模拟人在虚拟场景中漫步,不但可以讲明具体应用,而且学生易于接受,印象深刻。
3.2教学内容
计算机图形学内容深而广,知识更新快,教学工作者需要在有限的学时内,即兼顾基础知识又能反映计算机图形学的研究进展,因此,教学过程中,在教学内容上要注意以下几点:
1) 根据学生的接受程度,精选核心内容,压缩或屏蔽部分知识,使学生专注于必要知识的学习,从而提高教学效率和教学质量。我们的教学内容主要包括:图形变换、光栅图形学、几何造型、图形裁剪及真实感图形绘制。其中,前两部分相比较而言,是基础,内容较简单,讲解要深入一些,保证该部分理论具有“点”的深度,如几何变换,包括;平移、旋转、缩放等变换,以及几何变换的矩阵表示形式和复合变换的多矩阵组合形式,此外还要说明齐次坐标引入的必要性;几何造型中,尤其是曲线曲面造型部分,要根据学生的实际情况来决定内容的深浅。对于曲面,难度较大,理解起来比较困难,不适合本科生的学习,故其生成算法完全被屏蔽;而曲线的生成算法虽较曲面易理解,但也不能过于深入,这里只重点介绍B样条曲线和贝塞尔曲线的生成技术和特点,并且讲解过程中,结合现实生活的例子,引入具体应用,如在汽车、飞机外形设计中的应用;裁减计算,也是计算机图形学的核心,这里重点讲解直线段的裁剪算法和多边形裁剪算法;对于真实感图形绘制部分,由于涉及的知识面广,理论深,同样不适合本科生的学习,故这一部分内容只介绍一些基本概念。总之,上述的内容涉及许多概念和算法,要求学生把重点放在基本概念和算法的思想上,不强调学生去掌握和实现算法的具体细节,但要求掌握几个经典的算法。
2) 注重基础,强调基本原理和基本概念的理解,同时还要突出重点、重视应用。对一些要求学生掌握的经典算法,如Bresenhan算法,扫描线填充算法等,要重点讲授,仔细分析,强调其基本原理和基本思想,并在学生理解掌握的基础上,结合具体实例的剖析,告诉学生理论和实际应用的切入点,给予学生理论结合实际的基点,激发学生兴趣,逐步培养他们的科研能力。
3) 制定教学内容时还应跟上时代步伐,介绍一些最新的学科前沿和研究进展,一方面增加理论教学的趣味性,另一方面使学生对学科前沿有一个概念性的直观理解,增加学习兴趣,拓宽他们的知识面,从而为学生从事该领域的应用开发或研究工作打下良好基础。
3.3理论教学
计算机图形学的教学应采取课堂讲授为主、上机实验为辅、以学生为主体、教师为主导的教学模式。为达到教学效果,理论教学应从以下几方面加强:
1) 加强可视化教学。
计算机图形学的很多算法理论性很强,数学模型也比较抽象,单纯采用文字叙述附以静态图片的PPT形式的教学手段,教学效果并不理想,尤其是对于一些经典或复杂的算法,效果更差。因此,应充分利用目前流行的课件制作工具,如Flash、OpenGL等,制作经典算法的仿真演示,使晦涩难懂的原理公式变成栩栩如生的画面。笔者在讲授经典算法时,将其原理用Flash做成动画插入到PPT中,使学生可以直观感受到算法的效果,提高了课堂气氛,增加了学生的学习兴趣。
2) 注重启发式教学。
平铺直叙、满堂灌的教学方法只会让学生感到枯燥、乏味,从而影响他们的学习积极性和主动性。尤其在讲授以数学知识为支撑的算法时,切忌繁琐复杂的公式推导和连篇累牍的算法分析,避免学生的烦躁情绪,而应采用启发式教学方法,通过“提出问题→同学解答问题→分析问题→解决问题→分析解决方法的优缺点”的思路,引导学生思考,层层深入、逐步展开,充分调动学生的学习积极性。例如在讲解多边形裁剪时,首先启发学生多边形是由线段组成的,是否可以将线段裁剪方法用于多边形裁剪?学生点点头,然后接着问,那么是否适用呢?学生进入了思考的状态,这时借助课件给出采用线段裁剪算法对多边形进行裁剪得到的裁剪结果,并给出一个否定的答案,继续提问为什么会不适用?引导学生进一步思考,然后进行分析,给出不适用的原因,在线段裁剪算法中,是把一条线段的两个端点孤立地加以考虑,而多边形是由一些有序的线段组成,要求裁剪后的多边形仍保持原多边形各边的连接顺序。既然这个算法不适用,就应该寻找一种有效的裁剪算法,接着引入多边形的逐边裁剪算法。介绍完逐边裁剪算法后,继续启发学生思考,这种算法是否适用于所有的多边形?学生会给出肯定的回答,这时进一步启发,如果是凹多边形,逐边裁减算法是否适用,如果不适用,如何改进?这可能是学生没有预料到的,他们会对接下来的内容表现出浓厚的学习兴趣,进一步分析,当多边形为凹多边形,且裁剪后的多边形有两个或多个分离部分的时候,由于只有一个输出顶点表,表中最后一个顶点总是连着第一个顶点,会出现多余连线的现象,这就是下一步需要改进的地方,而边界裁剪算法则可以避免这一问题。再如,在讲解直线段的绘制时,首先让学生自己设计一个算法,这时几乎全部的学生都会给出直线段生成的普通算法,即根据直线方程,通过设置x取值范围,求出屏幕的一系列点,然后提问学生,从算法效率角度来看,普通算法存在怎样的问题,引导学生思考,最后引入直线段的绘制算法。因此,启发式教学方法可以给学生主动思维和积极思维的空间,将学生一步步带入算法设计中,有效提高教学质量。
3) 做好课前回顾。
以目前课程开设时间和学生的实际情况,要求学生课后复习课前预习似乎是强人所难。为了加强知识的连贯性,巩固所学知识,应该在课前拿出较短时间对上堂课的学习内容进行简单回顾,然后过渡到新的教学内容。
3.4实践教学
实践教学是理论教学的深化和补充,是学好计算机图形学的重要保证,也是培养学生动手能力的有力武器。因此,教学过程中要加强实践教学,将理论教学和实践教学密切结合起来。
1) 实验题目层次化。
根据大纲要求,结合学生的实际情况,将实践教学由浅到深分层次进行。我们共有8个学时的实验,按照由浅到深的原则安排了4个小实验:直线生成、图形变换、裁剪计算、曲线生成,以及1个综合性实验。对于验证型实验,即那些有代表性的算法,如直线生成、裁剪计算等,要求每个学生根据教材的子程序亲自动手实现,加强对课堂所学基本算法的理解,培养他们的成就感,并且,题目的要求也随着难易程度发生变化,如直线生成算法比较简单,要求学生实现的算法必须具有通用性,同时,为增加学生的学习兴趣,可以巧妙设计实验内容,如在实现直线生成算法时,可以让学生画线生成汉字;图形变换主要让学生实现二维图形的变换,包括平移、旋转、缩放及复合变换等内容,由于这一实验包含多个操作,要求学生增加菜单选择功能;裁剪计算要求实现线段裁剪算法,从易操作的角度出发,要求算法采用交互式的画线方法;曲线生成算法要求学生采用根据参数曲线定义的方法来实现,对于编程能力强的同学,在曲线生成的基础上,增加鼠标拖动控制点改变曲线形状的要求。对于综合型实验项目,学生可根据自身学习能力和实践能力选择独立完成或合作完成,通过综合型实践训练,不但培养了学生的动手能力和创新意识,而且还培养了他们的团队协作精神。
2) 开发环境多元化。
完善教学内容,扩展学生的知识面,实践教学采用开发环境的联合。对于验证性实验,学生可在Turbo C环境中实现,而对于综合性实验,鼓励学生基于OpenGL进行编程。让学生提前介入到使用OpenGL编写“应用软件”,不但可以满足学生的兴趣,还可以提高学生的实际动手能力。
4结语
计算机图形学是一门不断发展的交叉学科,其教学方法需要在实践中不断探索。我们教学工作者在研究高效率的教学手段和教学方法的同时,还应积极参与教学内容相关的科研工作,从而更加明确教学重点和难点,做到在教学过程中有的放矢,激发学生学习和思考的积极性和主动性。
参考文献:
[1] 何援军. 计算机图形学[M]. 2版. 北京:机械工业