APP下载

Matlab在“计算机图形学”教学中的应用

2014-07-19陈素根

关键词:计算机图形学图形学样条

陈素根

(安庆师范学院数学与计算科学学院,安徽安庆 246133)

Matlab在“计算机图形学”教学中的应用

陈素根

(安庆师范学院数学与计算科学学院,安徽安庆 246133)

结合Matlab在图形表示、图形绘制方面的功能和信息与计算科学专业的培养目标及教学实际情况,将Matlab引入到计算机图形学教学中,通过在计算机图形学课堂教学、实验教学及学生实验设计等环节中引入Matlab,学生更易理解并掌握图形学基本理论和原理,学生实验设计成果表明教学效果良好。

Matlab;计算机图形学;教学设计;可视化

计算机图形学是研究怎样利用计算机来显示、生成和处理图形的原理、方法和技术的一门学科,也是计算机及相关专业的一门重要的专业选修课[1-2]。该课程开设的目的在于使学生掌握计算机图形生成与处理技术的基础知识、基本原理和方法。在计算机图形学教学过程中发现,该课程理论难度大、实践性强,极易造成教学低效、学生厌学的不良现象,如何激发学生学习的热情和提高教学效率是值得思考的问题。

Visual C++和OpenGL是目前国内高校计算机图形学实验教学使用的主要编程工具[3-4],然而,在讲授计算机图形学课程的过程中发现,虽然信息与计算科学专业的学生普遍具有一定的数学知识和简单的编程基础,但对Visual C++和Open-GL程序设计掌握的不是很好。所以,要想在有限的教学实验时间内利用这么复杂的编程工具,无论对学生还是教师都是很大的挑战。庆幸的是,Matlab作为当前应用最广泛的科学与工程计算软件之一,它提供了基于矩阵的三维绘制函数,在图形窗口上和语言中都提供了变换视点等功能,可以直观地从各个角度观察绘制出三维物体,其在计算机图形图像处理上已显示出了强大的计算及可视化功能[5-6],近年来,关于计算机图形学教学改革和Matlab在图形学中的应用的研究也有很多[7-8]。因此,将Matlab引入到信息与计算科学专业“计算机图形学”课程教学中,有利于学生掌握基本的图形生成原理及算法,提高教学效果。

1 基于Matlab的图形表示与绘制

1.1 基本图形的表示

在二维图形系统中将基本图形元素称为图素或图元,在三维图形系统中称为体素,常见的基本图形元素包括点、线、面、体等。二维图形绘制:line函数在当前坐标系中绘制直线段,rectangle函数绘制矩形、椭圆与圆,patch函数绘制多边形,plot函数与fplot函数绘制平面曲线;三维图形的绘制:plot3函数绘制三维空间中的点和曲线,patch函数绘制网格图形和表面图形,mesh函数绘制网格曲面,surf函数绘制表面曲面。

1.2 非规则对象的表示

非规则对象是指不能用欧氏几何加以描述的对象,如山、水、树、草、云等自然界丰富多彩的对象,其中分形几何方法是描述自然景物和自然现象的重要方法之一。通过简单迭代编程,即可绘制各种分形图形,如雪花曲线、分形树等。

1.3 曲线曲面的绘制

曲线与曲面是计算机图形学中重要的研究对象,是计算机绘图与动画技术的核心要素。曲线绘制:(1)interpl函数实现一维数据插值,interp2函数实现二维数据插值,interp3函数实现三维数据插值,ployfit函数实现最小二乘多项式曲线拟合,spline函数实现三次样条插值。(2)常见曲线有Hermite曲线、Bézier曲线、B样条曲线。曲面绘制有:cylinder函数绘制柱体或台体,sphere函数生成球体,ellipsoid函数绘制椭球体。常见曲面有Bézier曲面、B样条曲面、NURBS曲面。

1.4 真实感图形的绘制

真实感图形绘制是指通过综合利用数学、物理学、计算机以及心理学等知识在计算机图形输出设备上绘制出能够以假乱真的美丽景象。Matlab提供了关于光照模型、纹理映射、实时消隐等技术支持,很方便用于真实感图形的绘制。

2 Matlab应用于计算机图形学教学

