MATLAB在计算机图形学中的应用
2011-05-28欧中亚
欧中亚
(河南经贸职业学院信息管理系,河南 郑州 450001)
1、引言
计算机图形学(Computer Graphics,CG)是指通过数学算法将现实中的图形转换为能够在计算机上进行显示的科学。这些图形可以是二维或者是三维的,一般来说是由点、线、面这些基本图形单元以及色彩、线宽等属性来组成。简单来说,计算机所研究的就是如何通过计算机来表示图形,并且能够在数据经过数学计算之后能够通过图形的转变来显示其变化。
实际应用中,AutoCAD、protel等等计算机图形显示的软件工具都能够比较好的实现图形在计算机中的显示,但是还有一类数学软件工具能够更为便利、更为精准的实现曲面、曲线等等常用图形的显示,这就是美国MathWorks公司出品矩阵实验室(Matrix Laboratory,MATLAB)软件。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
2、Matlab在曲线绘制中的应用
在Matlab的实际应用中,曲线一般分为两种:规则曲线和不规则曲线。规则曲线是指能够利用数学表达式表示或者是形状规则的曲线;不规则曲线是指需要根据给定的一些特殊的点来构造的光滑曲线。对于规则曲线,在Matlab中一般可以使用plot3这一函数来进行描绘,比如:对于螺旋曲线,如果其参数方程为:
那么在Matlab中的实际编程就可以用下列的语句来实现:
t=0;pi/50;2*pi;plot3(sin(t),cos(2*t),sin(t)+cos(t))来实现,其输出的曲线如图1所示:
图1 螺旋曲线
当然,对于不能够使用数学表达式进行表达的曲线,在Matlab中可以将曲线上特殊的点列出,通过拟合来形成光滑的曲线。
比如,对于如下例子:[x,y,x]=peaks(5)
那么,就可以直接使用函数mesh(x,y,z)来生成如图2所示的曲线。
图2 mesh函数的输出曲线
3、Matlab在曲面绘制中的应用
在实际工程应用中,曲面一般分为两类:规则曲面和不规则曲面。规则曲面是指能够利用数学表达式表示或者是形状规则的曲面;不规则曲面是指需要根据给定的一些特殊的点来构造的光滑曲面。在Matlab进行曲面绘制的过程中,可以利用数学表达式表示的曲面一般是通过两种数学表达形式来表示的,一类是使用非参数形式:f(x,y)可以使用Matlab自带函数ezsurf(f,danain)来表示,其中,f是指两个参数的数学函数表达式,damain则用来定义两个参数变了的取值范围。比如:椭圆抛物面的数学表达式z=x2+y2就可以用下面的表达式来表示:[x,y]=meshg rid(-8∶1∶8);ezsu rf(′y.^2+x.^2′,x,y);其输出图形如图3所示。
图3 椭圆抛物面的输出曲面
而对于使用参数形式表示的曲面的数学表达式,在Matlab中可以使ezsu rf函数ezsurf(x,y,z,[smin,smax,tmin,tmax])表达形式或者ezsurf(x,y,z,[m in,m ax])表达形式来表示曲面。其中,smin,smax分别表示的是s的最小值和最大值,timn,tmax分别表示的是t的最小值和最大值。比如对于锥面来说,其参数表达式可以表达成为
在Matlab中其可以用下面的表达式来表示;ez su rf(′s3 cos(t)′,′s3 sin(t)′,′s′,[0,23 p i],[-10,10]);
输出的图形如图4所示。
图4 圆锥面的输出曲面
而对于自由曲面而言,和自由曲线的表达方式基本相同,主要是通过给出特殊点的数值,进行拟合形成光滑的曲面,比较典型的代表例子就是Bezier曲面,这里由于篇幅关系不再给出具体的Matlab程序表示方法。其示意图如图5所示。
图5 Bezier曲面的示意图
4、总结。本文给出了Matlab在计算机图形学中的两种主要应用:曲线和曲面的绘制,从一个相对独立的角度去分析了Matlab软件在计算机图形表示方面的强大能力。由于Matlab具有庞大而完整的函数库,在图形表示方面有着比较强的优势。通过Matlab将数据进行平面和空间的表示能够非常容易的看出数值在进行分析、变换过程当中产生的变化。
[1]陈传波,陆枫.计算机图形学基础[M].北京:电子工业出版社,2002.
[2]胡华.用MA TLAB解决数学分析中的图形问题[J].西南民族大学学报,2003.
[3]王沫然.MA TLAB 与科学计算[M].第2版.北京:电子工业出版社,2004.
[4]焦永和.计算机图形学教程[M].第2版.北京:北京理工大学出版社,2001.
[5]朱美玲,赵淳生.一种万能的数学运算“演算纸”—Matlab.振动、测试与诊断,1995.
[6]Donald Hearn M,Pauline Baker著.蔡士杰,宋继强,蔡敏译.计算机图形学[M].北京:电子工业出版社,2005.
[7]李南南,吴清,曹辉林.MATLAB7简明教程[M].北京:清华大学出版社,2006.
[8]Gerald Recktenwald著.伍卫国译.数值方法和MATLAB实现与应用[M].北京:机械工业出版社,2004.