简介
可视计算是在现代微处理器、计算机图形学、多媒体等技术日益发展成熟的条件下,新兴的一个研究把计算机构造成为可视建模设备的活跃领域。可视计算强调把抽象的事物以可视的形式反映给用户,是使计算变得更容 易,扩大人们的认识范围的一个有力手段。1
分类不同的使用者对计算机有着不同的要求:终端用户关心的是用户界面,程序员关心的是程序可视化和可视程序设计;科学工作者和数据分析员关心的是可视化和模拟。从这一角度来看,可视计算可分三个主要的分支,即:程序设计可视辅助、1可视界面及可视化 。
程序可视化和可视程序设计是提高程序员生产率和正确性的有效途径。前者主要用于程序构造,后者主要用于程序调试、程序行为理解以及数据可视化,第二个分支是与 计算机的可视交互。依据实现交互的技术,可将各种系统分为三类:WIMP, 虚拟现实,及自然人工景物技术。 第三个分支是科学可视化,它是可视计算中发展最为迅速的一 个领域。 它的迅速发展部分归功于计算能力和三维图形的发展,因为直到最近,才有可能绘制出一 个用户可与之交互的三维环境的令人信服的界面,当前有两种主要的科学可视化方法:基于面的可视化方法和基于体的可视化方法。1
程序设计可视辅助图形有强有力的表达能力,而传统语言又不尽人意,人们便对使用图形作为程序设计的辅助手段产生了极大兴趣。传统程序设计语言的主要缺陷在于它的线性程序设计风格,图形增加了表达的维数,使程序员能直接把思想中的概念反映到计算机中。这种程序设计风格对人来说更为自然,由于它自动地完成程序设计中的琐碎工作,因此增强了程序员开发和调试代码的能力,在程序设计的简单性和高效性上取得重大突破。1
可视程序设计系统使程序员可以通过二维或高维计算功能和单元的显示技术来合成程序;程序可视化则是通过提供对程序不同方面的特征的可视来帮助人们调试和理解程序。可视程序设计系统根据图形在构造程序中的使用方式来进行分类:第一类是图形界面系统,用户通过与系统交互来指导系统生成程序;第二类是可视语言系统,除了用图象代替正文之外,这类系统与传统程序设计系统类似。根据用来生成程序的图象不同,对可视语言 系统可作进一步的分类。.1
可视化系统是根据它们是否显示程序代码、程序数据或基本算法来进行分类的。根据它们是静态还是动态,程序代码和数据可视化系统还可进一步划分。1
1、可视程序设计系统1
(1)图形交互程序设计:图形交互系统提供给程序员交互式图形界面,程序员通过交互来指导系统生成一个供最终用户使用的程序,这种程序设计也叫不可见编程。大多数这类系统是解释执行的。
(2)可视程序设计语言系统:可视程序设计语 言有一个图形符号集,这些符号按一定语法规则排列就构造 出程序,图形符号的排列有严格定义的语义。就此而言,传统程序设计语言和可视程序设计语言的唯一区别,在于后者使用 的是图形符号、而不是正文表达式。但在编程的简单性和效率方面,二者相去甚远。根据在创建程序 时使用的图形抽象不同 ,现有的大多数可视程序设计语言可划分为三类:流图、图符、表和表格。
(3)流图:基于流图的可视程序设计系统使程序员能使用各种类型的图表和图来构造程序。流图被用来说 明程序的数据流或控制流。程序员创建的图形说明被编译为某一传统程序设计语言,或 直接由系统进行翻译。Grail系统把用户描述的流程图直接翻译成机器语言程序;PASCAL/HSD则是在PASCAL中加上标准流程图的图形符号。还有一些用数据流图来支持数据流语言程序自动生成的系统,如PROGRAPH。
(4)图符:在图符系统中,程序是通过称为图符的专门设计的图形符号及其之间的联系来构造程序的。通常,图符的互联方式是由系统对图符的排列斌予一定的语义来说明的。多数基于图符的程序设计系统提供预定义 的图符,并允许用户自定义图符。程序员通过某种方式把它们连成需要的控制流的路径表示来构造程序。使用图符的程序设计系统有:SunPict, Show and Tell, VenLisp等。
(5)表/表格:这类系统允许用户通过使用表或填写表格来构造程序。表格填写被认为是一种与用户 交互的容易方法,因而在许多系统中被大量地使用。如QEE允许用户用 二维表说明对关系数据库的查询;FORMANAGER使用户能用表格开发事务信息系统,FORMAL是一种基于表的数据库语言。
2、可视化系统1
(1)程序可视化:程序可视化系统提供程序代码的静态或动态显示,帮助对程序代码结构和程序控制流的理解,以及对程序性能调试的分析。静态程序可视化系统通常借助于流程图来描述程序数据流,或借助整齐打印空行、空格、缩进格式、和注释等来增加程序的可读性。动态程序可视化系统以动画形式显示程序的执行过程,或以对应于程序的动画图画,或以加亮程序代码的方式,显示程序运行时的控制、程序、或数据视图。动态程序可视化对调试和分析分布式及多处理机软件特别有用,使程序员能了解系统与正在执行的程序之间的相互作用。PECAN是典型的多视图动态可视化系统。
(2)算法可视化:这种系统显示程序的基本操作,不仅体现 数据的转换和访间,也体现控制流。RonBaecker的系统能生成帧序列,产生电影效果的算法动画显示;BALSA系统则是在算法代码中插有趣事件过程调用来生成动画。
(3)数据可视化:数据可视化系统以静态或动画的方式来显示程序数据。静态数据可视化系统通常用于数据结构的自动生成,系统除提供显示库外,还允许用户自定义显示方式,并支持各种数据结构的可视、编辑、和浏 览等功能,如INSENCE。动态数据可视化通过交互式图形显示来定义程序数据结构之间的关系、描述程序运行过程中对数据的访问和修改,这类系统已在并行和分布式程序的性能调试中广泛使用,如PV。
最终用户与计算机的交互用 户界面的发展导致了软件和硬件上新技术的进步,以及新的交互模型的开发。近年来,界面已从单纯的正文方式发展到图形方式和使用象头盔显示器及数据手套这样的高级界面设备的直接操作方式。1
对最终用户与计算机的交互的分类可分为两级,第一级基于实现交互所用的软、硬件技术。主要包含WIMP、VR、人工自然场景。使用上述分类中的每种技术也还有不同的交互风格,这些交互模型或隐喻构成了分类的第二级。
其中WIMP问题包含:桌面隐喻和空间隐喻两种;VR包含具体现实和抽象现实;自然人工场景代表了用自然方式(如手势、文字书写、及口述语言)与计算机交互的发展方向。
科学可视化科学可视化在实现数据可视和交互的科学家界面时,利用了计算机图形学、图像理解与合成、用户界面、计 算机视觉、及计算机辅助设计的技术,取得了极大成功。目前,科学可视化主要应用于计算科学和工程设计应用中产生的数值数据的可视。1
直到最近,可视化软件工具 一直是 由图形子程序库和动 画程序包组成的。图形子程序库是一个低级图形操 作集合,用该库实现可视化,用户需要用传统语言编程,并在程序中嵌入对图形子程序的调用。这一过程不仅 要花费许多时间,而且要求用户有特殊的技巧,例如,要了解图形库使用的数据 结构、影响图像成像的观察和光 照属性 、以及库所使用的绘制过程。1
使用动画程序包生成可视化软件时,用户首先(通常以批方式 ) 生成可视数据,然后用包提洪的功能来实现可视化。尽管与图形子程序库相比,使用程序包更为容易和高效,但也还有许多问题。如大多数程序包的应用范围非常狭窄,数据输入格式也十分有限,常常需要将一个模块产生的输出数据转换为另一个模块能够接受的数据形式。
将来的研究可视计算机将来的研究点如下:1
1、程序设计的可视辅助
可视程序设计和程序可视化正越来越受关注,过去的几年中已推出许多有趣的系统,而更多的正在开发。尽管已作了很多努力,充分开发图形在程序设计中的潜力还有待于作进一步的努力。
2、与计算机交互
(1)WIMP界面:尽管在基于WIMP技术的界面设计中已取得成功, 并有了大量的经验, 低质量的WIMP界面仍在生产。主要的问题是, 缺少开发良好界面的支持工具。用户界面管理系统的目标是通过提供界面开发的辅助工具来解决这一问题;
(2)虚拟现实:许多现有的虚拟现实应用程序是用低级工具开发的, 既费时又昂贵, 这不利于对其它技术的探索,也限制了它的应用。因此需要开发支持生成这些界面的软件工具箱和UIMS;
(3)自然人工场景:实现与计算机以人类日常交互的方式交互是有趣的, 然而难以做到, 因为这是一个相当广的领域, 包括许多不同的技术, 而这些技术的信噪比都很高, 难以准确判断出真正的输入; 而且声频、手势以及手写体的使用很可能是高度依赖于使用者的, 要解决这个问题, 要么使系统专用于特定的用户风格, 要么使它一般化到能够独立于使用者。
3、科学可视化
科学可视化的算法和数据结构是一个重要研究领域, 因为可视化生成通常是一个计算密集的过程,算法上一个相对较小的提高, 也能使生成图像的总时间大大减少。这些算法可分为几类; 加快可视化( 体可视化和面可视化) 的算法、由图像数据构造体的算法以及构造体数据几何模型的算法。
,