通过将Matlab引入到计算机图形学的教学中,学生可以很直观地理解图形学中图形生成的基本原理和算法。在课堂教学过程中,注重理论原理讲述并利用Matlab及时显示效果;在实验教学过程中,注重基本命令和编程思想的讲述,让理论与实际完美结合;在课程教学之余,鼓励学生发挥个人能力,动手编程与设计。以曲线曲面造型为例,从课堂教学设计、实验教学设计和学生实验设计三个方面举例说明。

2.1 课堂教学设计

课堂教学对于任何一门课程来说都是非常重要的,只有设计好课堂教学,才能让学生深刻理解图形学的基本概念、基本原理和理论。曲线曲面造型是计算机图形学中重要内容之一,Bézier曲线和B样条曲线由于结构简单直观而成为曲线设计常用方法之一。

定义1给定4个控制顶点P0,P1,P2,P3和3次Bernstein基函数Bi,3(t),t∈[0,1],i=0,1,2,3,则3次Bézier曲线定义为p(t)=P0·B03(t)+P1·B13(t)+P2·B23(t)+P3·B33(t),其中,B03(t)=(1-t)3,B13(t)=3t(1-t)2,B23(t)= 3t2(1-t),B33(t)=t3。

定义2给定4个控制顶点Q0,Q1,Q2,Q3和3次均匀B样条基函数bi,3(t),t∈[0,1],i=0,1,2,3,则3次B样条曲线定义为q(t)=Q0· b03(t)+Q1·b13(t)+Q2·b23(t)+Q3·b33(t),其中,b03(t)=(1-t)3/6,b13(t)=(3t3-6t2+ 4)/6,b23(t)=(-3t3+3t2+3t+1)/6,b33(t)= t3/6。

从定义1和定义2不难发现,3次Bézier曲线和3次均匀B样条曲线的定义在形式上是非常相似的,主要差别体现在基函数的不同。所以,为了研究曲线的性质,首先要弄清楚基函数的性质。然而,对于复杂的数学推导以及抽象的性质直接理解是比较困难的,可以借助Matlab画出基函数图形,直接从图形观察,学生可以轻松的理解Bernstein基函数的很多性质,如非负性、规范性、对称性等,进而可以理解曲线的相关性质,图1给出了3次Bernstein基函数图形。下面简单给出Bernstein基函数绘制代码:

hold on%绘制3次Bernstein基函数

在教学过程中,结合上述代码介绍线型、线宽和颜色的使用,如曲线的线型有实线(-)、虚线(--)、点划线(-.)和点线(:)等;曲线颜色有红色(r)、绿色(g)、蓝色(b)和黑色(k)等。类似地可以绘制3次均匀B样条基函数,图2给出了3次均匀B样条基函数图形。在此基础上,再给出详细的数学推导过程和其他性质,如端点性质、凸包性等。再利用Matlab画出曲线图形,观察图形加深对曲线性质的理解,图3给出了3次Bézier曲线的图形,图4给出了3次均匀B样条曲线的图形。

2.2 实验教学设计

实验教学对于计算机图形学来说也是非常重要的,它是课堂教学的延续,更是对基本概念、基本原理和理论深入理解的过程,所以设计好实验教学,才能让学生深刻理解图形学的基本概念、基本原理和理论。在实验教学中,可以通过控制顶点对曲线的形状进行调节以及通过曲线拼接实现图形的设计,真正做到理论联系实际,学生才可以对学习感兴趣,主动动手实践,提高编程能力。为了更好地理解控制顶点对曲线形状的调节作用,图5给出了控制顶点对Bézier曲线形状的影响,在此介绍plot函数作图时标记参数的使用。下面简单给出3次Bézier曲线及控制多边形绘制代码。

图1 3次Bernstein基函数图形

图2 3次均匀B样条基函数图形

图3 3次Bézier曲线图形

图4 3次均匀B样条曲线图形

图5 控制顶点对Bézier曲线形状调节

图6 Bézier曲线拼接效果图

然后通过不断修改控制顶点P,并利用线型和标记进行区分,很容易看出控制顶点对曲线形状的调控作用(见图5)。同时,稍微修改上述代码即可绘制3次均匀B样条曲线图形(见图4)。在学生可以顺利绘制基本曲线图形以后,对上述代码进行修改,并结合曲线拼接连续性条件就可以曲线拼接作图了,图6给出了Bézier曲线拼接的效果图。通过这样的设计进行讲解,可以帮助学生进一步理解曲线的性质,也有利于学生根据自己的兴趣设计出各种图形。

