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