歐中亞
(河南經(jīng)貿(mào)職業(yè)學院信息管理系,河南 鄭州 450001)
1、引言
計算機圖形學(Computer Graphics,CG)是指通過數(shù)學算法將現(xiàn)實中的圖形轉換為能夠在計算機上進行顯示的科學。這些圖形可以是二維或者是三維的,一般來說是由點、線、面這些基本圖形單元以及色彩、線寬等屬性來組成。簡單來說,計算機所研究的就是如何通過計算機來表示圖形,并且能夠在數(shù)據(jù)經(jīng)過數(shù)學計算之后能夠通過圖形的轉變來顯示其變化。
實際應用中,AutoCAD、protel等等計算機圖形顯示的軟件工具都能夠比較好的實現(xiàn)圖形在計算機中的顯示,但是還有一類數(shù)學軟件工具能夠更為便利、更為精準的實現(xiàn)曲面、曲線等等常用圖形的顯示,這就是美國MathWorks公司出品矩陣實驗室(Matrix Laboratory,MATLAB)軟件。
MATLAB可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、matlab開發(fā)工作界面接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
2、Matlab在曲線繪制中的應用
在Matlab的實際應用中,曲線一般分為兩種:規(guī)則曲線和不規(guī)則曲線。規(guī)則曲線是指能夠利用數(shù)學表達式表示或者是形狀規(guī)則的曲線;不規(guī)則曲線是指需要根據(jù)給定的一些特殊的點來構造的光滑曲線。對于規(guī)則曲線,在Matlab中一般可以使用plot3這一函數(shù)來進行描繪,比如:對于螺旋曲線,如果其參數(shù)方程為:
那么在Matlab中的實際編程就可以用下列的語句來實現(xiàn):
t=0;pi/50;2*pi;plot3(sin(t),cos(2*t),sin(t)+cos(t))來實現(xiàn),其輸出的曲線如圖1所示:
圖1 螺旋曲線
當然,對于不能夠使用數(shù)學表達式進行表達的曲線,在Matlab中可以將曲線上特殊的點列出,通過擬合來形成光滑的曲線。
比如,對于如下例子:[x,y,x]=peaks(5)
那么,就可以直接使用函數(shù)mesh(x,y,z)來生成如圖2所示的曲線。
圖2 mesh函數(shù)的輸出曲線
3、Matlab在曲面繪制中的應用
在實際工程應用中,曲面一般分為兩類:規(guī)則曲面和不規(guī)則曲面。規(guī)則曲面是指能夠利用數(shù)學表達式表示或者是形狀規(guī)則的曲面;不規(guī)則曲面是指需要根據(jù)給定的一些特殊的點來構造的光滑曲面。在Matlab進行曲面繪制的過程中,可以利用數(shù)學表達式表示的曲面一般是通過兩種數(shù)學表達形式來表示的,一類是使用非參數(shù)形式:f(x,y)可以使用Matlab自帶函數(shù)ezsurf(f,danain)來表示,其中,f是指兩個參數(shù)的數(shù)學函數(shù)表達式,damain則用來定義兩個參數(shù)變了的取值范圍。比如:橢圓拋物面的數(shù)學表達式z=x2+y2就可以用下面的表達式來表示:[x,y]=meshg rid(-8∶1∶8);ezsu rf(′y.^2+x.^2′,x,y);其輸出圖形如圖3所示。
圖3 橢圓拋物面的輸出曲面
而對于使用參數(shù)形式表示的曲面的數(shù)學表達式,在Matlab中可以使ezsu rf函數(shù)ezsurf(x,y,z,[smin,smax,tmin,tmax])表達形式或者ezsurf(x,y,z,[m in,m ax])表達形式來表示曲面。其中,smin,smax分別表示的是s的最小值和最大值,timn,tmax分別表示的是t的最小值和最大值。比如對于錐面來說,其參數(shù)表達式可以表達成為
在Matlab中其可以用下面的表達式來表示;ez su rf(′s3 cos(t)′,′s3 sin(t)′,′s′,[0,23 p i],[-10,10]);
輸出的圖形如圖4所示。
圖4 圓錐面的輸出曲面
而對于自由曲面而言,和自由曲線的表達方式基本相同,主要是通過給出特殊點的數(shù)值,進行擬合形成光滑的曲面,比較典型的代表例子就是Bezier曲面,這里由于篇幅關系不再給出具體的Matlab程序表示方法。其示意圖如圖5所示。
圖5 Bezier曲面的示意圖
4、總結。本文給出了Matlab在計算機圖形學中的兩種主要應用:曲線和曲面的繪制,從一個相對獨立的角度去分析了Matlab軟件在計算機圖形表示方面的強大能力。由于Matlab具有龐大而完整的函數(shù)庫,在圖形表示方面有著比較強的優(yōu)勢。通過Matlab將數(shù)據(jù)進行平面和空間的表示能夠非常容易的看出數(shù)值在進行分析、變換過程當中產(chǎn)生的變化。
[1]陳傳波,陸楓.計算機圖形學基礎[M].北京:電子工業(yè)出版社,2002.
[2]胡華.用MA TLAB解決數(shù)學分析中的圖形問題[J].西南民族大學學報,2003.
[3]王沫然.MA TLAB 與科學計算[M].第2版.北京:電子工業(yè)出版社,2004.
[4]焦永和.計算機圖形學教程[M].第2版.北京:北京理工大學出版社,2001.
[5]朱美玲,趙淳生.一種萬能的數(shù)學運算“演算紙”—Matlab.振動、測試與診斷,1995.
[6]Donald Hearn M,Pauline Baker著.蔡士杰,宋繼強,蔡敏譯.計算機圖形學[M].北京:電子工業(yè)出版社,2005.
[7]李南南,吳清,曹輝林.MATLAB7簡明教程[M].北京:清華大學出版社,2006.
[8]Gerald Recktenwald著.伍衛(wèi)國譯.數(shù)值方法和MATLAB實現(xiàn)與應用[M].北京:機械工業(yè)出版社,2004.