2.3 学生实验设计

经过良好的课堂教学与实验教学设计,学生可以更好的理解和掌握计算机图形学的原理与算法,鼓励学生充分发挥个人的能力,让他们动手编程设计自己感兴趣的图形,并安排时间集中点评与讨论。图7为学生设计的部分作品,图7(a)为一个卡通人物头像,图7(b)为一把雨伞实物图,图7(c)为一把吉他实物图。对于图7(a),利用曲线绘制头型、发型、脸型、眉毛等,再利用画点、填充等进行点缀,这样使图像显得可爱;对于图7(b),利用线型、线宽作图绘制伞柄,利用曲面绘制伞面,再简单地进行光照处理,这样图形更具有真实感;对于图7(c),利用曲线绘制吉他外形,再利用颜色、线宽等进行局部绘制,这样使图形与实物更神似。从这些作品可以看出,学生的想象力是丰富多彩的,通过集中交流与讨论,鼓励每一个学生参与到亲自动手设计活动中来,这样不仅可以与他们个人兴趣爱好相结合,还可以让他们更加留意身边的实物,更好地发挥主观能动性,在愉悦的心情中学习知识和提高能力。

图7 学生设计的部分作品

3 结束语

本文针对将Matlab应用到计算机图形学课堂教学与实验教学进行了讨论,以曲线曲面为例介绍了Matlab在计算机图形学中的应用。从中可以看出,采用Matlab作为计算机图形学课堂教学和实验教学的程序设计工具,具有程序简单、显示方便等优点,有利于学生更好的理解算法原理和激发学生的学习兴趣,提高教学质量和水平。如何设计好课堂教学与实验教学过程,充分利用Matlab非常强大的功能来帮助学生更好的学习计算机图形学,是值得思考与探索的问题。

[1]Donald Hearn M,Pauline Baker.计算机图形学[M].蔡士杰,宋继强,蔡敏,译.北京:电子工业出版社,2005:1-63.

[2]陆枫,何云峰.计算机图形学基础[M].第2版.北京:电子工业出版社,2008:1-316.

[3]周进,朱训林,张宏林.Visual C++实用教程[M].北京:人民邮电出版社,2008:1-280.

[4]李军,许波.OpenGL编程指南[M].北京:机械工业出版社,2010:1-519.

[5]于万波.基于MATLAB的计算机图形学与动画技术[M].北京:清华大学出版社,2007:1-151.

[6]李南南,吴清,曹辉林.MATLAB7简明教程[M].北京:清华大学出版社,2006:1-357.

[7]胡建平,李鹏松.Matlab在计算机图形学中的应用[J].东北电力大学学报,2013,33(6):71-74.

[8]郭玉珂.基于示例的《计算机图形学》教学改革研究[J].现代计算机,2013,31(21):43-46.

Applications of Matlab to the Teaching of Computer Graphics

CHEN Su-gen
(School of Mathematics&Computational Science,Anqing Teachers College,Anqing 246133,China)

Considering the powerful function of Matlab in graphical representation,graph drawing and the teaching goal and practice in themajor of information and computation science,Matlab was introduced to the teaching of computer graphics.The application of Matlab in the process of classroom teaching,experiment teaching and the experimental design is benefit for students to understand and master the basic theory and principle of computer graphics.The resultsof students'experimental design show that the teachingmethod is effective.

Matlab,computer graphics,teaching design,visualization

TP317

A

1007-4260(2014)03-0131-04

时间:2014-9-15 16:07 网络出版地址:http://www.cnki.net/kcms/doi/10.13757/j.cnki.cn34-1150/n.2014.03.032.html

2013-02-17

安庆师范学院教学研究项目资助。

陈素根,男,安徽当涂人,硕士,在读博士,安庆师范学院数学与计算科学学院讲师,研究方向为CAGD&CG,从事数学分析与计算机图形学教学。

猜你喜欢

计算机图形学图形学样条
一元五次B样条拟插值研究
三次参数样条在机床高速高精加工中的应用
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
基于样条函数的高精度电子秤设计
计算机图形学与图形图像处理技术
用面向科学思维的教学方法改进计算机图形学课程教学
三维投影变换的MATLAB实现
突出实践需求的GIS专业《计算机图形学》课程优化改革
第7届国际图象图形学学术会议
非计算机专业计算机图形学教学改革初探