APP下载

基于MATLAB的图形用户界面设计

2015-03-02党丹凤周立勇王海涛

测绘技术装备 2015年3期
关键词:图形用户界面用户界面曲面

党丹凤 周立勇 王海涛



基于MATLAB的图形用户界面设计

党丹凤1周立勇1王海涛2

(1.湖北省宜昌市地质勘探大队 湖北宜昌 443000;2.西安测绘总站 陕西西安 710054)

研究利用MATLAB实现三维图形的多样显示、消隐、光照等交互操作。利用MATLAB编程,绘制出了真实感地球、实体地球、线宽性地球,交互显示出地球的这三种表现形态;利用消隐技术对三维曲面图作消隐处理,使大家更直观地了解消隐技术的作用效果;利用光照技术,展示出三维曲面在不同光照模式下的显示效果,使大家对光照增强图形逼真度有一个直观的印象。通过上述三方面的研究,展现出基于MATLAB设计用户界面巨大的简洁性和方便性。

GUI 交互 消隐 光照

1 引言

作为具有科学计算、图形处理和虚拟现实模拟等多种功能的强有力实现工具,MATLAB的应用领域已扩展到数值计算、数据处理、统计分析、计算机动画等各个方面,应用范围也越来越广泛。从当前各类软件的发展趋势来看,简介、美观、易操作的图形用户界面已成为各类应用程序的基本交互入口,因此,MATLAB这一功能强大的计算软件也应具备强大的GUI功能。计算机图形学研究的主要是如何在计算机中表示图形、以及利用计算机进行图形计算、绘制、处理和显示等相关原理与算法的一门学科。近年来,计算机图形学的研究领域得到了很大扩展,覆盖面也逐步扩大,涉及到图形标准、图形交互技术、光栅图形生成算法、非真实感绘制,以及自然景物仿真、虚拟现实等。

在科学研究和工程应用中,人们通常希望将数据、设计过程或计算结果用交互式图形表示,以使数据的特征或性能能够清晰、直观地以GUI方式展现。通常,快速方便的绘制图形,尤其是不规则图形和复杂的三维特殊图形,需要对绘图工具、语言有较深入的了解,需要熟练使用这些工具或编写程序,而这通常是一项入门缓慢、熟练精通时间较长的工作。然而,近年来MATLAB在提供强大计算功能的同时,大力发展了面向对象的图形技术和GUI技术,使用户可以轻松实现数据的交互式显示。用MATALB设计图形,用户可以根据界面提示完成整个工程,却不必了解工程内部是如何工作的,具有开放性,方便用户不断完善和扩充其功能。

2 研究方法及思路

本文的研究内容都是在MATLAB提供的GUI程序开发环境基础上完成的。在MATLAB中,我们通过句柄图形(handle Graphics)将图形的每一个组件都视为一个对象,根据句柄找到图形的属性,更改这些属性,产生不同的图形呈现效果。通过GUI技术,简介、快速地绘制出所需的图形,以及实现消隐、光照等效果,通过对三维图形表现形式、消隐、光照的处理,一方面体现了MATLAB的GUI技术在图形处理方面突出的优越性;另一方面,对于同一种图形处理方式,通过对比处理前与处理后的区别,展示出此种处理方式带给大家的视觉差,进而为下一步的具体使用提供直观印象。

2.1 三维图形的三种表现形式绘制

由于三维图形看起来更加直接、美观,无论是在GIS中还是在地图学中三维图形的应用也越来越广泛,MATLAB提供三维绘图命令,可以很方便地绘制各种图形。

三维图形的三种表现形式分别是线框图、真实感图形和实体图。由于MATLAB具有强大的面向对象的图形技术和GUI技术,使用户可以轻松实现数据的交互式显示。使用MATLAB提供的图形设计技术,用户无须了解图形实现的细节内容,一般只需几个简单的函数就可以绘制非常复杂的图形。我们通过函数绘制出三维图形后,给三维图形着色就可以得到三维图形的真实感图形,通过hidden on/off命令设置三维图形的透明与否,可以得到三维图形的线框图和实体图。最后,通过比较三维图形的这三种表现形式,可以看出在特定情况下哪种图形更适合表现我们的意图。

2.2 三维图形的消隐方法

从空间某个视点观察三维图形时,总会有部分线或面被别的对象或它自身挡住。绘制三维图形时不显示这部分线或面,有利于体现图形的三维特征,否则会使图形看起来杂乱无章。绘制三维图形时,使被遮挡的图形部分不显示出来的技术通常称为消隐。绘制一个三维图形,在默认情况下,MATLAB会进行消隐处理,使三维图形呈现出一个和现实实体相同视觉的的图形。也就是说,在绘制出的三维图形中,局部面会把我们看不到的其它面遮挡住。为了体现三维图形在消隐前后的视觉区别,MATLAB提供了用hidden off命令取消消隐,使用取消消隐技术,可以使我们看到被遮挡的部分。通过消隐前后比较,本文可以看出消隐效果给所带来的视觉差别,从而为选择合适的图形表示形式提供依据。

