黨丹鳳 周立勇 王海濤
?
基于MATLAB的圖形用戶界面設(shè)計(jì)
黨丹鳳1周立勇1王海濤2
(1.湖北省宜昌市地質(zhì)勘探大隊(duì) 湖北宜昌 443000;2.西安測(cè)繪總站 陜西西安 710054)
研究利用MATLAB實(shí)現(xiàn)三維圖形的多樣顯示、消隱、光照等交互操作。利用MATLAB編程,繪制出了真實(shí)感地球、實(shí)體地球、線寬性地球,交互顯示出地球的這三種表現(xiàn)形態(tài);利用消隱技術(shù)對(duì)三維曲面圖作消隱處理,使大家更直觀地了解消隱技術(shù)的作用效果;利用光照技術(shù),展示出三維曲面在不同光照模式下的顯示效果,使大家對(duì)光照增強(qiáng)圖形逼真度有一個(gè)直觀的印象。通過上述三方面的研究,展現(xiàn)出基于MATLAB設(shè)計(jì)用戶界面巨大的簡(jiǎn)潔性和方便性。
GUI 交互 消隱 光照
作為具有科學(xué)計(jì)算、圖形處理和虛擬現(xiàn)實(shí)模擬等多種功能的強(qiáng)有力實(shí)現(xiàn)工具,MATLAB的應(yīng)用領(lǐng)域已擴(kuò)展到數(shù)值計(jì)算、數(shù)據(jù)處理、統(tǒng)計(jì)分析、計(jì)算機(jī)動(dòng)畫等各個(gè)方面,應(yīng)用范圍也越來越廣泛。從當(dāng)前各類軟件的發(fā)展趨勢(shì)來看,簡(jiǎn)介、美觀、易操作的圖形用戶界面已成為各類應(yīng)用程序的基本交互入口,因此,MATLAB這一功能強(qiáng)大的計(jì)算軟件也應(yīng)具備強(qiáng)大的GUI功能。計(jì)算機(jī)圖形學(xué)研究的主要是如何在計(jì)算機(jī)中表示圖形、以及利用計(jì)算機(jī)進(jìn)行圖形計(jì)算、繪制、處理和顯示等相關(guān)原理與算法的一門學(xué)科。近年來,計(jì)算機(jī)圖形學(xué)的研究領(lǐng)域得到了很大擴(kuò)展,覆蓋面也逐步擴(kuò)大,涉及到圖形標(biāo)準(zhǔn)、圖形交互技術(shù)、光柵圖形生成算法、非真實(shí)感繪制,以及自然景物仿真、虛擬現(xiàn)實(shí)等。
在科學(xué)研究和工程應(yīng)用中,人們通常希望將數(shù)據(jù)、設(shè)計(jì)過程或計(jì)算結(jié)果用交互式圖形表示,以使數(shù)據(jù)的特征或性能能夠清晰、直觀地以GUI方式展現(xiàn)。通常,快速方便的繪制圖形,尤其是不規(guī)則圖形和復(fù)雜的三維特殊圖形,需要對(duì)繪圖工具、語言有較深入的了解,需要熟練使用這些工具或編寫程序,而這通常是一項(xiàng)入門緩慢、熟練精通時(shí)間較長的工作。然而,近年來MATLAB在提供強(qiáng)大計(jì)算功能的同時(shí),大力發(fā)展了面向?qū)ο蟮膱D形技術(shù)和GUI技術(shù),使用戶可以輕松實(shí)現(xiàn)數(shù)據(jù)的交互式顯示。用MATALB設(shè)計(jì)圖形,用戶可以根據(jù)界面提示完成整個(gè)工程,卻不必了解工程內(nèi)部是如何工作的,具有開放性,方便用戶不斷完善和擴(kuò)充其功能。
本文的研究?jī)?nèi)容都是在MATLAB提供的GUI程序開發(fā)環(huán)境基礎(chǔ)上完成的。在MATLAB中,我們通過句柄圖形(handle Graphics)將圖形的每一個(gè)組件都視為一個(gè)對(duì)象,根據(jù)句柄找到圖形的屬性,更改這些屬性,產(chǎn)生不同的圖形呈現(xiàn)效果。通過GUI技術(shù),簡(jiǎn)介、快速地繪制出所需的圖形,以及實(shí)現(xiàn)消隱、光照等效果,通過對(duì)三維圖形表現(xiàn)形式、消隱、光照的處理,一方面體現(xiàn)了MATLAB的GUI技術(shù)在圖形處理方面突出的優(yōu)越性;另一方面,對(duì)于同一種圖形處理方式,通過對(duì)比處理前與處理后的區(qū)別,展示出此種處理方式帶給大家的視覺差,進(jìn)而為下一步的具體使用提供直觀印象。
2.1 三維圖形的三種表現(xiàn)形式繪制
由于三維圖形看起來更加直接、美觀,無論是在GIS中還是在地圖學(xué)中三維圖形的應(yīng)用也越來越廣泛,MATLAB提供三維繪圖命令,可以很方便地繪制各種圖形。
三維圖形的三種表現(xiàn)形式分別是線框圖、真實(shí)感圖形和實(shí)體圖。由于MATLAB具有強(qiáng)大的面向?qū)ο蟮膱D形技術(shù)和GUI技術(shù),使用戶可以輕松實(shí)現(xiàn)數(shù)據(jù)的交互式顯示。使用MATLAB提供的圖形設(shè)計(jì)技術(shù),用戶無須了解圖形實(shí)現(xiàn)的細(xì)節(jié)內(nèi)容,一般只需幾個(gè)簡(jiǎn)單的函數(shù)就可以繪制非常復(fù)雜的圖形。我們通過函數(shù)繪制出三維圖形后,給三維圖形著色就可以得到三維圖形的真實(shí)感圖形,通過hidden on/off命令設(shè)置三維圖形的透明與否,可以得到三維圖形的線框圖和實(shí)體圖。最后,通過比較三維圖形的這三種表現(xiàn)形式,可以看出在特定情況下哪種圖形更適合表現(xiàn)我們的意圖。
2.2 三維圖形的消隱方法
從空間某個(gè)視點(diǎn)觀察三維圖形時(shí),總會(huì)有部分線或面被別的對(duì)象或它自身擋住。繪制三維圖形時(shí)不顯示這部分線或面,有利于體現(xiàn)圖形的三維特征,否則會(huì)使圖形看起來雜亂無章。繪制三維圖形時(shí),使被遮擋的圖形部分不顯示出來的技術(shù)通常稱為消隱。繪制一個(gè)三維圖形,在默認(rèn)情況下,MATLAB會(huì)進(jìn)行消隱處理,使三維圖形呈現(xiàn)出一個(gè)和現(xiàn)實(shí)實(shí)體相同視覺的的圖形。也就是說,在繪制出的三維圖形中,局部面會(huì)把我們看不到的其它面遮擋住。為了體現(xiàn)三維圖形在消隱前后的視覺區(qū)別,MATLAB提供了用hidden off命令取消消隱,使用取消消隱技術(shù),可以使我們看到被遮擋的部分。通過消隱前后比較,本文可以看出消隱效果給所帶來的視覺差別,從而為選擇合適的圖形表示形式提供依據(jù)。
2.3 光照效果的設(shè)置方法
在MATLAB中可以通過設(shè)置光照效果增強(qiáng)圖形的美觀和逼真度。在MATLAB給圖形添加光照效果,首先需要?jiǎng)?chuàng)建一個(gè)光源對(duì)象,這可以通過MATLAB中的light命令來實(shí)現(xiàn),其常用的語法格式為light(‘PropertyName’,’PropertyValue’,---),即通過在light命令中設(shè)置光源對(duì)象的各種屬性來創(chuàng)建光源對(duì)象。具體是通過設(shè)置Color屬性的三元RGB數(shù)組值來定義光源發(fā)射光的顏色;通過設(shè)置Style屬性的“infinite”和“l(fā)ocal”值來定義平行光和點(diǎn)光源,通過Position屬性的三元數(shù)組來定義光源的發(fā)射方向或空間位置。在此,本文通過調(diào)劑光源各個(gè)屬性值的不同,可以繪制出不同光照情況下三維圖形的顯示效果,進(jìn)而可以比較出在不同光照下三維圖形的逼真度。
通過三維圖形顯示、消隱和光照三方面的研究,充分展示了基于MATLAB圖形用戶界面設(shè)計(jì)的簡(jiǎn)便性。從研究過程及研究結(jié)果中可以看出,在MATALB中,圖形用戶界面設(shè)計(jì)具有簡(jiǎn)單易操作、代表性強(qiáng)等特點(diǎn),這也是MATLAB在圖形用戶界面設(shè)計(jì)方面優(yōu)于C++等其他編程語言的巨大優(yōu)勢(shì)。
在開始前,需要在MATLAB主界面下,打開GUIDE啟動(dòng)對(duì)話框,創(chuàng)建一個(gè)新的GUI界面系統(tǒng)。為了充分體現(xiàn)我們所研究的內(nèi)容,本文利用MATLAB中的GUI程序設(shè)計(jì)了一個(gè)GUI程序,程序主界面如圖1:
3.1 繪制地球的三種表現(xiàn)形式
在此程序中,本文以地球?yàn)槔?,把繪制地球的線框圖、真實(shí)感圖形和實(shí)體圖的代碼寫成它們相應(yīng)的M文件,通過MATLAB的回調(diào),在地球的三個(gè)按鈕的callback屬性中調(diào)用相應(yīng)代碼,可以通過交互操作繪制出地球的線框圖(圖2)、真實(shí)感圖形(圖3)和實(shí)體圖(圖4)。從圖中可以看出地球的線框圖、真實(shí)感圖形和實(shí)體圖的直觀圖形,進(jìn)而為我們選擇合適的圖形表示提供判斷支持。
3.2 消隱效果的實(shí)現(xiàn)
為展示消隱前后的視覺差別,本文對(duì)一個(gè)三維曲面進(jìn)行消隱處理,在這個(gè)三維曲面中,通過給消隱前后按鈕的Callback屬性添加相應(yīng)的代碼,可以繪制出消隱前后的三維曲面圖,如下,圖(5)、(6)分別為消隱前后的三維曲面圖。從圖中可以看出三維曲面在消隱前被遮擋的部分以及消隱后的圖形,通過圖形比較,可以直觀地看出消隱前后的差別。為我們選擇合適的消隱效果提供幫助。
3.3 光照效果的實(shí)現(xiàn)
為展示光照對(duì)觀察圖形的影響,本文對(duì)一個(gè)三維曲面用四種比較常用、典型的光照模式進(jìn)行照射,通過在光照下拉框的Callback屬性中添加光照部分的代碼,依次繪制出了該三維曲面在四種光照模式下的圖形。通過四個(gè)圖形的現(xiàn)實(shí)效果,可以直觀地看出光源類型、顏色對(duì)圖形光照效果的影響,通過對(duì)比,可以看出在不同的光照下,三維曲面呈現(xiàn)出不同的明暗色彩,展示出光照對(duì)對(duì)象美觀和逼真度的影響,進(jìn)而為我們進(jìn)行GUI設(shè)計(jì)提供依據(jù)。圖7、圖8、圖9、圖10分別為無光、紅色平行光、綠色平行光、紅色點(diǎn)光源四種光照模式。
MATLAB的用戶界面設(shè)計(jì)具有非常強(qiáng)大的功能,用它設(shè)計(jì)的界面美觀、簡(jiǎn)介,更重要的是,MATLAB的用戶界面設(shè)計(jì)非常簡(jiǎn)單易學(xué),和C++等編程語言復(fù)雜的繪圖不同,用MATLAB制作用戶界面非常簡(jiǎn)單,只需將需要的按鈕拖拽到相應(yīng)位置,就可以制作出各種控件。同時(shí),領(lǐng)域?qū)<覟镸ATLAB編寫了許多繪圖函數(shù),幾乎涵蓋了我們平時(shí)見到的所有圖形,我們繪圖時(shí)不需要編寫復(fù)雜的代碼,只需通過幾個(gè)簡(jiǎn)單的函數(shù)調(diào)用,就可以繪制出精美的圖形。本文通過設(shè)計(jì)三種用戶界面效果,向大家展示了基于MATLAB的GUI用戶界面設(shè)計(jì)的美感和便利之處,使得大家對(duì)MATLAB用戶界面設(shè)計(jì)有個(gè)直觀印象。
[1] 蘇金明,阮沈勇.MATLAB實(shí)用教程(第二版)[M].北京:電子工業(yè)出版社,2009.
[2] 陳垚光,毛濤濤,王正林,等.精通MATLAB設(shè)計(jì)(第二版)[M].北京:電子工業(yè)出版社,2011.
[3] 羅華飛.MATLAB設(shè)計(jì)學(xué)習(xí)筆記(第二版)[M].北京:北京航空航天大學(xué)出版社,2011.
[4] 秦襄培,鄭賢中.MATLAB圖像處理寶典[M].北京:電子工業(yè)出版社,2011.