马燕,张玉萍,李顺宝,李鲁群,张波
摘要:由于计算机图形学课程算法抽象,学生掌握知识困难,教学效果不理想,文章从理论与实验教学两方面分析了如何融合学科内外知识,提出在理论教学过程中,构建“树型”知识结构,将学科内外知识加以贯穿与融合。本文提出在实验教学中,按实验目的、要求和难度,将其分为基础、综合和拓展三类实验,通过不同类型的实验,进一步融合各学科的内外知识,鼓励学生在掌握基础理论的同时,大胆创新,深入实践,帮助学生建立起更为全面、宽广的知识体系。
关键词:计算机图形学;树型知识结构;知识融合
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2017)45-0166-04
一、引言
什么是计算机图形学?在维基百科上的定义是利用计算机生成图形和动画[1]。这样一个看似简单的定义,真正展开的话,其内涵极其丰富。仅就图形而言,就包括各种形式的图形,如二维的、三维的、直线的、曲线的、有阴影的、有光照的等。讨论其中最简单的二维图形,也有多种情况,有线框图、彩色图、灰度图,还可以对二维图形加上裁剪、仿射变换、投影等效果。这些不同形式的图形如果在屏幕上显示的话,需要学生掌握大量的相关算法。如果在教学中,按照书中的算法照本宣读,学生不容易理解,掌握知识困难,这势必会影响学生学习的效果,甚至会使学生对课程产生厌烦心理,最终造成教学效果不理想。为了提高学生学习的积极性与主动性,需要对计算机图形学中的各个知识点做一一分析,理清各知识点间的内在关系,从向学生灌输知识逐步向培养学生的能力转变[2]。
计算机图形学是一门综合性的学科,从其基本理论来讲,它以数学、物理等学科为支撑,又与数字图像处理、模式识别和计算几何等学科息息相关,互为支撑。从学生需掌握的操作技能来讲,除了要求学生具备较强的编程能力之外,还需要学生具有一定的数学建模思想[3]。对于这样一门属于交叉学科的课程,如果在理论和实验教学过程中,能将本学科内有关的知识前后贯穿与融合,同时又打破学科壁垒,将其他学科的知识也做到有机融合,这对于学生理解与掌握知识将大有裨益,更能够激发学生的创新思维,使其在更高层次的交叉学科领域有所作为[4,5]。
二、融合学科内外知识,构建“树型”知识结构
计算机图形学教材的主要任务是把图形学的基本原理与算法交代清楚,而这些算法的来龙去脉、支撐理论等这些相关内容则需要教师在授课前做仔细分析。我们可以按实际情况,分别采用金字塔结构、线性结构、“树型”结构和网状结构来表示知识点之间的关系[6]。
图1所示是以Bezier曲线知识点为例构建的“树型”知识结构。下面以此为例,说明在进行理论教学的过程中,如何融合学科内外知识,激发学生学习的兴趣,提高课堂效果与效率。
1. 0层。0层对应根结点曲线,从曲线与直线、曲面前后衔接关系来看,我们可以将其简化为一个线性结构:直线→曲线→曲面,直线的生成方法是生成曲线的基础,两者的生成原理有相通的地方。比如,Bresenham直线生成算法是一种最佳逼近的过程,而Bezier曲线或B样条曲线生成算法也是一种最佳逼近的过程。教师如果能够指出这两个知识点的共通之处,对于学生掌握较难理解的曲线生成方法就可以起到事半功倍的作用,同时又进一步巩固了直线知识点。曲线又可以作为后续课程中曲面的背景知识,通过介绍曲线的应用为曲面知识点的引入作好铺垫。
2. 1层。1层包括B样条曲线和Bezier曲线子结点。对于这种呈并列关系的知识点,可以通过概念平移与对比,在教学中分析B样条曲线和Bezier曲线两个知识点的异同,并加以比照分析。例如,图2中列出三次Bezier曲线和B样条曲线的矩阵表达式,两个4行4列矩阵中对应位置不相同的数字用黑框标出。正是由于这两条曲线的矩阵表达式的这种细微差别,造成最终生成曲线的不同,并使其特征也各不相同。作了这种对比分析后,有利于学生对B样条曲和Bezier曲线的深入理解。
3. 2—4层。从1层中的Bezier曲线一直到4层中的所有结点构成了曲线结点的一棵子树。2层中主要涵盖了Bezier曲线中包括的知识点:常用生成算法、De Castaljau算法以及Bezier曲线特点,这些知识点又以3层和4层中的学科外知识作为支撑。常用的Bezier曲线的生成算法需要用到3层中的Bernstein基函数,而基函数的概念来自于工程数学,Bezier曲线又可以表示为矩阵形式,而矩阵的概念又源于线性代数。在理清了不同学科间知识点的关系后,在讲授Bezier曲线的生成算法时,可以从基函数的特点引入,进而介绍Bernstein基函数,最后阐述Bezier曲线的常用生成算法,将不同学科间的知识进行有机地融合,逐步深入到所要阐明的Bezier曲线生成算法,这可以使得教学变得富有条理性与逻辑性,同时也能使学生体会到,每一门学科不是孤立存在的,不同学科之间存在相互关系。
作为与常用Bezier曲线生成算法呈并列关系的De Castaljau算法,其理论基础来自于计算数学中的递推法,而递推法是组合数学中的解题方法之一。在教学过程中,可以采用启发式教学法,先通过几个常见的递推例子作为引子,比如数列、秦九韶算法等,启发学生在生成Bezier曲线这类复杂问题时,不妨先从最简单的情况入手,如图3所示,可以按下面步骤由浅入深地解释利用De Castaljau算法找到曲线的中点位置。
第一步:在2个控制点P0与P1的情况下,生成的Bezier曲线就是一条直线,中点位置就是直线P0P1的中点。第二步:在第一步2个控制点的基础上,增加第3个控制点P2,先采用第一步的方法,分别求出直线P0P1与P1P2的中点P01与P11,然后递推求出直线P01P11的中点P02。第三步:在第二步3个控制点的基础上,增加第4个控制点P2,先采用类似于第一步和第二步的方法,分别求出直线P0P1、P1P2与P2P3的中点P01、P11与P21,接着递推求出直线P01P11与P11P21的中点P02与P12,最后通过递推求出直线P02与P12的中点P03。endprint
在这个求解曲线中点的例子中,从由2个控制点构成的直线到由3个控制点构成的Bezier曲线,一直到4个控制点构成的Bezier曲线,不断拓展,层层深入,将直线与曲线这2个知识点联系起来,可以让学生深入掌握曲线生成的一般方法,从而达到举一反三、活学活用的教学目的。
三、合理设计多种类型实验,强调不同学科知识的融合
在计算机图形学教学过程中,既要注重其理论性,同时又要强调实践性。对于课程中抽象的算法,如果没有大量的实践去练习的话,恐怕学生听过就会忘记,不能形成一个感性的、直接的认识。计算机图形学的先修课程包括程序设计、数据结构和算法设计等,这些计算机学科课程构成了计算机图形学的背景知识,但计算机图形学又与其先修课程有很大区别,需把握的关键是:计算机图形学的最终目的是通过编程来显示图形,当学生实现算法亲手编程显示图形后,又能让学生体会到将抽象的算法转换为形象化图形的成就感,学生就会慢慢从厌烦图形学算法的心理转变成为迫切实现算法的强烈愿望。而这种成就感的培养,主要依赖于好的实验设计,需要我们围绕知识点设计各种类型的实验。在这里,我们按实验的要求、目的和难度,设计了基础实验、综合实验和拓展实验三类实验。
1.基础实验。基础实验是为了帮助学生了解和掌握一些基本算法,算法本身较为简单,编程实现相对容易。学生掌握基本编程知识,具备一定的算法设计能力就能顺利完成基础实验。
例如,要对多边形进行填充,可以采用种子填色算法:①从(x,y)开始检测相邻位置以确定它们是否是边界颜色,若不是,则用填充颜色涂色,并检测其相邻位置。②直至检测完所有象素。我们在讲授完该算法后,就可以设计实验:利用种子填充算法在一个三角形中涂上指定的颜色。对于这样一个实验,学生只需具备递归编程经验并掌握图形显示函数就可以顺利完成该实验。
2.综合实验。如果说基础实验强调的是基础的话,那么综合实验则强调综合,也就是要求学生能综合运用所学的知识来完成实验,而这里所包含的知识点既有计算机图形学,又有其他相关学科的知识,要求学生将各学科的知识点融会贯通、灵活运用。这种综合实验对学生的动手能力和綜合运用知识的能力都有较高要求。在设计综合实验时,应尽可能地把学生已学过的知识点包含在其中,使学生在编程实现的过程中,把已有知识点巩固复习一遍,当学生最终完成作品后,就会很自然地获得成就感。
例如,我们设计了如图4所示的综合实验:要求学生利用透视变换画出3幢高楼。如表1所示,这个综合实验涉及透视变换、投影和消隐等计算机图形学学科内的知识,又涉及坐标变换、函数等代数及程序设计学科外的知识,通过完成这种综合实验,学生很自然地将学科内、外的知识加以融合并灵活使用,从而提高其知识综合能力。
3.拓展实验。拓展实验是不局限于计算机图形学教材中原有的知识点,围绕实验中的特定要求,需要补充学科内或学科外的新的知识点,或者对原有的知识加以扩充与延伸。拓展实验设计的目的是鼓励学有余力的学生大胆创新、深入实践,激发学生对计算机图形学乃至其他相关学科的兴趣,为将来从事研究工作打下基础。
在课堂教学中,许多学生对于自然界中不存在的,只能通过人工生成的分形图形非常感兴趣,我们就设计了这样的拓展实验:绘制基于分形的自然景物图,这道拓展实验题目中,融合了教材中未加以展开的分形理论,重点是分形图形的建模方法,这部分属于学科外的知识,在课堂教学与教材中都未加以展开说明。学有余力的学生可以通过课外时间去自学相关的分形图形生成方法,再结合计算机图形学中的相关知识完成。随着移动终端的广泛使用,甚至可以要求学生将这样的拓展实验利用JAVA语言在手机终端完成,并通过微信群发布。这样,将主流的开发技术与计算机图形学学科知识做到有机融合,可以培养学生的创新性思维。
四、相关教学成果
笔者在计算机图形学的教学实践中不断开拓创新,打破学科壁垒,将图形学知识与多学科知识加以融合,启迪学生在学习图形学知识时,不拘泥于本学科领域知识,鼓励学生在交叉学科领域有所拓展。例如,2016届计算机系吴庆帆同学通过图形学课程的学习,对图形图像领域产生浓厚的兴趣,进而主攻机器学习领域,完成的“基于MXNet深度学习框架的图像分类软件的实现”毕业论文被评为校优秀毕业论文,目前他在美国约翰霍普金斯大学攻读硕士学位;2017届计算机系陈祖凯同学在学习计算机图形学课程后,不断研究相关图形学算法,获得上海市大学生创新活动项目,他已被上海交通大学计算机系录取继续攻读硕士学位。
五、结语
笔者长期从事计算机图形学的教学工作,通过在理论与实验教学中不断发现问题,总结经验,已系统地为计算机图形学课程中的各重要知识点分别构建了“树型”知识结构,并设计了完整的基础实验、综合实验和拓展实验,在教学过程中,鼓励学生将学科内外知识加以融合、灵活运用,帮助学生建立起更为全面、宽广的知识体系。今后,我们将以学科内外知识融合的角度看待所讲授的其他专业课程,在理论与实验教学两方面做进一步的探索研究。
参考文献:
[1]孙家广,胡事民.计算机图形学基础教程[M].北京:清华大学出版社,2005.
[2]傅向华,周虹.加强能力培养的“计算机图形学”实验教学改革[J].计算机教育,2012,(23):94-97.
[3]徐岗,许金兰,陈临强,等.数学建模驱动的“计算机图形学”课堂教学模式改革[J].中国信息技术教育,2016,(6):89-91.
[4]李丹,袁凌,胡迎松,等.计算机图形学的迁移学习实践教学模型[J].电气电子教学学报,2015,(5):51-54.
[5]刘晋钢,孔令德,王进忠.“计算机图形学”课程新教学模式的研究与实践[J].计算机教育,2010,(3):63-65.
[6]孙剑斌,张朋柱.基于知识网络的科研人员知识结构可视化[J].情报科学,2010,(3):395-399.endprint