2.3 光照效果的设置方法

在MATLAB中可以通过设置光照效果增强图形的美观和逼真度。在MATLAB给图形添加光照效果,首先需要创建一个光源对象,这可以通过MATLAB中的light命令来实现,其常用的语法格式为light(‘PropertyName’,’PropertyValue’,---),即通过在light命令中设置光源对象的各种属性来创建光源对象。具体是通过设置Color属性的三元RGB数组值来定义光源发射光的颜色;通过设置Style属性的“infinite”和“local”值来定义平行光和点光源,通过Position属性的三元数组来定义光源的发射方向或空间位置。在此,本文通过调剂光源各个属性值的不同,可以绘制出不同光照情况下三维图形的显示效果,进而可以比较出在不同光照下三维图形的逼真度。

通过三维图形显示、消隐和光照三方面的研究,充分展示了基于MATLAB图形用户界面设计的简便性。从研究过程及研究结果中可以看出,在MATALB中,图形用户界面设计具有简单易操作、代表性强等特点,这也是MATLAB在图形用户界面设计方面优于C++等其他编程语言的巨大优势。

3 实验分析

在开始前,需要在MATLAB主界面下,打开GUIDE启动对话框,创建一个新的GUI界面系统。为了充分体现我们所研究的内容,本文利用MATLAB中的GUI程序设计了一个GUI程序,程序主界面如图1:

3.1 绘制地球的三种表现形式

在此程序中,本文以地球为例,把绘制地球的线框图、真实感图形和实体图的代码写成它们相应的M文件,通过MATLAB的回调,在地球的三个按钮的callback属性中调用相应代码,可以通过交互操作绘制出地球的线框图(图2)、真实感图形(图3)和实体图(图4)。从图中可以看出地球的线框图、真实感图形和实体图的直观图形,进而为我们选择合适的图形表示提供判断支持。

3.2 消隐效果的实现

为展示消隐前后的视觉差别,本文对一个三维曲面进行消隐处理,在这个三维曲面中,通过给消隐前后按钮的Callback属性添加相应的代码,可以绘制出消隐前后的三维曲面图,如下,图(5)、(6)分别为消隐前后的三维曲面图。从图中可以看出三维曲面在消隐前被遮挡的部分以及消隐后的图形,通过图形比较,可以直观地看出消隐前后的差别。为我们选择合适的消隐效果提供帮助。

3.3 光照效果的实现

为展示光照对观察图形的影响,本文对一个三维曲面用四种比较常用、典型的光照模式进行照射,通过在光照下拉框的Callback属性中添加光照部分的代码,依次绘制出了该三维曲面在四种光照模式下的图形。通过四个图形的现实效果,可以直观地看出光源类型、颜色对图形光照效果的影响,通过对比,可以看出在不同的光照下,三维曲面呈现出不同的明暗色彩,展示出光照对对象美观和逼真度的影响,进而为我们进行GUI设计提供依据。图7、图8、图9、图10分别为无光、红色平行光、绿色平行光、红色点光源四种光照模式。

4 结束语

MATLAB的用户界面设计具有非常强大的功能,用它设计的界面美观、简介,更重要的是,MATLAB的用户界面设计非常简单易学,和C++等编程语言复杂的绘图不同,用MATLAB制作用户界面非常简单,只需将需要的按钮拖拽到相应位置,就可以制作出各种控件。同时,领域专家为MATLAB编写了许多绘图函数,几乎涵盖了我们平时见到的所有图形,我们绘图时不需要编写复杂的代码,只需通过几个简单的函数调用,就可以绘制出精美的图形。本文通过设计三种用户界面效果,向大家展示了基于MATLAB的GUI用户界面设计的美感和便利之处,使得大家对MATLAB用户界面设计有个直观印象。

[1] 苏金明,阮沈勇.MATLAB实用教程(第二版)[M].北京:电子工业出版社,2009.

[2] 陈垚光,毛涛涛,王正林,等.精通MATLAB设计(第二版)[M].北京:电子工业出版社,2011.

[3] 罗华飞.MATLAB设计学习笔记(第二版)[M].北京:北京航空航天大学出版社,2011.

[4] 秦襄培,郑贤中.MATLAB图像处理宝典[M].北京:电子工业出版社,2011.

猜你喜欢

图形用户界面用户界面曲面
简单拓扑图及几乎交错链环补中的闭曲面
基于CiteSpace的国外用户界面体验图谱量化分析
Java图形用户界面编程在文本格式化设置系统中的教学研究
物联网用户界面如何工作
相交移动超曲面的亚纯映射的唯一性
UI用户界面色彩设计研究
关于第二类曲面积分的几个阐述
浅谈图形用户界面的保护
基于曲面展开的自由曲面网格划分
基于B/S的跨平台用户界面可配置算法研究