基于解算器的可视化框架背景技术
向人传达信息的最有效的方式常常是在视觉上进行的。因此,数百万
的人处理各种各样的视觉项目,以便传达或接收信息,以及以便协作。这
样的视觉项目可包括,例如,概念简图、工程制图、材料清单、描绘诸如
建筑物或分子结构之类的各种结构的三维模型、培训材料、带插图的安装
说明书、规划图等等。
最近,使用例如计算机辅助设计(CAD)以及实体建模应用程序来以
电子方式构建这些视觉项目。这些应用程序常常允许作者将数据和约束附
加于几何形状中。例如,用于构建材料清单的应用程序可以允许将诸如部
件号和供应商之类的属性与每一部件、两个组件之间的最大角度等等相关
联。构建圆剧场的电子版本的应用程序可以具有用于指定座位之间的最小
间隙的工具等等。
这样的应用程序对于设计和技术的进步贡献巨大。然而,任何给定应
用程序都具有与可以在视觉上传达的信息的类型、如何在视觉上传达该信
息、或可以归因于各种视觉表示的数据和行为的范围有关的限制。如果要
修改该应用程序以超出这些限制,则计算机程序员通常将要创作扩展该应
用程序的能力的新应用程序,或提供全新的应用程序。同样,对于有多少
用户(除模型的实际作者以外)可以操纵该模型来测试各种情形也有限制。
发明内容
此处所描述的实施例涉及其中解算器可以被用来确定视图组件的属性
的可视化框架。在某些情况下,可以使用诸如依赖树之类的关系结构来显
式地编写解算器。在某些情况下,可以基于具有解算器的属性-设置器调用
其他具有解算器的属性-设置器来隐式地编写解算器。这可以允许作者更快
速地创建和修改视图合成。
本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也
不旨在用于帮助确定所要求保护的主题的范围。
附图简述
为了描述可以获得本发明的上文所列举的及其他优点和特征的方式,
下面将通过参考附图来呈现对各实施例的更具体的描述。可以理解,这些
附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过
使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:
图1示出了其中可以使用本发明的原理的环境,包括构建取决于输入
数据的视图合成的数据驱动的合成框架;
图2示出了表示图1的环境的一个示例的管道环境;
图3示意性地示出了图2的管道的数据部分的实施例;
图4示意性地示出了图2的管道的分析法部分的实施例;
图5示意性地示出了图2的管道的视图部分的实施例;
图6示意性地示出了能够枚举数据流的元素的全部或子集的数据流对
象;
图7示出了可以通过图2的管道来构建的视图合成的呈现;
图8示出了用于使用图2的管道环境来生成视图合成的方法的流程图;
图9示出了用于使用图2的管道环境响应于与视图合成的用户交互来
重新生成视图合成的方法的流程图;
图10进一步详细地示意性地示出了图4的分析法部分的解算器,包括
专门解算器的集合;
图11示出了通过协调专门解算器集合的动作来对未知模型参数进行
求解的图10的解算器的流程图;
图12示意性地示出了可以表示图10的解算器的示例的解算器环境;
图13示出了用于使用图12的解算器环境来对模型分析法进行求解的
方法的流程图;
图14示出了用于使用图10的解算器环境来对模型变量进行求解的方
法的流程图;
图15示意性地示出了解算器环境的实施例;
图16示出了可以由如图15所示的解算器环境执行的方法的流程图;
图17示出了扩展了图7的示例的集成视图合成的呈现;
图18A示出了其中多个视觉项目被用表示相对应的视觉项目可以与执
行滚动进行交互的视觉线索来装饰的视图合成;
图18B示出了在滚动交互之后图18A的视图合成;
图19A示出了其中允许放大交互性的视图合成;
图19B示出了在放大交互性之后图19A的视图合成;
图20以美国地图的形式示出了视图合成,其中,每一个州的高度表示
数据,包括视觉线索的一些州视觉项目指示与该州视觉项目的可能交互性;
图21以组合的相互关联的饼图和柱状图的形式示出了视图合成,包括
示出了可能的交互性的视觉线索;
图22以飓风路线前进图的形式示出了视图合成,其中各种视觉线索标
识交互性;
图23示出了用于在视图合成中提供交互性的方法的流程图;
图24示出了其中各种视觉项目可以被集成和合并的用户界面;
图25示出了集成的第一阶段,其中,仅螺旋被示出为数据将被映射到
其上的形状;
图26示出了集成的第二阶段,其中,图25的螺旋被绑定到一数据系
列;
图27示出了集成的第三阶段,其中,图25的螺旋被绑定到两个数据
系列;
图28示出了集成的最后阶段,其中,图25的螺旋被绑定到所示出的
图表。
图29示出了架子布局的可视化,并只表示此处所描述的原理可以适用
的无数应用程序中的一个;
图30示出了此处所描述的原理也可以适用的市区规划的可视化;
图31示出了本发明的原理可以适用的从而创建更动态的学习环境的
比较了儿童的教育的常规可视化;
图32示出了本发明的原理可以适用的从而创建更动态的学习环境的
比较了人口密度的常规可视化;
图33示出了应用于第一参数目标的视图组件的可视化;
图34示出了应用于第二参数目标的如图33所示的视图组件的可视化;
以及
图35示出了图2的分类组件可以在其中操作的分类环境;
图36示出了图35的成员项目的分类的示例;
图37A到37C示出了相关的类别的分类的三个示例;
图38示出了包括多个属性的成员项目;
图39示出了领域特定的分类并表示图35的领域指定的分类的一个示
例;
图40示出了用于导航和使用分析法的方法的流程图;
图41示出了用于使用分析法来进行搜索的方法的流程图;以及
图42示出了表示其中可以实现图1的合成框架(或其各部分)的环境
的计算系统。
详细描述
图1示出了使用数据驱动的分析法和分析结果的可视化的视觉合成环
境100。环境100(下面也叫做“管道”)包括合成框架110,该合成框架
110执行独立于视图构造130的问题领域而执行的逻辑。例如,同一个合成
框架110可以用来合成用于城市规划、分子模型、杂货店货架布局、机器
性能或装配分析或其他领域特定的呈现的交互式视图合成。如下文所描述
的,可以使用分析法来搜索并在各种方案中探索。然而,首先,将详细描
述基本合成框架110。
合成框架110使用以领域特定的方式分类学地组织的领域特定的数据
120来执行分析法121,以构建领域特定的实际视图构造130(此处也叫做
“视图合成”)。因此,通过改变域专用数据120,可以使用同一个合成框
架110来构建任意数量的不同领域的视图合成,而非必须重新编码合成框
架110本身。如此,通过改变数据而非重新编码和重新编译,管道100的
合成框架110可以潜在地适用于无限多个问题领域,或至少适用于各种各
样的问题领域。然后,可以将视图合成130作为指令提供给适当的2-D或
3-D呈现模块。此处所描述的体系结构还允许将预先存在的视图合成作为构
件方便地合并到新视图合成中。在一个实施例中,可以将多个视图合成包
括在集成视图合成中,以方便地在对模型的两个可能的解决方案之间进行
比较。
图2示出了以管道环境200的形式存在的合成框架110的示例体系结
构。管道环境200包括管道201本身,以及其他。管道201包括数据部分
210、分析法部分220,以及视图部分230,分别参考随后的图3到5以及
伴随的描述来详细地对它们进行了描述。现在,在一般水平,管道201的
数据部分210可以接受各种不同类型的数据,以规范形式将该数据提供给
管道201的分析法部分220。分析法部分220将该数据绑定到各种模型参数,
并使用模型分析法求解模型参数中的未知数。然后,将各种参数值提供给
视图部分230,该视图部分230使用模型参数的这些值来构建合成视图。管
道环境200还包括创作组件240,该创作组件240允许管道201的作者或其
他用户制定和/或选择向管道201提供的数据。例如,创作组件240可以用
来向数据部分210(由输入数据211表示)、分析法部分220(由分析法数
据221表示)以及视图部分230(由视图数据231表示)中的每一个部分提
供数据。各种数据211,221和231表示图1的领域特定的数据120的示例,
下面将更详细地对它们进行描述。创作组件240支持提供各种数据,所述
各种数据包括例如数据模式,供模型使用的实际数据,从外部源带进的数
据的位置或可能位置的范围,视觉(图形或动画)对象,可以对画面、建
模语句(例如,视图、方程、约束)、绑定等等执行的用户界面交互。
在一个实施例中,创作组件只是由总体管理器组件(在图2中未示出,
但是由图1的合成框架110表示)所提供的功能的一个部分。该管理器是
响应于事件(诸如用户交互事件、外部数据事件,以及来自诸如解算器、
操作系统等等之类的其他组件中的任何一个组件的事件)来控制和排序所
有其他组件(诸如数据连接器、解算器、查看器等等)的操作的总体指挥
器。
创作组件240还包括允许执行搜索的搜索工具242。搜索工具242能
够利用管道201的数据驱动的分析能力,以便执行复杂的搜索操作。例如,
在某些情况下,搜索的一个或多个参数可能首先需要被求解,以便完成搜
索。
作为示例,假设数据驱动的分析法是城市图,并且一些分析法能够对
城市中特定坐标处的典型的噪音级别进行求解。在该情况下,一个正在搜
索房地产的人可以不仅仅对平方尺、价格范围、房间数量等等典型的搜索
参数执行搜索,而且还可对分析强度参数进行搜索。例如,尽管有无限的
可以应用原理的方式,但是,现在将提供如何可以实现对房地产的灵活搜
索的选定的几个不同的示例。
作为指定搜索参数的一部分,用户可以指示需要下面或其他搜索项目
中的任何一个或多个:
1)只有那些体验到低于某一上限的平均噪音级别的房屋;
2)只有那些在星期一到星期四中每一天到用户的工作单位和体育馆
具有累积300分钟通勤时间或更短的房屋,
3)只有那些在五分之一英里内在任何道路上体验到小于某一阈值交
通流量并且被预测在未来10年保持该交通流量级别之下的房屋,
4)只有那些在一年中的上午9:15之后的任何时间都不在高山的阴影
里的房屋,
5)只有那些在地产处具有足够的原有树木以便在10年时间内,树木
将遮蔽屋顶的至少50%的面积的房屋,
6)等等。
这样的房地产搜索不能通过使用常规技术来轻松地实现。在这些示例
中的每一个中,被请求的房屋搜索数据可能不存在,但是,此处所描述的
原理可以允许当搜索正在被执行时在运行时生成各种自定义参数的搜索数
据。同样,搜索还可以利用预先被求解的任何搜索数据。这允许为用户提
供各种搜索和探查能力,并打开探索要被解决的问题的全新的方式。现在
将描述更多关于支持这些类型的搜索的基础数据驱动的分析法机制。
传统上,交互式视图合成应用程序的生命周期涉及两个关键时间:创
作时间和使用时间。在创作时,交互式视图合成应用程序的功能由程序员
编码以提供所需领域特定的交互式视图合成。例如,室内设计应用程序的
作者(例如,通常是计算机程序员)可能对允许用户执行室内设计专用的
有限动作集的应用程序编写代码。
在使用时,用户(例如,或许是业主或专业室内设计师)可以使用该
应用程序来执行被硬编码到该应用程序中的一组有限动作中的任何一个或
多个动作。在室内设计应用程序示例中,用户可以指定被显示的虚拟房间
的尺寸,向房间添加家具及其他室内设计组件,或许旋转视图以获得房间
的各种角度,设置每一项目的颜色,等等。然而,除非用户是不介意对室
内设计应用程序进行反向工程和修改的程序员,否则用户仅限于被应用程
序作者允许的有限动作集。例如,除非由应用程序提供,用户将不能使用
应用程序自动地弄清楚哪一种窗户布局会使环境噪声最小化,根据“风水”
规则房间布局表现得如何,或最小化太阳能贡献。
然而,在图2的管道环境200中,创作组件240被用来向现有管道201
提供数据,在现有管道201中,正是该数据驱动从定义输入数据,到定义
分析模型,到定义在视图合成中如何可视化分析法的结果的整个过程。因
此,不必执行任何代码编写就能使管道201适应各种领域和问题中的任何
一个。只有提供给管道201的数据才是需要改变的,以便应用管道201以
从不同问题领域可视化不同视图合成,或者或许调整对于现有领域的问题
求解。管道环境200还可包括分类组件260,该分类组件260组织、分类所
提供的数据,并将其与管道201相关联。分类组件260可以对领域敏感。
如此,室内设计领域、公路设计领域、建筑学领域、“风水”领域中每一
个都可以具有可以被用来在数据中导航的不同的分类。这可以是有用的,
因为,如下文所描述的,由于其中对管道环境200可用的数据集可能不断
增加的合成活动,可以有大量的可用数据供筛选。
此外,由于数据可以在使用时(即,运行时)以及在创作时改变,所
以可以在运行时修改和/或扩展模型。如此,在创作模型和运行该模型之间
有较少的(如果有的话)区别。由于所有创作都涉及编辑数据项,并且由
于软件从数据运行其所有的行为,所以对数据的每个改变都立即影响行为,
无需重新编码和重新编译。
管道环境200还包括用户交互响应模块250,该模块检测用户何时与
显示的视图合成进行交互,并随后确定作为响应执行什么操作。例如,某
些类型的交互可能不需要提供给管道201的数据的变化,并且因此不需要
对视图合成进行更改。其他类型的交互可能改变数据211,221,或231中
的一个或多个。在该情况下,此新的或经过修改的数据可能导致新输入数
据被提供给数据部分210,可能需要分析法部分220对该输入数据进行重新
分析,和/或可能需要视图部分230对视图合成进行重新可视化。
因此,管道201可以用来将数据驱动的分析可视化扩展到或许无限多
个问题领域,或至少各种各样的问题领域。此外,不必是程序员即可改变
视图合成以解决各种问题。现在将参考图3的数据部分300,图4的分析法
部分400,以及图5的视图部分500来按该顺序描述管道201的数据部分
210,分析法部分220和视图部分230中的每一部分。另外,对数据的分类
是领域特定的,如此,允许对数据的组织对于领域中操作的那些数据更直
观。从图3到5显而易见地看出,管道201可以构建成一系列转换组件,
其中这些组件各自1)接收某些适当的输入数据,2)响应于该输入数据,
执行某一动作(诸如对输入数据执行转换),以及3)输出随后充当下一
转换组件的输入数据的数据。
管道201可以在客户机上、在服务器上实现,或甚至可以分布在客户
机和服务器之间,这没有限制。例如,管道201可以在服务器上实现,并
提供呈现指令作为输出。客户机侧的浏览器可以只根据从服务器接收到的
呈现指令来进行呈现。在另一方面,管道201可以被包含在客户机上,创
作和/或使用在客户机上执行。即使管道201完全在客户机上,管道201仍
可以搜索客户机外部的数据源以查找适当的信息(例如,模型、连接器、
规范化器、模式,及其他)。还有提供这两种方法的混合的实施例。例如,
在一种这样的混合方法中,模型主存在服务器上,但是,web浏览器模块
被动态地在客户机上加载,以便使一些模型的交互和查看逻辑在客户机上
运行(如此,允许更丰富的并且更快的交互和视图)。
图3只示出了图2的管道201的数据部分300的许多可能的实施例中
的一种。数据部分300的各功能中的一个功能是以规范格式提供数据,该
规范格式符合参考图4所讨论的管道的分析法部分400所理解的模式。数
据部分包括访问异构数据301的数据访问组件310。输入数据301在数据能
(但是不必)以规范形式呈现给数据访问组件310的意义上可以是“异构
的”。事实上,构建数据部分300以使得异构数据可以是各种格式。可以
由模型访问和操作的不同种类的领域数据的示例包括文本和XML文档、
表、列表、分层结构(树)、SQL数据库查询结果、BI(商务智能)立方
查询结果、各种格式的诸如2D图形和3D视觉模型之类的图形信息、以及
其组合(即,合成)。此外,可以通过提供要被访问的数据的定义(例如,
模式)来声明性地扩展可以被访问的数据的种类。因此,数据部分300允
许到模型的各种异构输入,还支持可访问的数据类型的运行时、声明性扩
展。
在一个实施例中,数据访问部分300包括用于从许多不同的数据源获
取数据的许多连接器。由于连接器的主要功能中的一个是将对应的数据置
于规范形式,这样的连接器在下文以及在附图中常常被称为“规范化器”。
每一规范化器都可以理解其对应的数据源的专用应用程序编程接口(API)。
规范化器还可以包括用于与该对应的API进行接口以从数据源读取和/或向
数据源写入数据的对应逻辑。如此,规范化器在外部数据源和数据的存储
器映像之间充当桥梁。
数据访问组件310评估输入数据301。如果输入数据已经是规范的,
并且因此可以由分析法部分400处理,则输入数据可以作为规范数据340
被直接提供,以便输入至分析法部分400。
然而,如果输入数据301不是规范的,则适当的数据规范化组件330
能够将输入数据301转换为规范格式。数据规范化组件330实际上是数据
规范化组件330的集合,每一个数据规范化组件330都能够将具有特定特
征的输入数据转换为规范形式。规范化组件330的集合被示为包括四个规
范化组件331、332、333和334。然而,省略号335表示也可以有其他数量
的规范化组件,或许甚至比所示出的四个更少。
输入数据301甚至可以包括规范化器本身以及相关数据特征的标识。
数据部分300然后可以注册相关数据特征,并向数据规范化组件集合330
提供规范化组件,其中可以向可用的规范化组件添加规范化组件。如果稍
后接收到具有那些相关特征的输入数据,则数据部分310可以将该输入数
据分配给相关的规范化组件。也可以从外部源,诸如从web上的定义的组
件库动态地查找规范化组件。例如,如果给定数据源的模式是已知的,但
是所需的规范化器不存在,则可以从外部组件库定位规范化器,假设可以
找到这样的库并且其中包含所需的组件。该管道也可以解析其模式仍未知
的数据,并将解析结果与已知组件库中的模式信息进行比较,以尝试对该
数据的类型进行动态判断,并且因此定位所需的规范化器组件。
可另选地,并非输入数据包括所有规范化组件,输入数据可以改为提
供定义了规范化转换的转换定义。集合330然后可以被配置成将该转换定
义转换为对应的规范化组件,该规范化组件与零个或更多个标准默认规范
化转换一起实施转换。这表示其中数据部分300消费输入数据并且不沿着
管道向下提供对应的规范化的数据的情况的示例。然而,在或许大多数情
况下,输入数据301导致生成对应的规范化的数据340。
在一个实施例中,数据访问组件310可以被配置成在输入数据的文件
类型和/或格式类型的基础上将输入数据分配给数据规范化组件。其他特征
可包括例如输入数据的源。可以将默认规范化组件分配给没有指定的对应
的规范化组件的输入数据。默认规范化组件可以应用一组规则以尝试将输
入数据规范化。如果默认规范化组件不能将该数据规范化,则该默认规范
化组件可以触发图2的创作组件240,提示用户提供输入数据的模式定义。
如果模式定义还不存在,则创作组件240可以呈现模式定义助手,以帮助
作者生成可以用来将输入数据转换为规范形式的对应的模式定义。一旦数
据处于规范形式,则伴随该数据的模式提供对该数据的足够描述,使得管
道201其余部分不需要新代码来解释该数据。相反,管道201包括能够根
据可通过可访问的模式声明语言来表达的任何模式来解释数据的代码。
一种类型的数据是数据流对象,如参考图6所示出的和描述的数据流
对象600。数据流对象600包括枚举模块601,该枚举模块601能够枚举数
据流602内的与数据流对象相关联的某一范围。该范围可以事实上包括数
据流602的整个范围。另一方面,数据流602可以是“伪无限”或“部分
地伪无限”数据流。在本描述和在权利要求书中,“伪无限”数据流是太
大难以完全与正在处理数据流对象600的计算系统的易失性存储器匹配的
数据流。“部分地伪无限”数据流被定义为将占据正在处理数据流对象的
计算系统的易失性存储器的至少二分之一的数据流。枚举模块601可以响
应于来自外部模块的请求,只枚举数据流的一部分,诸如,例如,图2的
数据部分210、分析法部分220,或视图部分230。枚举模块601可以要求
枚举从数据流的第一元素开始。另一方面,枚举模块601可以允许枚举从
数据流的任何其他部分开始(即,可以允许枚举中间流),而无需首先从
数据流的开始处进行枚举。
数据流对象600能够基于与数据流的被请求的成员元素相关联的属性
来标识数据流的被请求的部分。在该情况下,数据流对象可包括处理请求
并标识数据流的具有被请求的属性的所有成员元素的逻辑。例如,请求可
以是针对一个城市的在特定经度和纬度坐标从1000英尺的高度往下看可见
的所有元素。另一方面,数据流对象还能够对对于成员元素的明示请求作
出响应。
作为示例,伪无限数据流可以是对真实或虚构的城市的描述,包括对
该城市内的所有项目的描述,包括对这些项目中的每一个的细节的每个可
以想象的级别的描述。该信息可能太多,难以一次性地全部在存储器中表
示。如此,数据流对象600可以只提供呈现当前视图所需的相关信息。例
如,如果城市正在100英里的高度被查看,或许只有城市的边界信息是相
关的。如果城市的一部分正在10英里的高度被查看,或许只提供有关较大
的对象(如机场、停车场、水库等等,并且只有在视图内的情况下)的信
息。如果城市的一部分正在一英里的高度被查看,或许由数据流对象提供
呈现在视图内的街道和建筑物所需的信息。如果城市的一部分正在一千英
里的高度被查看,或许可以提供呈现街道的更多细节(即,车道的数量、
街道的名称、箭头,等等),以及有关建筑物的更多细节(纹理和窗户位
置等等)所需的信息。自然,当发生此放大操作时,信息涉及小得多的地
理区。在一百英尺视图中,数据流可以提供关于灌木林、检查井、排水沟、
梯子、自动售货机、人行横道等等的信息。对于常规计算机来说,可能难
以为整个城市将这种数据量保存在存储器中。
作为另一个示例,伪无限数据流可以在字面上是无限的,如在不规则
碎片形的情况下。不规则碎片形是用数学方法定义的,以便不管在不规则
碎片形的一部分中放大多少,始终都能看得见重复的形状。始终可以进一
步,进一步地,无限地放大。相同的原理也适用于缩小。需要花无限的信
息量来在字面上表示这样的不规则碎片形的几何形状。然而,数据流对象
可能具有如何用数学方法来定义不规则碎片形的概念。如果数据流对象被
要求以特定细节级别产生不规则碎片形,则数据流对象可以计算适用于该
特定细节级别的数据,并提供该数据。
如此,伪无限数据对象能够生成被请求的数据范围,无论是通过评估
定义细节的表达式和/或通过访问数据流对象外部的数据。这样的范围是被
提供到管道201的分析法部分400的分层数据的示例。在一个实施例中,
用于与数据流对象进行通信的协议可以是相同的,不管数据流本身有多大。
如此,作者可以对与较小数据流对象相关联的数据流对象测试模型。那么,
一旦其他人对模型充满信心,作者可以只将数据流对象切换到与无限数据
流、伪无限数据流或部分地伪无限数据流相关联的数据流对象,而无需改
变模型本身。
不管规范数据340的形式如何,规范数据340是作为来自数据部分300
的输出数据,并作为分析法部分400的输入数据来提供的。规范数据可包
括其中包括各种数据类型的字段。例如,字段可包括简单数据类型,如整
数、浮点数字、字符串、向量、数组、集合、分层结构、文本、XML文档、
表、列表、SQL数据库查询结果、BI(商务智能)立方查询结果、各种格
式的诸如2D图形和3D视觉模型之类的图形信息,或者甚至这些各种数据
类型的复杂组合。作为另一个优点,规范化过程能够规范化各种输入数据。
此外,数据部分300能够接受的输入数据的种类也是可扩展的。这在如在
本说明书中稍后所讨论的组合多个模型的情况下是有帮助的。
图4示出了表示图2的管道201的分析法部分220的示例的分析法部
分400。数据部分300将规范化的数据401提供给数据-模型绑定组件410。
规范化的数据401可以具有任何规范化的形式,以及任意数量的参数,参
数的形式和数量甚至可以在一段输入数据与另一段输入数据之间不同。然
而,为了讨论,规范数据401具有字段402A到402H,它们此处可以统称
为“字段402”。
另一方面,分析法部分400包括许多模型参数411。模型参数的类型
和数量可以随着模型不同而不同。然而,为了讨论特定示例,将讨论包括
模型参数411A、411B、411C和411D的模型参数411。在一个实施例中,
可以在不使用命令性编码的情况下声明性地定义模型参数的标识以及模型
参数之间的分析关系。
数据-模型绑定组件410在规范化的数据字段402和模型参数之间调
停,由此在字段和参数之间提供绑定。在此情况下,将数据字段402B绑定
到模型参数411A,如由箭头403A所表示的。换言之,数据字段402B的
值被用来填充模型参数411A。同样,在此示例中,数据字段402E被绑定
到模型参数411B(如由箭头403B所表示的),而数据字段402H被绑定到
模型参数411C(如由箭头403C所表示的)。
数据字段402A、402C、402D、402F和402G未被示为绑定到模型参
数中的任何一个。这将强调,并非输入数据中的所有数据字段都始终需要
被用作模型参数。在一个实施例中,这些数据字段中的一个或多个可以用
来向数据-模型绑定组件410提供与来自规范化的数据(对于此规范化的数
据,或者或许任何将来类似的规范化的数据)的哪些字段将被绑定到哪一
个模型参数有关的指令。这表示可以提供给图2的分析法部分220的分析
法数据221的类型的示例。可以按许多方式形成来自规范化的数据中的哪
些数据字段被绑定到哪些模型参数的定义。例如,绑定可以1)由作者在创
作时显式地设置,2)由用户在使用时显式地地设置(服从由作者施加的任
何限制),3)由创作组件240基于算法启发式法自动绑定,和/或4)当确
定无法通过算法进行绑定时,由创作组件提示作者和/或用户指定绑定。如
此,也可以作为模型逻辑本身的一部分来解决绑定。
作者定义哪些数据字段被映射到哪些模型参数的能力给予作者能够使
用作者定义模型参数用起来舒服的符号的巨大灵活性。例如,如果一个模
型参数表示压力,则作者可以将该模型参数命名为“Pressure”或“P”或
对作者有意义的任何其他符号。作者甚至可以重命名模型参数,在一个实
施例中,这可能导致数据模型绑定组件410自动地更新以允许以前绑定到
旧名称的模型参数的绑定被改为绑定到新名称的模型参数,从而保留所需
绑定。这种用于绑定的机制还允许绑定在运行时被声明性地改变。
模型参数411D被示为带有星号,以强调数据-模型绑定组件410未向
模型参数411D分配值。因此,模型参数411D仍然未知。换言之,未向模
型参数411D分配值。
建模组件420执行许多功能。首先,建模组件420定义模型参数411
之间的分析关系。分析关系421被分类为三个一般类别,包括方程431、规
则432和约束433。然而,解算器的列表是可扩展的。例如,在一个实施例
中,可以作为分析关系的一部分来包括一个或多个仿真,假设提供了对应
的仿真引擎并将其注册为解算器。
如此处所使用的术语“方程”与在数学领域中使用的该术语一致。
如此处所使用的术语“规则”表示条件语句,其中如果满足了一个或
多个条件(条件语句的条件(即“if”)部分),则将采取一个或多个动
作(条件语句的结果(即“then”)部分)。如果在条件语句中表达一个
或多个模型参数,或者在结果语句中表达了一个或多个模型参数,则规则
被应用于这些模型参数。
如此处所使用的术语“约束”表示限制被应用于一个或多个模型参数。
例如,在城市规划模型中,特定房屋元素可被限于置于具有总体可能的分
区目的地的子集的地图位置上。桥元素可被限于低于某一最大长度或一定
数量的车道。
熟悉该模型的作者可以提供适用于该模型的这些方程、规则和约束的
表达式。在仿真的情况下,作者可以提供适当的仿真引擎,该仿真引擎提
供模型参数之间的适当的仿真关系。建模组件420可以提供供作者提供方
程、规则和约束的自然的符号表达式的机制。例如,热力学相关模型的作
者可以简单地从热力学教科书复制和粘贴方程。将模型参数绑定到数据字
段的能力允许作者使用该作者熟悉的任何符号(如在作者依赖的教科书中
所使用的原样的符号)或作者希望使用的确切符号。
在求解之前,建模组件420还标识将求解哪些模型参数(即,此后称
为“输出模型变量”(单数情况下)、或“诸输出模型变量”(复数情况
下)、或“(诸)输出模型变量”(一个或多个输出模型变量的情况下))。
(诸)输出模型变量可以是未知参数,或者它们可以是已知模型参数,其
中已知模型参数的值在求解操作中变化。在图4的示例中,在数据-模型绑
定操作之后,模型参数411A、411B和411C是已知的,而模型参数411D
是未知的。因此,未知模型参数411D可以是诸输出模型变量中的一个。作
为替换或补充,已知模型参数411A、411B和411C中的一个或多个也可以
是输出模型变量。然后,如果可能的话,解算器440求解(诸)输出模型
变量。在下面所描述的一个实施例中,解算器440能够求解各种输出模型
变量,甚至在单个模型内,只要提供足够的输入模型变量以允许求解操作
得以执行。输入模型变量可以是,例如,其值在求解操作过程中不会变化
的已知模型参数。例如,在图4中,如果模型参数411A和411D是输入模
型变量,则解算器可以改为求解输出模型变量411B和411C。在一个实施
例中,解算器可以输出单个模型参数的许多不同数据类型中的任何一个。
例如,不管操作数是整数、浮点、向量、或矩阵,某些方程运算(如加法、
减法等等)都适用。
虽然无论如何不是优选实施例,但是,有一个其中解算器440是通过
电子表格程序来实现的实施例,电子表格程序中有多个电子表格,无论那
些多个电子表格是位于单个电子表格文件中的多个工作表中和/或还是那些
多个电子表格位于不同的电子表格文件中。在典型的电子表格中,有多个
单元格。每一单元格都可以具有文字值或可以被解析成文字值的相关联的
表达式。如果表达式可能依赖于来自其他单元格的值,则这些值也可能已
通过与其他单元格相关联的相对应的表达式来解析。
当在一个方向求解时,电子表格是有效的,其中,输入模型参数和输
出模型参数是已知的。然而,归属于解算器440的优点之一是,取决于哪
些模型参数被标识为输入参数、哪些模型参数被标识为输出模型参数而允
许不同的求解方向,求解方向或许随着输入模型参数和/或输出模型参数的
身份的变化而从一个求解方向变为下一个方向。这可以通过为每一个可能
的求解方向分配不同的电子表格在电子表格程序中得以解决。例如,如果
有二十个可能的求解方向,则总共可以有20个电子表格,每一个求解方向
有一个电子表格。
每一电子表格都具有适当地链接的单元格,带有用于在该方向求解的
适当的表达式。在此实施例中,电子表格程序内部的或者外部的宏或其他
可执行程序可以执行为建模组件420所描述的确定哪些参数是输入参数以
及哪些参数将被求解的功能,在给定该求解方向的情况下,选择适当的电
子表格,并为所选求解方向,填充适当的电子表格字段。一旦适当的输入
参数字段被填充,电子表格将求解输出模型参数,并使用电子表格中的链
接的表达式,将值填充到适当的输出模型参数字段。然而,回想一下,电
子表格实现不是实施此处所描述的原理的优选实施例。例如,如果有数百
个可能的求解方向,则在一个电子表格专用于每一求解方向的实施例中可
以有数百个电子表格。如此,如果分析法将在此电子表格实施例中变化,
则此电子表格实施例将涉及手动筛选每一个电子表格以查看应该如何改变
链接的分析表达式。本描述将更远离特定电子表格实施例,并再一次进入
对解算器400功能的一般讨论。
在一个实施例中,甚至在解算器440不能求解出特定输出模型变量的
情况下,解算器400仍可以呈现该输出模型变量的部分解,即使对于实际
数值结果(或任何所求解的数据类型)的完全解是不可能的。这允许管道
通过提示作者需要什么信息才能取得完全解来促进增量开发。这还有助于
消除创作时和使用时之间的区别,因为在整个各种创作阶段至少部分解是
可用的。举一抽象示例,假设分析法模型包括方程a=b+c+d。现在假设a,
c和d是输出模型变量,而b是具有已知值5(在此情况下,整数)的输
入模型变量。在求解过程中,解算器440只能够求解输出模型变量中的一
个“d”,并将值6(整数)分配给叫做“d”的模型参数,但是解算器440
不能求解“c”。因为“a”依赖于“c”,叫做“a”的模型参数还仍是未知
的,并未被求解。在此情况下,代替将整数值分配给“a”,解算器可以求
部分解,并将串值“c+11”输出到模型参数“a”。如上文所提及的,当领
域专家正在创作分析法模型时,这可能特别有帮助,并在本质上用于提供
和模型参数“a”的内容有关的部分信息,以及将用于提示作者需要提供允
许求解“c”模型参数的某个进一步的模型分析法。此部分解结果可以在视
图合成中以某种方式输出,以允许领域专家看到该部分结果。
在图4中以简化形式示出了解算器440。然而,解算器440可以指导
多个组成解算器的操作,如参考图10到16所描述的。在图4中,建模组
件420随后使模型参数411(包括现在已知的和已求解的输出模型变量)可
用作输出以提供给图5的视图部分500。
图5示出了表示图2的视图部分230的示例的视图部分500。视图部
分500从图4的分析法部分400接收模型参数411。视图部分还包括包含视
图组件集合的视图组件储存库520。例如,此示例中的视图组件储存库520
被示为包括视图组件521到524,但视图组件储存库520可以包含任意数量
的视图组件。每一个视图组件都可包括零个或更多个输入参数。例如,视
图组件521不包括任何输入参数。然而,视图组件522包括两个输入参数
542A和542B。视图组件523包括一个输入参数543,且视图组件524包括
一个输入参数544。也就是说,这只是一个示例。输入参数可以,但是不必
影响呈现视觉项目的方式。视图组件521不包括任何输入参数的事实强调
了可以有不参考任何模型参数而生成的视图。考虑只包括不变的固定(内
置)数据的视图。这样的视图可以例如构成用户的参考信息。可另选地,
考虑只提供浏览目录的一种方式的视图,以便可以从其中选择项目以便导
入到模型中。
每一视图组件521到524都包括对应的逻辑或与对应的逻辑相关联,
当由视图合成组件540使用对应的视图组件输入参数(如果有的话)来执
行该逻辑时,使得对应的视图项目被置于虚拟空间550中。该虚拟项目可
以是静态图像或对象,或者可以是动态的动画虚拟项目或对象。例如,视
图组件521到524中的每一个都与对应的逻辑531到534相关联,当这些
逻辑被执行时使得对应的虚拟项目551到554分别被呈现在虚拟空间550
中。虚拟项目被示为简单形状。然而,虚拟项目在形式上可能十分复杂,
或许甚至包括动画。在此描述中,当视图项目被呈现在虚拟空间时,这意
味着视图合成组件已经创作了足够的指令,当这些指令被提供给呈现引擎
时,呈现引擎能够在显示器上的指定位置并以指定的方式显示该视图项目。
通过使用例如图2的创作组件240,视图组件521到524或许甚至作
为视图数据提供给视图部分500。如上文参考图6所描述的,视图数据甚至
可以是由数据流对象所提供的伪无限或部分地伪无限的数据流的范围。例
如,创作组件240可以提供允许作者从多个几何形状中选择或者可能构造
其他几何形状的选择器。作者也可以指定每一个视图组件的输入参数的类
型,而一些输入参数可以是视图部分500使用的默认输入参数。也可以给
与每一视图组件521到524相关联的逻辑提供视图数据,和/或该逻辑也可
以包括由视图部分500本身所提供的一些默认功能。
视图部分500包括被配置成将至少一些模型参数绑定到视图组件521
到524的对应的输入参数的模型-视图绑定组件510。例如,模型参数411A
被绑定到视图组件522的输入参数542A,如箭头511A所示。模型参数411B
被绑定到视图组件522的输入参数542B,如箭头511B所示。同样,模型
参数411D被分别绑定到视图组件523和524的输入参数543和544,如箭
头511C所示。模型参数411C未被示为绑定到任何对应的视图组件参数,
强调了并非所有的模型参数都需要被管道的视图部分使用,即使那些模型
参数在分析法部分是必需的。同样,模型参数411D被示为绑定到视图组件
的两个不同的输入参数,表示模型参数可以被绑定到多个视图组件参数。
在一个实施例中,模型参数和视图组件参数之间的绑定的定义可以通过下
列方式制定:1)由作者在创作时显式地设置,2)由用户在使用时显式地地
设置(服从由作者施加的任何限制),3)由创作组件240基于算法启发式
法自动绑定,和/或4)当确定无法通过算法进行绑定时,由创作组件提示
作者和/或用户指定绑定。
再一次,尽管不是首选的,某些或全部视图部分500可以通过电子表
格来实现。例如,单个电子表格可以充当一个或多个视图组件的基础,视
图组件的相应的输入参数被在相对应的电子表格单元格中表示。视图组件
的相关联的视图构造逻辑可以至少部分地使用电子表格程序内的链接的表
达式来表示。然后,可以使用电子表格程序、宏或某种其他可执行程序的
呈现功能来完成相对应的视觉项目的呈现。然而,如上文所提及的,这种
基于电子表格的实现不是优选实施例,如此,此描述将回到视图部分500
的更一般的实施例。
如上文所提及的,视图项目可包括动画。举一个简单示例,考虑例如
绘制了一个公司在给定时间点(如给定日历季度)的历史和计划收入、广
告费用以及按销售区域的利润的柱状图。可以在所需时间跨度内为每一日
历季度绘制柱状图。现在,想象您绘制这些图表中的一个,比方说时间跨
度中的最早时间的那一个,然后每隔半秒将它替换为下一时间跨度的图表
(例如,下一季度)。结果将是随着动画的进行,表示每一个区域的利润、
销售以及广告费的柱线的高度发生变化。在此示例中,每一个时段的图表
都是动画中的“单元”,其中该单元示出了移动之间的瞬间,其中顺序示
出的单元集合模仿移动。常规动画模型允许使用内置的硬编码的图表类型
来随着时间的推移而产生动画。
然而,相比之下,通过使用管道201,可以使任何类型的视觉项目动
画化,并且可以通过改变视觉组件的参数中的任何一个或任何组合来驱动
该动画。返回到上面的柱状图示例,想象我们按广告费来动画化,而非按
时间动画化。此动画中的每一“单元”是示出了对于给定广告费的值的随
着时间的推移的销售和利润的柱状图。如此,随着广告费变化,柱线响应
于广告费的变化而增长和收缩。
动画数据显示的力量是它们使得什么参数对其他参数的变化最敏感变
得非常显而易见,因为您立即看到响应于动画参数的变化,每一个参数的
值如何快速地变化以及变化到什么程度。
管道201还由于下列特征而在其动画能力方面与众不同:
首先,可以通过模型的分析法来计算动画变量的步骤的顺序,对照只
是预定义的范围内的固定步骤顺序。例如,在作为动画变量来改变广告费
的示例中,想象所指定的将是“通过广告费来进行动画化,其中对于每一
个步骤,广告费增大5%”或“其中广告费是该步骤的总费用的10%”。一
个复杂得多的示例是“通过广告费来进行动画化,其中广告费被优化以便
使销售随时间的变化率最大化。”换言之,解算器将确定随时间(即,对
于诸如季度之类的每一个连续的时间段)的广告花费的一组步骤,以使得
销售的增长率最大化。这里,用户大概不仅希望看到通过改变广告费可以
使销售增长多快,而且希望了解实现此增长的每季度广告费的量(可以作
为合成视图的一部分来绘制该值的序列)。
其次,可以使任何类型的视觉项目动画化,而不只是传统的数据图表。
例如,考虑喷气式发动机的计算机辅助设计(CAD)模型,该模型1)将
通过风速参数动画化,2)其中,涡轮机的旋转速度是风速的函数,并且3)
其中,涡轮机轴承的温度是风速的函数。喷气式发动机对涡轮叶片不受损
或者轴承过热之前涡轮机可以旋转得多快具有限制。如此,在此动画中,
我们期望随着风速改变,涡轮叶片和轴承的颜色应该从蓝色(安全)变为
红色(临界)。“安全”和“临界”涡轮机RPM的值和轴承温度可以由该
模型基于那些部件的物理特征来计算。现在,随着动画在定义的范围内改
变风速,我们看到涡轮叶片和轴承都改变了颜色。现在有趣的是注意哪一
个首先到达临界,二者中的任何一个是否经受突然(失控)达到临界。这
些类型的效果难以通过查看图表或查看图形的序列来辨别,但是在动画中
立即变得显而易见。这只是通过任意参数(风速)使任意视觉项目(CAD
模型)动画化的一个示例,动画仍影响其他任意参数(涡轮机RPM和轴承
温度)。可以根据要充当动画变量的任何所需的参数来使任何视觉项目的
任何参数动画化。
第三,可以在中间停止管道201,以便可以由用户修改数据和参数,
然后重新启动或恢复动画。如此,例如,在喷气式发动机示例中,如果在
给定风速看到失控加热开始,则用户可以在失控时停止动画,修改某些发
动机设计标准,诸如轴承或轴承表面材料的类型,并且随后继续动画以查
看该改变的效果。
如同此处所讨论的其他功能一样,可以由作者来定义动画,和/或让用
户操纵以测试各种情形。例如,模型可以被创作成允许某些视觉项目由用
户根据用户自己选定的参数和/或在用户选定的动画变量的数据范围内而动
画化(包括指定计算出的范围应该是所希望的能力)。这样的动画也可以
并排地显示,如在其他“假设分析(what-if)”比较显示中那样。例如,
用户可以在带有将来的不同的流行利率或不同的广告费用斜率的两种情形
下比较按时间动画化的销售和利润的随时间的动画。在喷气式发动机示例
中,用户可以比较改变轴承设计之前和之后情况的发动机的动画。
此时,将参考图7描述如何使用合成框架来实际构建视图合成的具体
示例,图7示出了包括房间布局701(在房间内布置了家具)并包括“风水”
计702的视图合成的3-D呈现700。提供此示例只是为了示出此处所描述的
原理如何应用于任何任意的视图合成,而不管是什么领域。因此,图7的
示例,以及此处所描述的任何其他示例视图合成,应该被严格地视为只是
允许通过参考非限制性的具体示例来更全面地理解抽象概念的示例,而不
是限定本发明的更广泛的范围。此处所描述的原理可以适用于构建无数种
类的视图合成。尽管如此,参考具体示例可以阐明更广泛的抽象原理。
图8示出了用于生成视图构造的方法800的流程图。方法800可以通
过图2的管道环境200来执行,因而将频繁地参考图2的管道环境200,以
及参考图3到5来对其进行描述,图3到5各自示出了图2的管道的各特
定部分。尽管可以执行方法800来构建任何视图合成,将参考图7的视图
合成700来描述方法800。方法800的一些动作可由图2的数据部分210
来执行,并在图8的左栏在标题“数据”下列出。方法800的其他动作可
由图2的分析法部分220来执行,并在图8的左侧第二栏在标题“分析法”
下列出。该方法的其他动作可以由图2的视图部分230来执行,并在图8
的右侧第二栏在标题“视图”下列出。动作中的一个动作可由呈现模块来
执行,并在图8右栏中在标题“其他”下列出。
参考图8,数据部分访问至少共同地影响将显示什么视觉项目或如何
显示视觉项目中的给定的一个或多个视觉项目的输入数据(动作811)。例
如,参考图7,输入数据可包括家具的每一个项目的视图组件。例如,床、
椅子、植物、桌子、花中的每一个,甚至房间本身都可以由对应的视图组
件来表示。视图组件可以具有适于该视图组件的输入参数。例如,如果使
用动画,则一些输入参数可能影响动画的流动。一些参数可能影响视觉项
目的显示,而某些参数可能不影响。
例如,房间本身可以是一视图组件。一些输入参数可包括房间的尺寸、
房间的朝向、墙壁颜色、墙壁纹理、地板颜色、地板类型、地板纹理、房
间内的光源的位置和电源等等。也可能有不一定反映在此视图合成中,但
是可能反映在房间组件的其他视图和使用中的房间参数。例如,房间参数
可能具有用度、分以及秒经度和纬度表示的房间的位置。房间参数也可以
包括房间组件的作者的标识,以及房间的平均租金。
房间内的各种组件也可以由对应的参数化的视图组件来表示。例如,
每一植物都可以配置有指定盆风格、盆颜色、盆尺寸、植物颜色、植物弹
性、植物对日光的依赖性、植物的每日摄水量、植物每日的氧气产生量、
植物位置等等的输入参数。同样,取决于正在显示的东西的性质,这些参
数中的某些参数可能影响如何呈现显示的方式,而其他参数可能不影响。
“风水”计702也可以是视图组件。该计量表可包括诸如直径、该计
量表的直径中所包含的楔子(wedge)的数量、文本颜色等等之类的输入参
数。“风水”计的各种楔子也可以是视图组件。在该情况下,对视图组件
的输入参数可以是标题(例如,水、山、雷、风、火、地、湖、天)、或
许是出现在楔子中的图形、色调等等。
分析法部分将输入数据绑定到模型参数(动作821),确定输出模型
变量(动作822),并使用模型参数之间的模型专用的分析关系来求解输出
模型变量(动作823)。上文已经讨论了动作821的绑定操作,该操作基本
上允许作者灵活地使用模型作者舒服的符号来定义模型分析法方程、规则
和约束。参考图10到16所描述的更加复杂的解算器可以旨在求解输出模
型变量(动作823)。
输出模型变量的标识可以在一个求解操作与下一求解操作之间不同。
即使模型参数可以保持相同,哪些模型参数的标识是输出模型变量将取决
于将绑定到特定模型参数的数据的可用性。这在允许用户在给定视图合成
中执行“假设分析”方面具有显著暗示。
例如,在图7的“风水”房间示例中,假设用户购买了一把新椅子放
在他们的起居室。用户可以将房间的设计作为数据提供给管道。这可以通
过用创作组件提示用户输入房间尺寸来促进,或许还提供允许用户选择虚
拟家具以拖放到虚拟房间中的、实际家具被置于实际房间中的适当位置的
选择工具。然后,用户可以选择可以被编辑的一件家具,使其具有用户所
购买的新椅子的特征。然后,用户可以将该椅子拖放到房间中。“风水”
计702将自动地更新。在此情况下,椅子的位置及其他属性将是输入模型
变量,而“风水”分数将是输出模型变量。随着用户将虚拟椅子拖放到各
个位置,“风水”计的“风水”分数将更新,如此,用户可以测试将虚拟
椅子放在各个位置的“风水”结果。为避免用户必须将椅子拖放到每个可
能的位置以看出哪一个位置提供最佳的“风水”,用户可以获得局部视觉
线索(诸如,例如,梯度线或箭头),这些局部视觉线索告诉用户从其当
前位置在特定方向移动椅子使得“风水”更好还是更差,以及好多少或差
多少。
然而,用户也可以进行在常规视图合成中未听说过的别的操作。用户
可以实际改变输出模型变量。例如,用户可以指示“风水”计中的所需的
“风水”分数,并将虚拟椅子的位置保留为输出模型变量。然后,解算器
将求解输出模型变量,并提供椅子的将至少达到指定的“风水”分数的一
个或多个建议位置。用户可以选择使多个参数成为输出模型变量,而系统
可以提供对这些输出模型变量的多个解。这通过参考图10到16更详细地
描述的复杂解算器来促进。
返回到图8,一旦求解了输出模型变量,则将模型参数绑定到参数化
的视图组件的输入参数(动作831)。例如,在“风水”示例中,在求解了
未知“风水”分数之后,将分数作为输入参数绑定到“风水”计视图组件,
或者或许绑定到该“风水”计中所包含的适当的楔子。可另选地,如果“风
水”分数是输入模型变量,则可以求解虚拟椅子的位置,并将其作为输入
参数提供给椅子视图组件。
现在将呈现简化示例,该示例示出了解算器如何重新排列方程并改变
一个分析模型的所有被驱动的输入和输出模型变量的指定的原理。用户自
己不必重新排列方程。该简化示例可能不能准确地表示“风水”规则,但
是示出了其原理。假设房间的总“风水”(FS)(FSroom)等于椅子的FS
(FSchair)和植物的FS(FSplant)。假设FSchair等于常数A乘以椅子
与墙的距离d。假设FSplant是常数B。房间的总FS是FSroom=A×d+
B。如果d是输入模型变量,则FSroom是输出模型变量,其显示在“风水”
计上的值随用户改变椅子的位置而改变。现在假设用户点击“风水”计来
使它成为输入模型变量,并将d转换到未知输出模型变量状态。在此情况
下,解算器有效地并在内部将上面的公式重写为d=(FSroom-B)/A。在该
情况下,随着用户在“风水”计上改变所需值FSroom,视图组件可以四处
移动椅子,改变其与墙的距离d。
然后,视图部分通过使用输入参数(如果有的话)执行与该视图组件
相关联的构建逻辑以构建视觉项目的视图(动作832),来或许驱动视图合
成中的视图项目的构建。然后,可以将该视图构造提供给呈现模块,然后
该呈现模块使用该视图构造作为呈现指令(动作841)。
在一个实施例中,构建视图的过程被视为由解算器执行的数据转换。
即,对于给定类型的视图(例如,考虑柱状图),存在着包括规则、方程
以及约束的模型,该模型通过将输入数据转换为可显示的输出数据结构(称
为景物图)来生成视图,该可显示的输出数据结构编码了所有低级几何形
状以及呈现软件所需的相关联属性以驱动图形硬件。在柱状图示例中,输
入数据将是例如将与诸如图表标题、轴标签等事物的属性一起绘制的数据
系列。生成该柱线的模型将具有执行下列操作的规则、方程以及约束:1)统
计该数据系列包括多少条目以便确定要绘制多少柱线,2)计算该数据系列
横跨的范围(最小值,最大值),以便计算诸如每一个轴的比例和起始/最
终值等事物,3)基于前面计算出的缩放因子,计算数据系列中的每一个数
据点的柱线的高度,4)统计图表标题中有多少字符,以便计算标题的起始
位置和大小,以便适当地定位该标题并使其居于图表的中心等等。总而言
之,模型被设计为基于输入数据来计算一组几何形状,这些几何形状被安
置在类型为“景物图”的分层数据结构内。换言之,景物图是模型基于输
入数据来求解的输出变量。如此,作者可以使用该作者用来创作、定制以
及合成任何类型的模型的同一个框架,来设计全新种类的视图、定制的现
有视图,并将预先存在的视图合成为合成图。如此,不是程序员的作者可
以在不编写新代码的情况下创建新的视图。
返回到图2,回想一下用户交互响应模块250检测用户何时与视图合
成进行交互,并使得管道恰当地作出响应。图9示出了用于对用户与视图
合成的交互作出响应的方法900的流程图。具体而言,用户交互响应模块
确定管道的哪些组件应该执行进一步的工作以便重新生成该视图,还向管
道组件提供表示用户交互或至少取决于用户交互的数据。在一个实施例中,
这是通过在相反的(上行)视图/分析法/数据方向上运行并且平行于(下
行)数据/分析法/视图管道的转换管道来完成的。
交互作为事件被张贴到上行管道中。数据/分析法/视图管道中的每一个
变换器都提供处理传入的交互数据的上行变换器。这些变换器可以是空(通
路,其在路径之外得到优化)或者它们可以对要进一步向上游馈送的交互
数据执行变换操作。这在以下方面提供了管道的正面的性能和响应性:1)
对上行转换没有影响的交互行为(诸如对源数据没有效果的视图操纵)可
以在管道中的最适当的(最不上游)点加以处理,2)中间变换器可以在最
终来自更上游的变换器的最后更新之前、通过将启发式地确定的更新发回
到下游来优化视图更新性能。例如,在接收到数据编辑交互时,视图级变
换器可以使立即视图直接更新到视图的景物图中(对于它知道如何解释的
编辑),最后的完整更新稍后来自其中实际编辑了源数据的上游数据变换
器。
当给定视图交互的语义具有到所需的底层数据编辑的非平凡映射时,
中间变换器可以提供所需的上游映射。例如,拖动计算出的结果的图上一
个点可能需要将计算多个源数据项的新值的倒退解,这些源数据项在图上
馈送计算出的值。解算器级上游变换器将能够调用所需解,并将所需的数
据编辑传播到上游。
图9示出了用于对用户与视图构造的交互作出响应的方法900的流程
图。在检测到用户与显示器上的视图合成的呈现进行交互之后(动作901),
首先确定该用户交互是否需要重新生成视图(判定框902)。这可以通过呈
现引擎引发一个由图2的用户交互响应组件250解释的事件来执行。如果
该用户交互不需要重新生成视图(在判定框902中为“否”),则管道不
执行重构视图的任何进一步的动作(动作903),但呈现引擎本身可以对视
图执行某种转换。这样的用户交互的示例可以是用户增大视图构造的呈现
的对比度或旋转该视图构造。由于这些动作可以由呈现引擎本身来执行,
所以管道不需要响应于该用户交互执行重构视图的任何操作。
另一方面,如果确定用户交互的类型需要重新生成视图构造(在判定
框902中为“是”),则由管道重构视图(动作904)。这可能涉及对提供
给管道的数据的某种改变。例如,在“风水”示例中,假设用户将在虚拟
房间内移动虚拟椅子的位置,则虚拟椅子组件的位置参数因而将变化。将
引发一个事件,向分析法部分通知表示虚拟椅子的位置的对应的模型参数
也应该改变。然后,分析法组件将重新求解“风水”分数,重新填充“风
水”计或楔子的对应的输入参数,使得“风水”计利用适于椅子的新位置
的当前“风水”分数来更新。
用户交互可能需要以前已知的模型参数现在是未知数,以前未知的参
数现在是已知的。这是可能要求输入和输出模型变量的指定发生变化以便
以前指定的输入模型变量可能变为输出模型变量以及反之亦然的多个可能
的示例中的一个。在该情况下,分析法部分将求解新输出模型变量,从而
驱动视图合成的重构。
这种类型的重构在构建由不同的数据驱动的视图合成的替换视图时是
有帮助的。然而,这在说故事中也是有帮助的,通过导致在视图中从一个
视图合成变换到下一视图合成。传统上,这种故事讲述是通过以下完成的:
拍摄可视化内的数据的多个不同的配置的快照(意味着可视化也是不同
的),然后,将这些快照变为幻灯片,在幻灯片之间有简单的变换。
然而,这种方法对于比较复杂的视觉不好使,诸如或许“风水”示例
中的房间的可视化,或者或许诸如牵引车之类的机器的复杂片段的可视化。
与图表中所使用的简单可视化不同,在现实世界或其他复杂的可视化中,
有什么可以被改变的大量置换。此外,在视觉形象的可能的变化内有连续
(例如,牵引车臂可以连续地移动到多个位置,该臂移动可以导致许多其
他元素的重新定位(可能连续地)。或者或许,任何数量的家具或其他房
间元素可以被来回移动并换掉。
可以采取的另一种方法是将可视化脚本化为故事画板。这里的麻烦是,
很难使脚本成为数据驱动的,脚本也难以以遵守数据和视觉形象内的约束
及其他关系的方式、预示和允许用户可以进行的对数据和视觉形象的许多
更改,以及随后的传播的对视觉形象的更改。
另一方面,当使用此处所描述的管道201构建时,可以构建非常复杂
的视图合成。每一个视图合成都可以是复杂场景的故事画板中的一个场景。
故事画板可以通过以各种可能的方式中的一种方式来改变视图合成,从一
个场景变换到另一个场景。例如,变换可以涉及下列变换中的一个、某些
或全部:
1)视觉形象变换:在此变换中,驱动视图合成的数据可以保持相同,
但是,用来构建视图合成的视图组件组可以变化。换言之,数据上的视图
会变化。例如,一组数据可包括环境数据,包括温度、风速,及表示诸如
雷击之类的环境活动的序列的其他数据。一个场景可以在飞机穿过该环境
的上下文中表明该数据。故事画板中的下一场景可以讲述经受完全相同的
环境条件的另一架飞机。
2)数据变换:这里,视图组件保持相同。换言之,使视图相同,但是,
数据会影响视觉属性变化,从而改变视图被呈现的方式。例如,数据可以
变化,和/或数据与模型参数的绑定会变化。
3)坐标系统变换。这里,数据以及视图组件组可以保持相同,但是,
坐标系统从一个坐标系统变为另一个坐标系统。
4)目标世界变换。这里,一切可以保持相同,但是目标虚拟世界变化。
例如,一个几何形状可以叠加在另一个几何形状之上。下面将提供几何形
状,以及叠加的几何形状的示例。
解算器框架
图10示出了可以表示图4的解算器440的示例的解算器环境1000。
解算器环境1000可以用软件、硬件或其组合来实现。解算器环境1000包
括管理和协调专门解算器的集合1010的操作的解算器框架1001。集合1010
被示为包括三个专门解算器1011、1012和1013,但是省略号1014表示也
可以有其他数量(即,三个以上或少于三个)的专门解算器。此外,省略
号1014还表示专门解算器的集合1010是可扩展的。随着发现和/或开发可
以帮助模型分析法的新的专门解算器,可以将这些新专门解算器合并到集
合1010中,以补充现有专门解算器,或者或许替换现有解算器中的一个或
多个。例如,图10示出了新解算器1015使用解算器注册模块1021被注册
到集合1010中。作为一个示例,新解算器或许可以是接受一个或多个已知
值并求解一个或多个未知值的仿真解算器。其他示例包括用于线性方程组、
微分方程、多项式、积分、求根器、因式分解器、优化器等等的系统的解
算器。每个解算器都可以在数值模式或在符号模式或在混合数值-符号模式
下工作。解的数值部分可以驱动参数化的呈现下游。解的符号部分可以驱
动部分解呈现。
专门解算器的集合可包括适于求解输出模型变量的任何解算器。如果
例如模型要确定自行车的制动器,则可以保证对复变微积分方程的求解。
在该情况下,可以将专门复变微积分解算器集成到集合1010中,以或许补
充或替换现有方程解算器。在一个实施例中,每一个解算器都被设计成求
解成特定类型的分析法关系中的一个或多个输出模型变量。例如,可以有
被配置成求解一个方程中的未知数的一个或多个方程解算器。可以有被配
置成应用规则以求解未知数的一个或多个规则解算器。可以有被配置成应
用约束以求解未知数的一个或多个约束解算器。其他类型的解算器可以是
例如使用输入数据执行仿真以便构建对应的输出数据的仿真解算器。
解算器框架1001被配置成协调集合1010中的一个或多个或全部专门
解算器的处理以使得一个或多个输出模型变量被求解。解算器框架1001被
配置成将已求解的值提供给一个或多个其他外部组件。例如,参考图2,解
算器框架1001可以将模型参数值提供给管道的视图部分230,使求解操作
影响由视图组件执行来呈现视图项目的方式,或从而影响与视图项目相关
联的其他数据。作为求解的另一潜在效果,可以改变模型分析法本身。例
如,仅仅作为可以实现这一点的许多示例中的一个示例,可以利用可修改
的规则集来创作模型,以便在给定解中,最初不活动的某些规则和/或约束
被激活,并且最初被激活的某些规则和/或约束变得不活动。也可以用这种
方法修改方程。
图11示出了解算器框架1001协调集合1010中的专门解算器之间的处
理的方法1100的流程图。现在将频繁地参考图10的解算器环境1000描述
图11的方法1100。
解算器框架通过标识哪些模型参数是输入模型变量(动作1101),以
及哪些模型参数是输出模型变量(动作1102),并通过标识定义模型参数
之间的关系的模型分析法(动作1103),来开始求解操作。给定此信息,
解算器框架分析模型参数中的依赖性(动作1104)。甚至给定固定一组模
型参数,并给定固定一组模型分析法,依赖性也可以根据哪些模型参数是
输入模型变量以及哪些是输出模型变量而变化。因此,每当使用哪些模型
参数的标识是输入并基于模型分析法来执行求解操作时,系统可以推断依
赖图。用户不必为每一个求解指定依赖图。通过评估每个求解操作的依赖
性,解算器框架具有在一个求解操作过程中求解一组一个或多个模型变量
并在下一求解操作中求解另一组一个或多个模型变量的灵活性。在图2到5
的上下文中,这意味着用户通过与视图合成进行接口来指定输入什么以及
输出什么的更大的灵活性。
在某些求解操作中,模型可能根本没有任何输出模型变量。在该情况
下,求解将验证全部已知模型参数值一并考虑时满足由该模型的分析法所
表达的所有关系。换言之,如果要擦除任何一个数据值,将它变为未知数,
然后求解,则被擦除的值将由模型来重新计算,并将与以前的相同。如此,
加载的模型已经以求解的形式存在,并且当然,具有未知数并获得解的模
型现在也以求解的形式存在。重要的是,与求解的模型的视图进行交互的
用户能够编辑视图,这可以具有改变一个或多个数据值的效果,并且因此
造成将尝试重新计算输出模型变量的数据值以便新的数据值集合与分析法
相一致的重新求解。用户可以编辑哪些数据值(不管模型是否以输出模型
变量开始)是由作者控制的;事实上,这是通过由定义哪些变量表示允许
的未知数的作者来控制的。
如果存在具有可以独立地被求解而无需首先求解其他表达式中的其他
未知数的一个或多个未知数的表达式(判定框1105中为“是”),则可以
在任何时间甚至与其他求解步骤平行地求解这些表达式(动作1106)。另
一方面,如果存在具有在不首先求解另一表达式中的未知数的情况下无法
求解的未知数的表达式,则已经找到求解依赖性。在该情况下,该表达式
变为定义相对于另一表达式的操作的特定次序的关系结构(如依赖树)的
一部分。
在具有对其他表达式的互连的求解依赖性的表达式的情况下,基于所
分析的依赖性来确定专门解算器的执行次序(动作1107)。然后,解算器
按确定的次序执行(动作1108)。在一个示例中,在模型分析法被表达为
方程、约束以及规则的情况下,执行的次序可以如下所示:1)将带有依赖
性的或作为独立表达式不完全可解的方程重写为约束,2)求解约束,3)求
解方程,以及4)求解规则。规则求解可能导致数据被更新。
一旦解算器按指定的次序被执行,则确定求解是否应该停止(判定框
1109)。如果例如求解了全部输出模型变量,或者如果确定尽管并非求解
了所有输出模型变量,但是专门解算器不能执行任何操作以进一步求解更
多输出模型变量,则求解过程应该停止。如果求解过程不应该结束(判定
框1109中为“否”),则过程返回到对依赖性的分析(动作1104)。然而,
此时,输入和输出模型变量的标识可能由于被求解的一个或多个输出模型
变量而发生变化。另一方面,如果求解过程应该结束(在判断框1109中为
“是”),则求解结束(动作1110)。然而,如果由于有太多的输出模型
变量而导致模型无法被完全求解,则模型仍然可能在生成部分解时取得成
功,其中给输出模型变量分配了反映求解能够进行得多远的符号值。例如,
如果模型具有方程A=B+C,B已知是“2”,是输入模型变量,但是C
是输出模型变量,A也是输出模型变量并需要被求解,则模型解算器不能
产生A的数值,因为B是已知的,而C是未知的;如此,代替全解,解算
器返回“2+C”作为A的值。如此,对于作者来说,什么附加变量需要变
成已知的是显而易见的,无论通过给它提供一个值或通过添加可以成功地
从其他输入数据产生所需的值的进一步的规则/方程/约束或者仿真。
每当解算器框架检测到已知模型参数中的任何一个的值有变化,和/或
每当解算器框架确定已知和未知模型参数的标识已经变化,则可以重复此
方法1100。求解能以至少两种方式进行。首先,如果能以符号方式对模型
进行完全求解(即,如果能通过算法重写所有方程、规则以及约束,以使
得对于每一个未知数都存在可计算的表达式),则这就完成了,计算该模
型。换言之,生成每一个未知数的数据值,和/或调整允许调整的数据值。
作为第二可能的方式,如果模型无法以符号方式完全求解,则以符号方式
部分地对它进行求解,并且然后确定是否可以使用一个或多个数值方法来
达到所需的解。此外,执行优化步骤,以便甚至在第一种情况下,确定使
用数值方法相对于执行符号求解方法是否是计算所需值的更快方式。虽然
符号方法可以更快,但还是有这样的情况:符号求解可能执行太多的项重
写和/或太多的重写规则搜索,以至于放弃此方法并使用数值方法求解会更
快。
图12示出了表示图10的解算器环境1000的示例的解算器环境1200。
在此情况下,解算器协调模块1210操作以接收输入模型变量1201,并协调
前向解算器1221、符号解算器1222(或“倒相器”)以及数字解算器1223
的动作,以便生成模型变量1202(包括输出模型变量)。前向解算器1221、
符号解算器1222和数字解算器1223是可以在图10的解算器集合1010中
的解算器的示例。
解算器协调模块1210维护具有相对应的模型变量的模型分析法的依
赖关系图。对于每一个求解操作,解算器协调模块1210可以确定模型变量
中的哪些是输入模型变量,而模型变量中的哪些是输出模型变量,如此,
将被求解。
前向解算器1221求解正确地呈现的模型分析法以便是前向可解的。例
如,如果在模型分析法中只有一个公式A=B+C,并且如果B和C是输入
模型变量,那么,可以通过将B和C的值插入到公式中使用前向求解,并
且确定A的所产生的值,来求解A。
符号解算器1222重写模型分析法,以便是前向可解的。例如,假设在
公式A=B+C中,变量A和C是输入变量,而变量B是要被求解的输出变
量。在此情况下,在不首先颠倒模型分析法的情况下(在此情况下,颠倒
公式),模型分析法不能被前向求解。因此,符号解算器1222将公式A=B+C
重写为B=A-C。现在,可以由前向解算器1221对颠倒的公式进行前向求
解,以便输入变量A和C被插入到公式B=A-C中,以获取变量B的值。
某些公式在数学上不是可逆的,或者至少还没有发现如何颠倒某些类
型的公式。此外,即使公式是可逆的,或者已知如何颠倒公式,则符号解
算器1222可以简单地不能颠倒公式。或者或许与诸如数字求解之类的其他
求解方法相比,符号解算器1222颠倒公式效率低。因此,在模型分析法不
适当地可逆的情况下(或者因为求逆是不可能的,未知的,或者符号解算
器没有启用),提供数字解算器1223以使用模型分析法来求解模型分析法。
解算器协调模块1210被配置成管理每一个求解操作。例如,图13示
出了用于管理求解操作以便可以求解模型分析法的方法1300的流程图。方
法1300可以由解算器环境1200在解算器协调模块1210的指示下进行管理。
解算器协调模块1210标识模型分析法的模型变量中的哪一个(哪些)
对于特定求解是输入变量,以及模型变量中的哪一个(哪些)对于特定求
解是输出模型变量(动作1301)。如果例如在图4中由数据-模型绑定器组
件410定义了输入和输出模型变量,甚至在给定恒定的模型变量组的情况
下,输入模型变量和输出模型变量的身份可以从一个求解操作变为下一个。
因此,对求解操作的协调可以从一个求解操作变为下一个。例如,甚至在
给定恒定的模型分析法组的情况下,取决于输入模型变量,前向求解可以
对于一个求解操作足够,对颠倒的分析法的求逆和前向求解可以对于另一
求解操作足够,并且或许数字求解可以对于再一个求解操作足够。
然而,如果在管道201的分析法部分220的上下文中实现,甚至模型
分析法可以随着模型分析法被形成或或许与如前面所描述的其他模型分析
法相结合而改变。解算器环境1200可以通过每当有改变时标识输入和输出
模型变量,通过解决任何更改的模型分析法,并适当地求解,来解决这些
变化。
对于每一个求解,一旦标识了输入和输出模型变量(动作1301),解
算器协调模块1210确定在给定输入模型变量的情况下,是否将执行对输出
参数的前向求解,而无需首先颠倒模型分析法(判断框1302)。如果将执
行前向求解(在判断框1302中,是),则使前向解算器1221对模型分析
法进行前向求解(动作1303)。此前向求解可以是对整体模型分析法的,
或者也可以只对模型分析法的一部分的。在后一种情况下,方法1300可以
再一次执行,只是这一次带有包括在前向求解中被求解的模型变量的全套
输入模型变量。
如果确定至少在不首先颠倒模型分析法的情况下对于特定求解不执行
对输出参数的前向求解(在判断框1302中为否),然后,确定对于特定求
解是否将颠倒模型分析法,以便前向求解可以求解输出参数(判断框1304)。
如果模型分析法(或模型分析法的至少一部分)将被颠倒(在判断框1304
中是),则由符号解算器颠倒模型分析法(动作1305)。此后,可以使用
前向求解来求解被颠倒的模型分析法(动作1303)。再一次,如果只有模
型分析法的一部分以此方式被求解,则方法1300可以再次执行,但是利用
扩展的输入模型变量组。
如果确定对于特定求解不颠倒模型分析法(在判断框1304中为否),
然后,数字解算器可以使用数值方法来求解输出变量(动作1306)。再一
次,如果只有模型分析法的一部分以此方式被求解,则方法1300可以再次
执行,但是利用扩展的输入模型变量组。
因此,已经描述了灵活的解算器环境1300,其中,可以求解各种模型
分析法,不管哪些模型变量是输入的,哪些模型变量从一个求解操作输出
到下一求解操作。
图14示出了可以由如图10所示的解算器框架1001执行的另一方法
1400的流程图。具体而言,解算器求解模型变量(动作1401),该模型变
量可以定义视图合成的视图组件的属性。例如,解算器可以使用已知的模
型变量来求解未知的模型变量。在某些情况下,已知的模型变量可以是由
另一个解算器所提供的输出,诸如当解算器构成上文参考图10和11所提
及的诸如依赖树之类的关系结构的一部分。
求解操作导致规范数据中的实际变化(动作1402)。在解算器求解模
型变量之后,将视图合成的视图组件的属性设置为已求解的模型变量的值
(动作1403)。例如,可以作为如图5所示的模型参数411的一部分提供
已求解的模型变量,模型参数411可以绑定到第一视图组件520的输入参
数542。在某些情况下,被用来求解已求解的模型变量的已知的模型变量可
以定义第一视图组件520的另一个属性。在这样的情况下,已知的模型变
量和已求解的模型变量可以被绑定到第一视图组件520的各种输入参数
542。在其他情况下,已知的模型变量可以定义第二视图组件520的属性,
诸如当第一视图组件是第二视图组件的子或父时。在这些其他情况下,已
求解的模型变量可以被绑定到第一视图组件520的输入参数542,而已知的
模型变量可以被绑定到第二视图组件520的输入参数542。
在视图组件的属性被设置为已求解的模型变量的值之后,呈现包括视
图组件的视图合成(动作1404)。
在需要时,有各种环境可以与方法1400一起使用。例如,图15示出
了可以与方法1400一起使用的并可以以软件、硬件或组合来实现的环境
1500。具体而言,环境1500可包括可以构成属性-设置器1502a、1502b、
1502c的一部分和/或由它们调用的一个或多个解算器1501a、1501b、1501c。
解算器1501可以被配置成求解未知的模型变量(图14的动作1401),例
如,通过使用已知模型变量来求解未知的模型变量。另外,属性-设置器1502
可以将视图组件的属性设置为已求解的模型变量的值(图14的动作1403)。
然而,属性-设置器1502不必包括解算器1501,并可以简单地接收已知的
模型变量,然后,将视图组件的属性设置为接收到的模型变量的值。
图16示出了可以由如图15所示的环境1500执行的另一方法1600的
流程图。更详细地,调用环境1500的第一属性-设置器1502a(动作1601)。
如果需要,可以由如图5所示的模型-视图绑定组件510调用第一属性-设置
器1502a和其他属性-设置器1502,和/或,第一属性-设置器1502a和其他
属性-设置器1502构成模型-视图绑定组件510的一部分。
在被调用之后,第一属性-设置器1502a设置视图合成的视图组件的第
一属性(动作1602)。例如,第一属性-设置器1502a可以将第一属性设置
为模型变量1503a的值。在某些情况下,第一属性-设置器1502a可以简单
地接收已知的模型变量1503a,然后将第一属性设置为接收到的模型变量的
值。在其他情况下,第一属性-设置器1502a可以调用解算器1501a,该解
算器1501a可以求解模型变量1503a,然后,可以将第一属性设置为已求解
的模型变量的值。
除设置第一属性之外,第一属性-设置器1502a也调用第二属性-设置器
1502b(动作1603)。然后,第二属性-设置器1502b调用可以被配置成求
解模型变量的诸如解算器1501b之类的解算器(动作1604)。具体而言,
如图15所示,解算器1501b可以由第二属性-设置器1502b调用,和/或解
算器1501b构成第二属性-设置器1502b的一部分,并且当被调用时,解算
器1501b可以求解未知的模型变量1503b。在某些情况下,解算器1501b
可以通过使用已知的模型变量,例如,模型变量1503a,来求解未知的模型
变量1503b。例如,当第一属性-设置器1502a调用第二属性-设置器1502b
(动作1603)时,第一属性-设置器1502a可以将模型变量1503a传递到第
二属性-设置器1502b。然后,解算器1501b可以通过使用模型变量1503a
来求解未知的模型变量1503b。当然,第一属性-设置器1502a不必将模型
变量1503a传递到第二属性-设置器1502b,该第二属性-设置器1502b可以
以任何其他合适的方式来访问模型变量1503a。
然后,第二属性-设置器1502b将视图合成的视图组件的第二属性设置
(动作1605)为,例如,已求解的模型变量1503b的值。当然,在某些情
况下,第二属性-设置器1502b可以简单地接收已知的模型变量1503b,然
后,第二属性-设置器可以将第二属性设置为接收到的模型变量的值。因此,
第二属性-设置器1502b不必调用解算器(动作1604)。在第二属性-设置
器1502b设置第二属性之后,呈现包括视图组件的视图合成(动作1606)。
在某些情况下,第一属性和第二属性可以是视图合成的单个视图组件
的属性。因此,单个视图组件的属性-设置器1502a、1502b可以将第一和第
二属性设置(动作1602、1605)为模型变量1503a、1503b的值,如此,允
许模型变量1503a、1503b定义第一和第二属性。
在其他情况下,第一属性可以是第一视图组件的属性,而第二属性可
以是第二视图组件的属性。因此,第一视图组件的属性-设置器1502a可以
将第一属性设置(动作1602)为模型变量1503a的值,如此,允许模型变
量1503a定义第一属性。另外,第二视图组件的属性-设置器1502b可以将
第二属性设置(动作1605)为模型变量1503b的值,如此,允许模型变量
1503b定义第二属性。在需要时,第一视图组件可以是第二视图组件的子或
父,而第二视图组件可以是第一视图组件的子或父。
如此,如上文参考图11所述,可以按显式的顺序编写多个解算器(动
作1107),然后,根据该顺序求解(动作1108)。例如,可以使用诸如依
赖树之类的关系结构来显式地编写解算器。另外,如参考图14到16所示,
可以基于具有解算器1501的属性-设置器1502的调用其他具有解算器1501
的属性-设置器1502的能力,隐式地编写多个解算器。
合成视图合成
参考图2,管道环境200还包括或许被作为创作机制240的一部分来
包括的模型导入机制241。模型导入机制241向作者提供用户界面或其他帮
助,以允许作者将预先存在的分析法驱动的模型的至少一部分导入到用户
正在构建的当前分析法驱动的模型中。因此,当创作新分析法模型时,作
者不必始终从头开始。导入可以是整个分析法驱动的模型,或者或许是该
模型的一部分。例如,导入可以造成下列六个潜在的效果中的一个或多个
或全部。
作为导入的第一潜在的效果,可以将另外的模型输入数据添加到管道
中。例如,参考图2,可以向输入数据211、分析法数据221和/或视图数据
231中添加另外的数据。另外的模型输入数据也可以包括被添加到图3的数
据访问组件310或者可能不同的规范化组件330的另外的连接器。
作为导入的第二潜在效果,在模型输入数据和模型参数之间可以有另
外的或经过修改的绑定。例如,参考图4,数据-模型绑定器410可能使得
在规范化的数据401和模型参数411之间发生另外的绑定。这可能使得已
知模型参数的数量增加。
作为导入的第三潜在效果,可以有用以生成补充的一组模型参数的另
外的模型参数。例如,参考图4,模型参数411可能由于导入的模型的分析
行为的导入而扩充。
作为导入的第四潜在效果,可以有添加到模型的另外的分析关系(如
方程、规则和约束)。另外的输入数据由第一潜在效果产生,另外的绑定
由第二潜在效果产生,另外的模型参数由第三潜在效果产生,而另外的分
析关系由第四效果产生。这些另外的项目中的任何一个或多个可以被视为
影响视图合成的另外的数据。此外,这些效果中的任何一个或多个都可以
改变图4的解算器440的行为。
作为导入的第五潜在效果,在视图的模型参数和输入参数之间可以有
另外的或不同的绑定。例如,参考图5,模型-视图绑定组件510将潜在地
扩充的一组模型参数411绑定到视图组件储存库520中的潜在地扩充的一
组视图组件。
作为导入的第六潜在效果,可以有添加到图5的视图组件储存库520
的另外的参数化的视图组件,或许造成新视图项目被添加到视图合成中。
因此,通过导入另一模型的全部或一部分,导入与该模型相关联的数
据。由于视图合成是数据驱动的,所以这意味着该模型的导入的部分被立
即合并到当前视图合成中。
当导入预先存在的分析法驱动的分析法模型的一部分时,被提供给管
道201的数据发生变化,从而造成管道201立即或响应于某种其他事件重
新生成视图合成。因此,在基本上是从现有模型进行的复制和粘贴操作的
情况下,由于解析操作,所产生的合成模型可以立即在显示器上查看。
作为此功能如何有用的示例,考虑图7的“风水”房间视图合成。此
应用程序的作者可以是“风水”专家,并可能希望只从标准房间布局视图
合成模型开始。因此,通过导入预先存在的房间布局模型,“风水”专家
现在相对快速地,如果不是立即的话,能够看到房间布局701在显示器上
显示出来,如图7所示。不仅如此,标准房间布局视图合成模型通常可能
附带的家具和房间项目目录,现在已经变得对图7的“风水”应用程序可
用。
现在,“风水”专家可能希望导入基本的饼图元素作为用于构建“风
水”图表元素702的基础。然而,“风水”专家可为该图表元素指定特定
的固定输入参数,包括或许总共有8个楔子,或许还有每一个楔子的背景
图像和标题。现在“风水”专家只需指定分析关系,该分析关系指定模型
参数如何相互关联。具体而言,家具的颜色、位置以及类型或其他房间项
目都可能对特定“风水”分数具有影响。专家可以简单地记下这些关系,
以由此通过分析将房间布局701和“风水”分数互连。这种在其他人的工
作上构建的协作能力在创建解决问题并允许视觉分析的应用程序时产生巨
大的创造性。这与可能允许用户使用固定依赖图来可视地编程单向数据流
的系统完全不同。这些系统可以进行单向求解,最初编程的从输入到输出
的方向。给定与用户的交互会话,取决于在任何时间什么是已知的以及什
么是未知的,此处所描述的原理允许以多种方式求解。
视觉交互
直到此时视图合成过程被描述为一次呈现的单个视图合成。例如,图
7示出了从一组输入数据生成的单个视图合成。然而,此处所描述的原理可
以被扩展到其中包括多个组成视图合成的集成视图合成的示例。这可能在
许多不同情况下有用。
例如,给定单个一组输入数据,当解算器机制正在求解输出模型变量
时,可以有多个可能的解。组成视图合成可能各自表示多个可能的解中的
一个,其中另一组成视图合成可能表示另一可能的解。
在另一示例中,用户可能简单地希望保留使用特定一组输入数据生成
的以前的视图合成,并随后修改该输入数据来尝试新的情形以生成新视图
合成。用户还可能希望也保留该第二视图合成,并通过再次改变该输入数
据来尝试第三种可能的情形。然后,用户可以同时查看这三种情形,或许
通过并排比较,以获取通过一次只查看一个视图合成可能难以获得的信息。
图17示出了从图7的“风水”示例延伸的集成视图合成1700。在该
集成视图合成中,再次使用元素701和702来表示图7的第一视图合成700,
与图7完全相同。然而,这里,有强调地表示的第二视图合成。第二视图
合成与第一视图合成的相似之处是有两个元素,房间显示和“风水”分数
计。然而,第二视图合成的输入数据不同于第一视图合成的输入数据。例
如,在此情况下,家具的多个项目的位置数据将不同,从而导致它们在第
二视图合成的房间布局1701中的位置不同于第一视图合成的房间布局701
中的位置。然而,与第一视图合成的“风水”计702相比,各种家具项目
的不同位置与第二视图合成的“风水”计1702中的不同“风水”分数相互
关联。
集成视图合成也可以包括比较元素,该比较元素在视觉上表示至少一
个参数的值跨全部以前创建的并且目前显示的视图合成的某一些的比较。
例如,在图13中,可以有柱状图,该柱状图示出每一个显示的视图合成的
成本和交付时间。这样的比较元素可以是视图组素储存库520中的另外的
视图组件。或许,比较视图元素只有在显示多个视图合成时才呈现。在该
情况下,可以将比较视图合成输入参数映射到该模型的不同求解迭代的模
型参数。例如,可以将比较视图合成输入参数映射到为图17的第一和第二
视图合成的生成而产生的成本参数,并将其映射到为第一和第二视图合成
的生成而产生的交付参数。
参考图17,还有允许用户在视觉上强调全部可用的以前构建的视图合
成的选定子集的选择机制1710。选择机制1710被示为包括以缩略图形式示
出的或以某种其他不强调的方式示出的三个可能的视图构造1711、1712和
1713。每一个缩略图视图合成1711到1713都包括对应的复选框1721到
1723。用户可以选中与将被在视觉上强调的任何视图合成相对应的复选框。
在此情况下,复选框1721和1723被选中,从而使得显示对应的视图构造
的更大形式。
集成视图合成或者甚至该集成视图合成的任何单个视图合成,都可以
具有用户与视图合成进行交互以指定什么模型参数应该被视为未知的从而
触发通过分析解算器机制的另一求解的机制。例如,在图17的房间显示
1701中,可以右击家具的特定项目,右击特定参数(例如,位置),并且
可以出现允许用户指定该参数应该被视为未知数的下拉菜单。然后,用户
可以右击协调性百分比(例如,“风水”分数计1702中的95%),于是会
出现一个滑动块(或其他用户输入机制的文本框),该滑动块允许用户指
定不同的协调性百分比。由于这将造成已知和未知参数的标识的改变,所
以这将造成重新求解,其位置被指定为未知的家具的项目可能出现在新位
置。
交互视觉线索
在一个实施例中,集成的视图合成还可包括与视觉项目相关联的视觉
提示或线索。视觉线索向用户给予某种视觉指示:1)可以与其进行交互的
相关联的视觉项目,2)对该视觉项目可能有什么类型的交互,3)如果对视
觉项目作出了特定交互,结果将是什么,和/或4)为了取得结果,与一个
或多个其他视觉项目的交互是否是必需的。
如上文参考图5所提及的,视图部分500包括视图储存库520,该视
图储存库520包括多个视图组件521、522、523、524。视图组件522、523
和524中的一些是由相对应的输入参数(视图组件522的参数542A和542B,
视图组件523的参数543,以及视图组件524的参数544)内填充的值驱动
的。被提供到输入参数的数据驱动相对应的视图组件的执行逻辑,以便数
据控制视觉项目的构造。例如,视觉项目552的结构可以取决于被提供到
输入参数542A和/或输入参数542B的数据。
在一个实施例中,给定视图组件的输入参数中的一个或多个可以是交
互性参数。交互性参数可以定义视觉项目是否将被带有交互性地呈现。可
另选地,或另外地,交互性参数可以导致特定类型的交互性被应用于作为
执行相对应的视图组件的执行逻辑的结果构建的相对应的视觉项目。下面,
包含至少一个这样的交互性参数的视图组件将被称为“在视觉上带线索的
交互式”视图组件。除启用交互性之外,被提供到交互性参数的数据还可
定义相对应的视觉项目在被呈现时在视觉上如何被提示,以在视觉上通知
用户视觉项目是交互式的,以及潜在地,还有交互性的类型。所呈现的视
觉项目中的一个、某些或者甚至全部都可以是交互式,并以此方式在视觉
上被提示。
有许多不同类型的可以由视觉项目提供的交互性。一个此处被称为导
航交互性。当用户导航地与视觉项目进行交互时,被用来构建用于呈现的
视觉项目的视图组件的子集会变化。
例如,一种类型的导航交互此处被称为“辖域交互性”。辖域交互性
改变呈现的视觉项目的子集,以便恰好在导航交互性之前显示的至少一些
视觉项目也紧随在导航交互性之后显示。例如,参考图5,虚拟空间500
被示为包括四个视觉项目551、552、553和554。如果视觉项目552具有辖
域交互性,则用户可以与视觉项目552进行交互,以便视觉项目551和554
不再在要被呈现的虚拟空间550中。然而,视觉项目552和553可以保持
在虚拟空间550中。可另选地或另外地,进一步的视觉项目可以被构建到
视觉空间中。
一种类型的辖域交互性是改变被用来生成用于呈现的视觉项目的视图
组件的范围的滚动交互性。图18A和18B表示滚动交互性的示例。图18A
表示滚动交互性之前的虚拟空间1800A。这里,视图合成组件(参见图5)
构建了六个视觉项目1811、1812、1813、1814、1818和1816。视觉项目
1811被用指示视觉项目已经启用了向左滚动交互性的视觉线索来装饰(如
星号1801所示)。视觉项目1816被用指示视觉项目已经启用了向右滚动
交互性的视觉线索来装饰(如星号1899所示)。图18B表示在用户与视觉
项目1816进行交互以向右滚动之后的虚拟空间1800B。这里,视觉项目1811
被从虚拟空间去除。另外,新视觉项目1817被添加到虚拟空间。在编辑交
互性的示例中,在此情况下,滚动交互性还导致视觉项目1812被用表示启
用了向左滚动交互性的视觉线索来装饰。此外,视觉项目1816还丢失被提
供到视觉项目1817的其视觉线索和交互性。可以通过简单地改变被提供以
填充相对应的视图组件的输入参数的数据,对于给定视觉项目启用和禁用
视觉线索和交互性功能。
另一种类型的辖域交互性是改变被用来生成用于呈现的视觉项目的视
图组件的“细节”级别的“细节交互性”。“放大”交互性可能导致较细
粒度的视觉项目的出现,或许一些以前的视觉项目从视图中消失。“缩小”
交互性可以导致较粗粒度的视觉项目出现,或许一些以前的较细粒度的视
觉项目消失。例如,如果在可见的宇宙的图中放大,则星系的簇可以开始
出现。如果将在该星系簇上放大,则单个星系可以开始成形。如果放大那
些单个星系中的一个,如银河系,则单个星可以出现。如果放大那些星中
的一个,如太阳,则太阳的细节可能变得越来越明显,或许有行星开始出
现。如果放大那些行星中的一个,如地球,则诸如洲之类的大规模的地貌
可能出现。如果进一步放大,则国家边界可能出现,稍后城镇可能会出现,
然后,街道可能成形。这可能持续,直到子原子粒子成形。这样的放大拓
扑图的粒度的粗略度不必在物理上是相关联的,如在宇宙的模型中那样。
可以利用每一个辖域交互性在其他拓扑图中导航,导致以前的视觉项目消
失,并导致新的视觉项目出现。再一次,对伪无限数据系列的使用可以促
进此操作。
在详细地描述交互性操作之前,图19A示出了示例虚拟空间1900A。
这里,只有两个视觉项目1911和1912开始显示。如图19B的虚拟空间1900B
所示,视觉项目1911被放大,现在某些视觉项目1921和1922被呈现在视
觉项目1911内部,而视觉项目1912现在超出视图范围。这是放大交互性
的示例。作为缩小交互性的示例,可以从图19B的虚拟空间1900B开始,
虚拟空间1900A表示缩小交互性之后的状态。
交互性的类型还可是导致至少一个呈现的帧(以及或许整个显示)显
示与之前显示的视觉项目完全不同的视觉项目的链接交互性。例如,在上
面的图7中的“风水”房间示例中,点击特定视觉项目(如“风水”计702)
可能导致关于“风水”的网页被显示,代替“风水”房间视图。可另选地,
或许有如果与其进行交互可能导致完全不同的房间出现的视觉项目。
再一个类型的交互性可以是导致独立于被呈现的视觉场景的某种动作
被采取的外部动作交互性。例如,可以与可能导致电子邮件被发送或设置
警告、预定数据备份、执行性能检查等等的视觉项目进行交互。
交互性的类型还可是编辑交互性。编辑交互性以一个或多个视图组件
的一个或多个输入参数值改变的方式来改变数据。如果该输入参数影响视
觉项目被构建的方式,那么,作为结果,视觉项目也会改变。数据中的变
化还可导致输入模型参数的值变化,或导致输入模型参数和/或输出模型参
数的身份变化。如此,施加于视觉项目的编辑交互性可以导致对分析法部
分400的整个的重新计算。现在将提供编辑交互性的多个示例。
图20示出了连续的美国2000的呈现。可以从一个视图组件构建美国
视觉项目。然而,可以从相对应的子视图组件构建组成的州。对应于的该
州的视觉项目的高度表示州的一些参数(例如,评估中的特定产品的按人
口计算的消费)。这里,新墨西哥州视觉项目2001具有面向上的箭头2011
形式的视觉线索。这提示用户,可以与新墨西哥州视觉项目2001进行交互,
以便可以改变视觉项目的高度。同样,内华达州视觉项目2002和佛罗里达
州视觉项目2003分别具有相对应的面向下的箭头2012和2013。这些箭头
可以在视觉上提示用户,在新墨西哥州箭头2011的高度的向上的调整在通
过分析法部分400对模型重新分析之后,会导致在内华达州视觉项目2002
和佛罗里达州视觉项目2003的高度的向下调整。可另选地或另外地,箭头
2012和2013可以指示,如果内华达州视觉项目2002和佛罗里达州视觉项
目2003的高度两者都由用户向下调整,那么,将向上调整新墨西哥州视觉
项目2001的高度。为了确定特定用户交互的后果,管道201可以考虑用户
如何可以与所呈现的视觉项目进行交互,并执行对分析模型的相依度求解,
以确定后果将是什么。
图21示出了包括相关联的柱状图2110和饼图2120的图表2100。柱
状图2110包括多个柱线。柱线2111A中的一个被示为带有箭头2111B以
表示可以垂直地调整此高度。这可以导致在饼图2120中分配各种楔形图时
进行某些调整。可以在视觉上合并柱状图2110和饼图2120。例如,所产生
的饼图可包括楔形图,其厚度取决于柱状图相关联的柱的高度。
图22示出了飓风映射图表2200,其中,绘制了飓风2211的多条路线
2201。视觉线索2220指示用户可以与路线2201进行交互,以便将路线2101
改变为,例如,路线2202。这允许用户评估飓风的路线的可能的替换的现
实。控件2221、2222、2223和2224还允许飓风的各种参数被改变,诸如,
例如,风速、温度、旋转,以及飓风迁移速度。
例如,在图7的“风水”示例中,如果特定协调性分数被指定为已知
输入参数,则可为家具的该项目(其位置被指定为未知)建议家具的各个
位置。例如,或许从家具发出多个箭头,建议移动该家具以便获得较高的
协调性百分比的方向,移动以最大化水分数的不同方向,移动以最大化水
分数的不同方向等等。视图组件也可以示出椅子可以被移动到的阴影以增
加特定分数。如此,用户可以使用这些视觉提示以便围绕需要被优化的特
定参数来改进设计。在另一示例中,或许用户希望降低成本。然后,用户
可以指定该成本作为要被最小化的未知数,造成不同的一组建议的家具选
择。
图23示出了用于与显示多个视觉项目的用户界面进行交互的方法的
流程图。如前面所描述的,计算机在显示器上呈现数据驱动的视觉项目(动
作2301)。回想一下,通过将数据提供到参数化的视图组件,形成每一个
数据驱动的视觉项目。该数据又可能通过分析模型响应于数据被提供到管
道201的分析法部分400,或响应于数据被提供到管道201的数据部分300
来获取。另外,视觉项目中的一个、某些或全部具有向用户表达可以与视
觉项目进行交互和/或交互性类型的视觉线索或其他视觉强调(动作2302)。
在一个实施例中,视觉线索首先只表示相对应的视觉项目是交互式的,直
到用户选择视觉项目(通过利用指针悬停在视觉项目上),视觉线索才被
修改或补充以表达交互性类型。
然后,计算系统检测发生了用户和视觉项目之间的预定的物理交互(动
作2303)。作为响应,对于该特定视觉项目,启用或激活交互性(动作2304)。
适当的响应将取决于交互性是导航交互性、链接交互性还是编辑交互性。
在编辑交互性的情况下,结果还将取决于如管道的分析法部分400所定义
的各种视觉项目之间的分析关系。
交互性可以是导航、链接,以及编辑交互性中的两个或更多的组合。
例如,在图20的美国示例中,对新墨西哥州视觉项目2001的高度的向上
调整可以导致对内华达州视觉项目2002和佛罗里达州视觉项目2003的高
度的向下调整(表示编辑交互性的示例)。然而,这还可导致显示被拆分
成四个帧,三个帧中的每一个放大三个州:内华达州、新墨西哥州和佛罗
里达州(辖域交互性的示例)。另外,第四帧可以包含和新墨西哥州的住
宅的消费偏好有关的调查信息(链接交互性的示例)。
图24抽象地示出了表示另一应用示例的用户界面2400。在此应用示
例中,描述了允许用户使用此处所描述的原理轻松地构建数据驱动的视觉
场景的方便的用户界面。
用户界面2400还包括第一组2411视觉项目。在此所示出的情况下,
组2411只包括一个视觉项目2411。然而,此处所描述的原理不仅限于视觉
项目组2411内的一个视觉项目。视觉项目2411具有相关联的数据2412,
如此,有时被称为“数据视觉项目”2411。
尽管并非必需,但是在此示例中,相关联的数据被细分为多个数据组。
任何数量的组都将足够。然而,四个数据组2413A、2413B、2413C和2413D
被示为包括在图24的相关联的数据2412内。在所示出的相关联的数据2412
中,平行地组织每一个数据组,每一个都具有相关联的多个数据字段。在
所示出的情况下,所示出的相关联的数据2412中的每一个数据组都包括相
对应的字段a、b和c。数据组2413A的字段a、b和c将分别被称为数据字
段2413Aa、2413Ab和2413Ac。数据组2413B的字段a、b和c将分别被
称为数据字段2413Ba、2413Bb和2413Bc。数据组2413C的字段a、b和c
将分别被称为数据字段2413Ca、2413Cb和2413Cc。最后,数据组2413D
的字段a、b和c将分别被称为数据字段2413Da、2413Db和2413Dc。
用户界面2400还包括第二组2420视觉项目。在所示出的情况下,组
2420包括三个相对应的视觉项目2421、2422和2423。然而,对第二组2420
中的视觉项目的数量没有限制,也没有第二组中的视觉项目是相同类型的
任何要求。下面,视觉项目2421、2422和2423还可被称为“元素视觉项
目”。每一个视觉项目2421、2422和2423可以,例如,通过使用输入参
数来执行相应的视图组件的相对应的逻辑来构建。这样的视图组件可以对
于视图组件521到524参考图5所描述的那些。如此,视觉项目2421、2422
和2423中的每一个都被示为具有输入参数。这样的输入参数可以是提供到
视图组件的输入参数,或者也可以是驱动视觉项目的呈现的输入参数。只
作为示例,视觉项目2421、2422和2423中的每一个都被示为每一个都具
有三个输入参数。具体而言,视觉项目2421被示为具有输入参数2421a、
2421b和2421c。视觉项目2422被示为具有输入参数2422a、2422b和2422c。
视觉项目2423被示为具有输入参数2423a、2423b和2423c。
用户界面2400还包括用户交互机制2440。用户交互机制2440准许用
户(通过一个或多个用户手势)导致数据视觉项目2411的数据2412应用
于元素视觉项目2420的输入参数。在一个实施例中,用户手势可以实际导
致相关联的数据被绑定到元素视觉项目2420的输入参数。这样的用户手势
可以是拖放操作、悬停操作、拖动和点击,或任何其他用户手势或手势的
组合。如此,用户可以将来自数据视觉项目2410的数据应用或绑定到元素
视觉项目的输入参数,从而使用简单手势来改变元素视觉项目的外观。在
一个实施例中,这甚至不涉及用户输入任何相关联的数据,并允许单个手
势组将数据应用和/或绑定到多个元素视觉项目。下面将进一步描述将来自
一个数据视觉项目的数据应用或绑定到多个元素视觉项目的用户手势的示
例。
在一个实施例中,用户交互机制2440准许用户按每个数据组将来自数
据视觉项目2411的数据2412应用到元素视觉项目2420的输入参数,以便:
1)各个数据组中的一种数据组应用于第二组视觉项目中的一个不同的视
觉项目的一个或多个输入参数的组,以及2)来自多个数据组中的每一个数
据组的相同的类型单个字段被应用于对于元素视觉项目的不同的视觉项目
的所述一个或多个输入参数的组中的一个输入参数。
作为示例,参考图24,用户可以使用单组手势来同时将数据视觉项目
2411的数据字段2413Aa应用或绑定到元素视觉项目2421的输入参数
2421b,将数据视觉项目2411的数据字段2413Ba应用或绑定到元素视觉项
目2422的输入参数2422b,并将数据视觉项目2411的数据字段2413Ca应
用或绑定到元素视觉项目2423的输入参数2423b。如果有第四元素视觉项
目,则数据字段2413Da可以被应用于第四元素视觉项目的相对应的输入参
数。
作为此同一组手势的结果,或或许响应于附加的手势组,可以进行进
一步的应用或绑定。例如,响应于用户手势,数据视觉项目2411的数据字
段2413Ab可以被应用或绑定到元素视觉项目2421的输入参数2421a,数
据视觉项目2411的数据字段2413Bb可以被应用或绑定到元素视觉项目
2422的输入参数2422a,并且数据视觉项目2411的数据字段2413Cb可以
应用或绑定到元素视觉项目2423的输入参数2423a。另外,数据视觉项目
2411的数据字段2413Ac可以被应用或绑定到元素视觉项目2421的输入参
数2421c,数据视觉项目2411的数据字段2413Bc可以被应用或绑定到元素
视觉项目2422的输入参数2422c,并且数据视觉项目2411的数据字段
2413Cc可以应用或绑定到元素视觉项目2423的输入参数2423c。
用户界面2400还潜在地包括具有相关联的属性2431的第三视觉项目
2430。第二用户交互机制2450准许用户使用一组手势来将第二组视觉项目
2420合并到第三视觉项目2430中,以便:1)第二组2420视觉项目中的每
一个的一个或多个输入参数是使用第三视觉项目2430的相关联的属性
2431设置的、和/或2)第三视觉项目2430的属性2431被用来改变第二组
2420视觉项目中的每一个的一个或多个输入参数。用来实现此的手势可以
是拖放操作、悬停操作,或任何其他用户手势,并甚至可以使用,完全地
或部分地,被用来将来自数据视觉项目2410的数据应用到元素视觉项目
2420的相同用户手势来实现。
例如,如果被用来合并第二组2420视觉项目和第三视觉项目2430的
用户手势(即,第二组手势)至少部分地与被用来将来自数据视觉项目2411
的数据应用或绑定到元素视觉项目2420的输入参数的用户手势(即,第一
组手势)重叠,那么,在第一组手势和第二组手势两者内有至少一个共同
的手势。然而,这根本不是必需的。事实上,在第一组手势和第二组手势
之间可以有没有共同的手势。如此,与将元素视觉项目2420与视觉项目
2430合并相比,可以使用不同的用户动作来将来自数据视觉项目2411的数
据应用到元素视觉项目2420。
在一个实施例中,每一个数据视觉项目2411都可以类似于在图5中使
用图5的视图构造模块521到524构建的视觉项目。在该情况下,相关联
的数据2412可以是被提供到相对应的视图组件的输入参数的数据。此相关
联的数据2412甚至可以作为视觉项目本身中的视觉被表面化,允许用户具
有相关联的数据的视图。视觉项目2430还可类似于使用视图构造模块521
到524构建的视觉项目。在该情况下,或许视觉项目2430的属性2431中
的一个或多个可以使用相对应的视图组件的输入参数来设置。
将数据视觉项目2411的相关联的数据2412应用到元素视觉项目2420
的输入参数可以导致分析模型被解析。例如,图4描述了管道200的分析
法部分400。通过应用相关联的数据2412,可以有需要重新计算的数据以
便进一步重新填充元素视觉项目2420的输入参数。另外,将元素视觉项目
2420与第三视觉项目2430合并还可导致对分析法部分400的重新求解,以
由此改变视觉项目2420或2430的输入参数。
当然,图24是用户界面的抽象表示形式。现在将参考图25到29呈现
准许用户指定要应用于元素视觉项目的数据视觉项目的相关联的数据并且
允许元素视觉项目与另一个较高级别的视觉项目合并的用户界面的更具体
的示例。
图25示出了其中呈现了螺旋2530的用户界面2500。螺旋2530是第
三视觉项目2430的具体示例。在此情况下,螺旋2530的属性(作为属性
2431的示例)可以是曲率半径,间距(或上升角)、颜色、线划宽度、线
横断面图、绕组长度、开始角等等。每一个属性都可以是,例如,被提供
到螺旋视图合成元素的输入属性,该螺旋视图合成元素具有构造逻辑,当
执行该构造逻辑时,呈现螺旋。螺旋形状类型可以是可以被拖放到用户界
面的工作面2501的多种形状中的一种。在被拖放到工作面之后,螺旋的输
入参数被填充了默认值,但是,也可以改变这些默认值。
用户可能已经将一个单独的立方体对象2521拖到工作面上。立方体对
象2521是图24的元素视觉对象2421的示例。立方体对象2521通常具有
六个矩形形状的彼此平行或垂直的面。在立方体对象2521被拖到工作面的
除螺旋2530以外的另一部分中的情况下,立方体对象2521可能已经保留
了这些基本立方体特征。然而,在此情况下,用户作出了立方体对象2521
和螺旋2530将被合并的手势(或许通过使用指针2550将立方体2521拖动
到螺旋2530的一部分上)。在此情况下,立方体2521的输入参数被调整,
以便其中线遵循螺旋。这还可是用于定义将与螺旋视觉项目合并的元素视
觉项目的类型(例如,在此情况下,立方体)的机制。
给定了此合并操作,图26示出了用户界面的此特定示例的另一阶段
2600。这里,用户已经获取了数据视觉项目2610,在此情况下,或许电子
表格文档。电子表格文档2610是图24的数据视觉项目2411的示例。此电
子表格文档包含列出了各种精神病药物的表格。数据完全是虚构的,但是
提供它是为了示出此示例。第四列2614列出了药物的名称,每一行一个,
虽然在此情况下,字段是空的,因为数据是虚构的。第三列2613列出了对
应于每一行的药物的类别。第一列2611列出了对应于每一行的药物被批准
用作处方的开始日期(以年表示)。第二列2612列出了对应于每一行的药
物被批准供使用的时长(以年表示)。开始日期、时长、类别和名称是图
24的相关联的数据2412的数据组的字段的示例。电子表格2610中的行是
图24的相关联的数据2412的数据组的示例。
这里,输入参数表2620看来似乎向用户示出了什么输入参数已经被选
择为用于填充的目标。用户已经选择了第一列2611(即,“开始日期”字
段)以填充“螺旋上的位置”输入参数。为每一个数据组(图表2610中的
每一行)生成立方体视觉项目。预览2630示出了螺旋2530,但是,带有多
个立方体元素和螺旋的合并的版本看起来像什么的预览。
图27示出了用户界面2700。这里,用户选择了各种立方体将不被裁
剪,但是,将层叠在另一个立方体的顶部,以螺旋(现在不可见)充当堆
的基。层叠的立方体2710表示元素视觉项目的示例。请注意,螺旋视觉项
目的属性已经被每一个立方体的输入参数继承。另外,来自数据视觉项目
2610的数据已经被每一个立方体继承。例如,立方体的层叠中的每一个立
方体都使用螺旋上的和对应的药物的开始日期相对应的位置构建的。每一
个立方体的长度被相对应的药物的时长继承。另外,立方体还从螺旋继承
位置属性和曲度属性。
图28示出了完整的视觉场景。在此用户界面2800中,可以根据相对
应的药物的类别,将颜色指定给每一个弯曲的立方体。如此,相对应的药
物的开始日期定义螺旋中的弯曲的立方体的开始位置。例如,用户可能已
经使用了下列手势来将来自电子表格视觉项目2411的开始日期数据应用到
立方体视觉项目:1)选择电子表格的第一列,以及2)将列拖动到输入参
数表2620的“螺旋上的位置”部分。此外,相对应的药物的时长还定义螺
旋中的弯曲的立方体的长度。例如,用户可能已经使用了下列手势来将来
自电子表格视觉项目2411的时长数据应用到立方体视觉项目:1)选择电
子表格的第一列,以及2)将列拖动到输入参数表2320的“长度”部分。
最后,相对应的药物的类别定义螺旋中的弯曲的立方体的颜色。例如,用
户可能已经使用了下列手势来将来自电子表格视觉项目2411的类别数据应
用到立方体视觉项目:1)选择电子表格的第一列,以及2)将列拖动到输
入参数表2620的“颜色”部分。用户可以将电子表格的不同的字段拖放到
输入参数字段的差异部分,以查看在给定情况下数据的什么视觉表示是最
好的。
通过使用此处所描述的这些原理,可以利用其他视觉元素和几何形状
构建和构成复杂的几何形状。为了理解几何形状的合成,将首先描述四个
基本概念。基本概念包括1)数据系列,2)形状,3)维度组,以及4)几
何形状。
首先,将描述数据系列。数据系列是数据上的包装器。参考图6示出
和描述了数据系列对象的示例。数据系列对象不是数据本身。然而,数据
系列知道如何枚举数据。例如,参考图6,枚举模块601枚举对应于数据流
对象的数据系列。另外,数据系列具有声明以下内容的属性:范围、量化,
以及图的分辨率。可以被数据系列包装的数据类型的示例包括表列,表中
的重复的行、层次结构、维度层次结构等等。
形状可以是从规范视图合成构建的规范视觉项目。这样的规范视觉项
目的示例包括,例如,点、柱线、棱镜、气泡、表面片、图像文件、2维或
3维形状等等。然而,形状可以是来自数据的规范构造。来自数据的这样的
规范构造的示例包括标签。可另选地,形状可以是利用数据系列和形状来
填充几何形状(下面将进一步描述术语“几何形状”)的结果。
规范形状携带潜在地允许几何形状的“绑定器-安排器”(下面所描述
的)被参数化以处理多个形状的元数据。元数据还提供下面所描述的“布
局助手”的暗示。元数据表示形状的各方面,诸如,形状是直线的还是曲
线的,形状是平面的还是占据体积的,形状是否相对于某个维度是对称的,
形状是否需要以文本意义(例如,标签)形状来阅读,是否可以利用纹理
着色或叠加形状,等等。
请注意,形状没有绝对维度,但是,可以可任选地指定其维度中的比
例。例如,可以指定棱镜以具有基L和W,它们是其高度H的某个最小百
分比。形状可以可任选地指定对于如何展示形状的多个实例的约束,诸如,
例如,两个柱线之间的最小距离。
关于维度组,这与坐标系统不同。有多少要被可视化的数据的维度,
维度集就包含多少维度。维度可以多于普通的欧几里得轴x、y和Z,以及
时间t。在维度集中,某些可以是欧几里得的(例如,笛卡儿或极x、y、z,
或带有高度z的地图坐标)。稍后,当供几何形状使用时,这些欧几里得
轴的效果将是描绘和控制形状实例系列内的形状如何被插入或变换为某些
坐标,带有适当的比例、变换,以及分布。通过诸如聚集和层叠之类的布
局效果来表明其他维度。其他维度可以涉及诸如动画、或运动速度之类的
较高视觉维度。
作为示例,考虑包括现有的国家的视觉项目。视觉项目可以各自都对
应于形状(描述国家的形状),该国家的中心的极坐标。还可有将根据国
家的颜色呈现的数据系列。例如,蓝色可以表示在该国家的对外援助中花
费的少量资源。红色可以表示在该国家的对外援助中花费的较大量的资源。
再一个维度可以被动画化。例如,可以有与每一个国家相关联的陀螺。
可以利用关于每一个国家的政治稳定性来填充该国家的陀螺维度,不管该
政治稳定性分数是如何导出的。带有较小政治稳定性的国家的陀螺被动画
化,带有较慢的运动和更大的不稳定性。带有较大政治稳定性的国家的陀
螺被动画化,带有更快的运动和较小不稳定性。其他非欧几里得维度可包
括纹理。
维度集可包括可见性/条件性隐藏、可滚动性、标题、标签、细分、可
绘制的粒度,准许的范围(例如,是否允许负的)等等的声明。
“几何形状”包括容器和一个或多个绑定器-安排器。
至于容器,几何形状包含其中数据将通过形状被可视化的容器的视觉
元素/布置的描述。例如,最简单的可能的柱状图指定包围矩形的形状、容
器的2/3D维度中的比例(可另选地,绝对维度),坐标系统(例如,笛卡
儿)。更复杂的可视化可以指定附加的概念。例如,地图可以指定几何形
状内的限制可以将形状放在坐标系统内的什么位置的细分(如区域、街道)。
象限图可以指定其笛卡儿坐标轴适应负值、颜色、纹理、透明度,及其他
可控制的视觉参数。
容器可以可任选地指定潜在地允许相对应的绑定器-安排器中所需的
智能的有效部分被析出到布置助手的小集合(常常基于解算器)的元数据。
元数据表示容器的各方面,诸如,例如:欧几里得轴(有更多轴类型)是
直线的还是曲线的,容器是平面的还是占据体积的,容器是否相对于某个
维度是对称的,等等。
其次,几何形状携带“绑定器-安排器”的声明,该“绑定器-安排器”
知道如何:1)通过将传入的数据系列和原始形状应用到
DataShape BindingParams来生成形状实例系列,该DataShapeBindingParam
描述了数据值如何映射到形状的维度(例如,高度)或视觉属性(例如,
颜色),和/或基于数据值来如何从一组形状中进行选择,以及2)将传入
的轴集映射到容器的坐标系统,并映射到容器的其他视觉元素(层叠、聚
集、着色、运动等等),3)按每个ShapeAxis BindingParam将形状实例系
列布置到一个或多个维度上,如被映射到容器,以及4)在必要时在展示的
形状之间内插,例如,连接线,或从小的surface-lets或patches创建连续
的表面。
被填充的几何形状(即,利用一个或多个数据系列和相对应的形状实
例化的几何形状)本身可以被视为形状,以便被传递到另一个几何形状中。
例如,在层叠的/聚集的柱状图中:最里边的几何形状具有简单容器,可以
在其中层叠其他柱线的柱线。填充最里边的几何形状会导致进入第二几何
形状的形状,其中,容器是柱线的簇。最后,由对第二几何形状的填充所
产生的形状被馈送到最外面的几何形状,该几何形状知道如何沿着水平轴
布置形状,还示出它们在y轴上的高度。
在上面的层叠的/聚集的柱状图示例中,最里边的几何形状只具有高
度,第二几何形状具有(排序或未排序的)聚集,而最外面的几何形状具
有简单(即,未层叠的)垂直维度和简单(即,没有察觉到聚集)水平维
度。然而,合成层叠的/聚集的柱状图也可以被视为单个几何形状,该单个
几何形状可以包括带有三个方面的维度集:层叠感知的高度维度、聚集维
度,以及水平X维度。
布局助手依赖于算法或解算器,并帮助确定形状在包含性的几何形状
内的“正确的”或“最佳的”定位,以及形状之间的内插。如上文所提及
的,布局助手的思想是降低绑定器-安排器内的特殊性。有两种类型的布局
助手,在特定绑定器-安排器的级别调用的本地布局助手,以及检查整个包
含性的几何形状的全局布局助手(包括在将形状放入在几何形状内的多个
B-A的中间结果处)。
如此,管道允许跨各种领域的复杂交互。
附加示例应用程序
图1和2的体系结构可以允许构建无数的数据驱动的分析法模型,而
不管领域如何。这些领域根本无需类似。无论哪里有问题需要求解,只要
对视觉项目应用分析法是有帮助的,则此处所描述的原理就可以是有益的。
直到现在,只描述了几个示例应用程序,包括风水房间布局应用程序。为
说明此处所描述的原理的广泛的适用性,现在将描述几个附加的广泛的并
且不同的示例应用。
附加示例#1——零售货架安排
产品销售人员常常使用3-D可视化来销售货架上的商品,最终显示
和新促销商品。利用管道201,销售人员将能够在现场进行“假设分析”。
给定某些产品布局并给定最小日销售额/纵尺(linear foot)阈值,销售人员
可以计算和可视化手边的最小所需库存。相反,给定手边的某个库存并给
定双周补充周期,销售人员可以计算将给出所需销售额/纵尺的产品布局。
零售商将能够使这一影响可视化,比较各个情形,并比较利润。图29示出
了示例零售商货架安排可视化。输入数据可包括产品的视觉图像、产品数
量、为每一个产品分配的线性平方尺,和每一个产品的货架号等等。图29
的示例示出了虚拟世界内的图表的该应用。这里,平面图2901和架子布局
2902可以在分析上是相关联的,以便架子布局2902中的变化影响平面图
2901,反之亦然。
附加示例#2——城市规划
城市规划混搭(mash up)变得很重要。使用此处所描述的原理,可以
将分析法集成到这样的解决方案中。城市规划者将打开由专家所创建的交
通模型,并从道路改善长廊(gallery)拖进一个桥梁。该桥梁将带来分析
行为,诸如长度约束和强风操作限制。通过适当的可视化,规划者将看到
并比较不同的桥梁类型和布局对交通量的影响。可以将此处所描述的原理
应用于其中地图可以用于各种用途的任何地图情形。地图可以用于理解地
形的特征并查找到某个位置的方向。地图也可以是用于比较分地区的数据
的视觉背景幕。最近,地图被用于创建虚拟世界,其中可以在地图中覆盖
或放置建筑物、室内装饰和任意的2-D或3-D对象。图30示出了示例可
视化城市规划图。请注意,图表再次可以在功能上和分析上与虚拟世界(在
此情况下,城市)的地图集成。随着图表变化,虚拟世界也会变化,反之
亦然。
附加示例#3——视觉教育
在其中复杂数据不仅需要由领域从业者理解而且还应由公众理解的诸
如科学、医学、以及人口统计之类的领域,作者可以使用此处所描述的原
理来创建激起受众的兴趣的数据可视化。他们将使用领域特定的比喻,并
提供作者的风格。图31是关于儿童的教育的插图。图32是关于人口密度
的常规插图。通常,这样的可视化仅仅是静态插图。利用此处所描述的原
理,这些可以变成实况的交互式体验。例如,通过输入在地理上分布的增
长模式来作为输入数据,用户可以看到人口峰值变化。创作的模型支持的
某些可视化将让用户执行“假设分析”。即,作者可以改变某些值,并看
到该变化对其他值的影响。
附加示例#4——将视图组件应用到参数目标
在某些情况下,可能需要将视图组件应用到各种参数目标(例如,其
他视图组件),例如,如图33和34所示。具体而言,图33和34两者中
的面板的高度表示拿破仑在1812年的不幸的在俄国的战役中的军队规模。
在图33中,将面板应用于表示拿破仑的军队采取的实际路线的参数目标。
在图34中,将面板应用于一个不同的参数目标:螺旋。如此,可以将视图
组件(如面板)应用于不同的参数目标(如,表示拿破仑的军队采取的实
际路线的视图组件或表示螺旋的视图组件)。
视图组件可以是它们被应用到的参数目标的子。例如,图33中的面板
可以是军队路线的子,而图34中的面板可以是图34中的螺旋的子。另外,
表示军队规模的标签可以是其高度表示该军队规模的面板的子。
理想情况下,与子视图组件的属性关联的解算器和与父视图组件的属
性关联的解算器可以通过依赖树显式地编写,或通过包括这样的解算器的
属性-设置器的相互关系隐式地编写。
如此,设置子中的属性可以触发对父中的属性的重新求解(有时被称
为“提高”),而设置父中的属性可以触发对子中的属性的重新求解(有
时被称为“委派”)。例如,参考图33,用户可以尝试改变面板的高度,
这可以触发面板的属性-设置器以增大面板的比例。另外,面板的比例属性
-设置器可以调用面板组的比例的属性-设置器(提高)。面板组的比例属性
-设置器可以为每一个面板调用单个比例属性-设置器(委派)。
请注意,具体而言,图33是将图表应用到虚拟世界的示例。“虚拟世
界”是假想的地图的某些实物的计算机化表示。地图可以是二维的,或者
也可以是三维的。例如,城市地图可包括以地理关系展示的街道、建筑物、
河流等等。另一方面,“图表”表示应用于变量的数据系列。可以通过将
如图表所示的数据系列应用到虚拟世界的某些方面,使用此处所描述的原
理将图表应用于虚拟世界。该虚拟世界方面可以是水平或垂直面,三维对
象的外部服务、路线等等。虚拟世界可以表示实际的物理空间,或者也可
以只表示假设的区域。虚拟世界可以表示城镇、城市、州、省、地区、建
筑物、邻近地区、行星中的全部或一部分,或任何其他物理区域。
例如,在图33的示例中,图表数据包括,对于许多周期中的每一个,
在该时间拿破仑的军队中的人数。此信息可以适用于拿破仑的军队的路线。
每一个柱线的高度都表示拿破仑的军队在军队的特定旅程段时的士兵数
量。在需要时,在地图中可以包括其他地理特征,如河流、城市、海洋等
等。通过将诸如坐标系统、轴或标志器之类的图表特征应用到诸如表面之
类的虚拟世界特征,可以将图表应用于虚拟世界。
作为图表应用到虚拟世界的其他示例,假设一个公司具有表示雇员情
绪的数据。此图表数据可以适用于虚拟世界,如通过呈现每一个雇员的窗
口的颜色,公司场地的三维呈现,某种颜色代表一种情绪。例如,蓝色窗
口可以表示快乐的雇员,而红色窗口可以表示不快乐的雇员。可以进行适
当的分析。例如,可以取场地地图的高级视图,并确定哪些建筑物趋向于
红色。或许一个建筑物与其他建筑物隔离,导致较少的交互机会,以及较
低的情绪。公司可以重新考虑是否在将来租用该建筑物,而试图为那些雇
员获得和建筑物总体更为接近的建筑物。
因此,此处所描述的原理提供了可视化的问题求解和分析领域的主要
范式转变。该范式转变适用于所有领域,因为此处所描述的原理可以适用
于任何领域。
对数据的领域特定的分类
回顾图2,管道201是数据驱动的。例如,输入数据211被提供到数
据部分210,分析法数据221被提供到分析法部分220,而视图数据231被
提供到视图部分230。描述了这些数据中的每一个的示例。只要说可以由创
作组件240选择的数据量可以十分大就够了,特别是假设其中模型的某些
部分可以被导入到模型中以构成越来越多复杂的模型的合成比较容易。为
有助于在数据中导航,以便可以选择适当的数据211、221和231,分类组
件260提供输入数据的许多领域特定的分类。
图35示出了分类组件260可以在其中操作的分类环境3500。分类涉
及将项目分类为类别并将这些类别相关联。如此,环境3500包括将接受分
类的项3510的集合。在图35中,项3510的集合被示为总共只包括几个项,
包括项3511A到3511P(统称为“成员项3511”)。虽然只示出了几个成
员项3511,但是,可以有应该被分类的任何数量的项,或许甚至数百、数
千或者甚至数百万项,如省略号3511Q所示。成员项3511包括成员项的池,
从该池中,创作组件240可以选择以便向管道201提供数据211、221和231。
领域敏感的分类组件3520访问成员项3511的全部或一部分,还能够
生成成员项3511的不同的分类。例如,分类组件3520生成领域特定的分
类3521。在此情况下,有五个领域特定的分类3521A到3521E,潜在地还
有如省略号3521F所示的其他属性。还可少于五个的由分类组件3520创建
和管理的领域特定的分类。
作为示例,分类3521A可以分类适于“风水”领域的成员项,分类3521B
可以分类适于摩托车设计领域的成员项,分类3521C可以同样适用于城市
规划领域,分类3521D可以适于库存管理领域,而分类3521E可以适于摘
要插图领域。当然,这些只是可以由管道201服务的潜在地无数的领域中
的五个。分类中的每一个都可以使用可用的成员项的全部或子集来在相对
应的分类中进行分类。
图36示出了成员项目的分类的一个具体而简单的示例3600。例如,
分类可以是图35的领域特定的分类3521A。随后的图将阐述更复杂的示例。
分类3600包括类别节点3610,该类别节点3610包括成员项3511的除成员
项3511A和3511E之外的全部。类别节点3610可以是例如包括指向组成
成员项的指针的对象,如此,在逻辑意义上,成员项可以被视为“包括在
类别节点3610内”。类别节点3610还具有与其相关联的属性关联描述符
3611,该描述符3611使用候选成员项的属性来描述类别节点3610的成员
身份资格。当确定是否应该在类别中包括一个成员项时,可以使用属性关
联描述符来针对该成员项的属性评估描述符。
在一个分类中,可以以许多不同的方式将两个类别彼此相关联。一个
常见的关系是,一个类别是另一个类别的子集。例如,如果有包含表示交
通工具的所有对象的“交通工具”类别,则可以有包含交通工具类别的子
集的“小汽车”类别。两个类别的属性关联描述符可以定义特定关系。例
如,交通工具类别的属性关联描述符可以指示具有下列属性的对象将被包
括在类别中:1)对象是可移动的,2)对象可以包含人。小汽车类别属性关
联描述符可要么明确地要么隐式地包括这两个属性要求,还可包括下列属
性要求:1)对象包含至少3个在对象的运动过程中与地球保持接触的轮子,
2)对象是汽车,3)对象的高度不超过6英尺。基于每一个类别的属性关联
描述符,分类组件可以将一个对象分配到任何给定领域特定的分类中的一
个或多个类别,还可理解类别之间的关系。
在图36中,示出了包括另一个属性关联描述符3621的第二类别节点
3620。类别节点3620在逻辑上包括满足属性关联描述符3621的所有成员
项。在此情况下,类别节点中在逻辑上所包括的成员项是第一类别节点3610
中所包括的成员项的子集(例如,包括成员项3511F、3511J、3511N和
3511P)。这可能是因为,第二类别节点3620的属性关联描述符3621指定
与第一类别节点3610的关联描述符3611相同的属性要求,除一个或多个
附加属性要求之外。第一类别节点3610和第二类别节点3620之间的关系
通过关系3615在逻辑上来表示。
在交通工具-小汽车示例中,类别之间的关系是子集关系。即,一个类
别(例如,小汽车类别)是另一个类别(例如,交通工具类别)的子集。
然而,还有各种其他类型的关系,甚至或许之前从来没有被识别或使用的
新关系。例如,可以有大多数继承关系,其中,如果一个类别中的大多数
(或某个指定百分比的)对象具有特定属性值,则另一个类别中的对象具
有此属性,并继承此属性值。可以有“类似的颜色”关系,其中,如果一
个类别对象具有某一波长范围的可见光内的基色,那么,另一个类别包含
具有某一相邻波长范围的可见光内的基色的对象。可以有“病毒突变”关
系,其中,如果一个类别包含表示主要由一种特定病毒所导致的某些传染
病的对象,相关联的类别可包括表示由该病毒的变异形式所导致的某些传
染病的对象。示例可以有很多。本领域技术人员将认识到,在阅读了本描
述之后,类别之间的关系的类型是不受限制的。
此外,一个分类可以具有许多不同类型的关系。为清楚起见,现在将
以摘要方式描述各种分类。在图37A到37C中示出了抽象地表示的分类的
示例。然后,将描述具体示例,理解此处所描述的原理允许领域特定的分
类在数据驱动的可视化中的无数的应用。
图36的示例是简单的两个类别节点分类,而图37A到37C的示例更
复杂。图37A到37C的分类3700A到3700C中的每一个节点都表示包含零
个或更多个成员项的类别节点,并可以具有与每一个相关联的属性关联描
述符,该描述符基本上是用于允许成员项进入类别节点的许可策略。然而,
为避免不适当的复杂性,没有示出分类3700A到3700C的类别节点中的每
一个的成员项和属性关联描述符。类别节点之间的线表示类别节点之间的
关系。它们可以是子集关系或某种其他类型的关系,而无限制。类别节点
之间的关系的准确特征不是关键的。尽管如此,为强调在分类中的类别节
点之间可以有各种关系类型,关系被标记有A、B、C、D或E。
图37A到37C只作为示例来提供。图37A到37C的分类的准确的结
构不仅是不是关键,而且此处所描述的原理准许甚至基于相同输入候选成
员项的组来生成什么样的分类的比较大的灵活性。在这些示例中,分类
3700A包括使用关系类型A、B和C彼此相关联的类别节点3701A到3710A。
分类3700B包括使用关系类型B、C和D彼此相关联的类别3701B到3708B。
分类3700C包括使用关系类型C、D和E彼此相关联的类别3701C到3712C。
在此示例中,分类3700A和3700B是分层的,而分类3700C在更大程度上
是非分层网络。
随着新的候选成员项变得可用,可以针对每一分类中的每一个类别节
点的属性关联描述符,评估那些候选成员项。如果成员项的属性具有准许
成员项满足属性关联描述符的要求(即,许可策略)的值,则成员项被吸
收入类别节点。例如,或许指向成员项的指针被添加到类别节点中。如此,
如果新成员项具有足够数量的属性,则可以将新成员项自动导入到所有分
类中的适当的类别中。
图38示出了包括多个属性3801的成员项目3801。可以有单个属性,
但是,还可有潜在地数千与成员项3800相关联的属性。在图38中,成员
项3800被示为包括四个属性3801A、3801B、3801C和3801D,潜在地还
有如省略号3801F所示的其他属性。对于这些属性可以是什么没有限制。
它们可以是可以对于将成员项分类为一个分类有用的任何东西。
在一个实施例中,可以分类数据部分210、分析法部分220,以及视图
部分230中的每一个的潜在的数据。例如,考虑其中作者正在编写允许个
人(如消费者或街坊)与城市的地图连接的消费者应用程序的领域。
在此消费者领域中,可以有可以被选择的视图数据231的分类。例如,
可以有包括全部建筑物的建筑物类别。可以有不同类型的建筑物:政府大
楼、医院、餐厅、住宅等等。还可有包括铁路、道路,以及运河子类别的
运输类别。道路类别可以包含表示街道、高速公路、自行车道、天桥等等
的类别或对象。街道类别可包括单向街道、多行街道、转弯车道、中央车
道等等的视觉表示的对象或类别。可以有停车场类别,示出了不同类型的
停车场的视觉表示或停车场的其他子类别(例如,多层停车场、地下停车
场、街道停车场、停车场等等)。还可根据停车场是免费的还是收费的来
对停车场进行子分类。
在此消费者领域中还可有输入数据的分类。例如,多层停车场可以具
有与它相关联的数据,诸如,例如,1)停车场是否有代客泊车,2)停车场
每小时的费用是多少,3)停车场开放的小时数,4)停车场是否有安全巡逻,
如果有,停车场每一单位面积有多少保安员,5)停车场的层数,6)如果只
有一层,则停车场的平方尺,如果是多层停车场,则每一层的平方尺,7)多
层停车场发生的按年计的历史汽车失窃数量,8)停车场的用量,9)停车是
否只限于满足一个或多个条件(即,在附近的企业使用,光顾餐厅或商场
等等),或可以有用的任何其他数据。还可有与其他视觉项目相关联的数
据,以及可能决不会影响呈现视觉项目的方式,但是可以在某一时刻用于
计算的数据。
然而,还可有对此消费者地图领域特定的分析法数据221的分类。例
如,分析法可以呈现一个类别中的基于成本的分析法、另一个类别中的基
于时间的分析法、再一个类别中的基于距离的分析法、另一个类别中的目
录分析法,以及另一个类别中的路线分析法。这里,分析法被分类以帮助
作者为所希望的应用形成分析模型。例如,路线分析法类别可包括计算路
线的公式的类别,指定可以对路线作出什么限制的约束(如最短路线,高
速公路的最多使用、回避街道等等),或规则(如特定道路上的交通方向)。
对于其他类别,也可包括类似的子类别。
现在考虑另一个领域,也处理城市的布局,但是,此时,领域是城市
规划。这里,有城市规划者感兴趣的而消费者很少感兴趣或不感兴趣的分
析法。例如,可能有这样的分析法:该分析法计算在给定某一交通流量的
情况下人行道应该有多宽,被置于某一面积中的某一道路类型的每个纵尺
的总体安装和维护成本是什么,在给定未来20年的预期的交通流量模式预
测的情况下,桥的安全因素是什么,在当前城市规划中交通流量瓶颈是什
么,如果在特定位置构建特定建筑物,环境影响将是什么样的,如果对该
特定建筑物的使用施加某些限制,将有什么影响等等。这里,要被求解的
问题不同于在消费者领域要被求解的那些问题。因此,与消费者领域相比,
对于城市规划领域,对分析法的分类可以有很大的不同,尽管两者都处理
城市拓扑。
另一方面,牵引车设计领域可能对整个不同的分析法组感兴趣,并将
使用不同的分类。例如,牵引车设计领域的视觉项目可能完全不同于城市
规划领域的视觉项目。不再有对于城市视觉元素的关心。现在,构成牵引
车的各种视觉元素被分类。作为示例,可以使用什么可以连接到什么的关
系来分类视觉项目。例如,可以有“可以连接到座位的东西”,“可以连
接到汽化器的东西”,“可以连接到后轴的东西”等等的类别。还可有不
同的分析法分类。例如,可以有关于轮胎上的胎面花纹深度的约束,假设
牵引车需要在湿土上导航。可以有计算牵引车或其子组件等等的总重量的
分析法。
图39示出了领域特定的分类3900并表示图35的领域特定的分类3521
的一个示例。在一个实施例中,领域特定的分类包括其中至少一些可用的
数据项被分类为相对应的相关联的类别的数据分类3901,其中至少一些可
用的视图组件被分类为相对应的相关联的视图组件类别的视图组件分类
3903,以及其中至少一些可用的分析法被分类为相对应的相关联的分析法
类别的分析法分类3902。已经描述了其中以领域特定的方式对数据、分析
法以及视图组件进行分类的这样的领域特定的分类的示例。
图40示出了用于导航和使用分析法的方法。与相对应的领域特定的分
析法分类(动作4003)一起访问(动作4001)分析法组件220。如果有多
个领域特定的分析法分类,则在可以访问领域特定的分析法分类(动作
4003)之前,首先标识领域(动作4002)。
然后,可以通过遍历相关联的类别,导航(动作4004)分析法分类。
此导航可以由人在计算系统的协助下执行,或者也可以甚至由计算系统单
独执行,而无需人的同时的协助。计算机或人可以从关联属性描述符导出
要被输入到每一个类别中的分析法的许可策略的该类别的信息。信息还可
由类别之间的关系导出。可以使用导航来解决分析法问题,从而求解输出
模型参数,或者或许为了合并来自多个模型的分析法。可另选地,可以一
开始使用导航来编写分析法模型。
例如,假设分析法分类就要被解决的问题的类型的身份而言来分类关
系。编写者可以通过查看相关的问题类型类别中的所有那些分析法来开始。
该类别可以具有定义要被求解的问题的某些部分的相关联的类别。用户可
以快速地导航到那些相关联的类别,并查找该领域中的相关的分析法。
搜索和探查
如上文所提及的,可以使用数据驱动的分析法模型来构成分析法密集
的搜索和探查操作。图41示出了用于使用数据驱动的分析法模型来进行搜
索的方法4100的流程图。每当搜索工具242接收到或以其他方式访问搜索
请求时,都可以执行方法4100(动作4101)。
此处所描述的原理不仅限于用户可以用来输入搜索请求的机制。尽管
如此,现在将提供几个示例以示出范围广泛的搜索请求输入机制。在一个
示例中,或许搜索请求是基于文本的,并被直接输入到文本搜索字段中。
在另一示例中,或许单选按钮被填充以输入搜索参数。或许,也可以使用
滑块来输入搜索参数的范围。搜索请求可能是以和用户交互的方式生成的。
例如,在用户请求体验到某一噪音级别范围的房地产的情况下,应用程序
可以生成变得越来越响的噪声,并要求用户在噪声变得比用户希望忍受的
更响时按“噪音过高”按钮。
搜索请求不是常规的搜索请求,而是可能要求数据驱动的分析法模型
的求解操作。然而,在求解之前,图2的搜索工具242标识应该被求解以
便能够对请求作出响应的任何模型参数(动作4102)。这可以使用,例如,
上文所讨论的各种分类来做到。例如,在用户正在搜索在一年中的上午9:15
之后的任何时间都不在高山的阴影里的房地产的情况下,可以有叫做“高
山阴影”的被求解的模型变量。在用户搜索体验到某些噪音级别的房地产
的情况下,在给定特定坐标的情况下,可以有要被求解的叫做“平均噪音”
的模型变量。
一旦标识了相关输出变量,就使用分析法部分220的分析关系来求解
输出变量(动作4103)。然后,搜索工具242使用已求解的输出变量来,
使用已求解的值,表达对搜索请求的响应(动作4104)。虽然在某些情况
下用户可以在方法4100正在被执行过程中与方法4100进行交互,但是,
方法4100可以由计算系统来执行,而无需来自人的同时协助。搜索请求可
以由用户或者或许甚至由另一个计算或软件模块所发出。
每当处理搜索请求时,方法4100可以重复很多次。对于每一个搜索请
求,被求解的模型变量可以不同,但是不必是不同的。例如,对具有某一
价格范围和噪音级别的房屋可以有三个搜索请求。例如,可以有对$400,000
到$600,000价格范围内并且其平均噪音级别低于50分贝的房屋的搜索请
求。这里要被求解的参数将是噪音级别。第二搜索请求可以是针对对
$200,000到$500,000价格范围内并且其平均噪音级别低于60分贝的房屋的
搜索请求。这里要被求解的参数将再一次是噪音级别。然而,请注意,在
第二搜索请求中,一些求解操作对于搜索请求已经执行。例如,基于第一
搜索请求,系统已经标识了$400,0000到$500,000价格范围内并且其平均噪
音级别低于50分贝的房屋。如此,对于那些房屋,没有必要重新计算噪音
级别。一旦被求解,就可以保留那些值,用于进行未来的搜索。如此,这
允许用户通过提交后继的请求来执行探查。然后,用户可以提交对$400,000
到$500,000价格范围内并且具有小于45分贝的噪音级别的房屋的第三搜索
请求。由于那些房屋的噪音级别已经被求解,因此,没有必要再次求解它
们。因此,可以以少得多的计算返回搜索结果。本质上,系统可以通过解
决问题来了解新信息,并能够利用该新信息以解决其他问题。
如上文所提及的,每一个搜索请求都可以涉及求解不同的输出模型变
量。例如,在执行刚刚所描述的搜索请求之后,用户可以提交对不在高山
的阴影里的房屋的搜索请求。一旦系统求解了此,每当此用户或另一个用
户提交类似的请求时,可以使用来自该求解的结果来完成该随后的搜索请
求。用户可以提交对将抵抗8.0级地震的房屋的搜索请求,导致模拟验证每
一个房屋将保持不倒、倒下,或者或许提供房屋将保持不倒的某种百分比
机率。对于那些没有足够的结构信息难以执行准确的模拟的房屋,系统可
以简单地声明,结果是非决定性的。一旦执行了地震模拟,除非有要求重
新模拟的对房屋的某种结构改变,或者除非有某种改善的仿真解算器,每
当某人提交对可以承受某一地震震级的房屋的搜索请求时,都可以使用这
些结果。用户还可以执行对某一价格范围的在万一发生5级飓风的情况下
将不能被淹没或毁坏的房屋的搜索请求。
已经较详细地描述了各实施例,作为边注,此处所描述的各种操作和
结构可以,但是不必通过计算系统来实现。因此,为结束本描述,将参考
图25描述示例计算系统。
图42示出了计算系统4200。计算系统现在越来越多地采取各种形式。
计算系统可以,例如,是手持式设备、电器、膝上型计算机、台式计算机、
大型机、分布式计算系统,或者甚至常规上不被视为计算系统的设备。在
此说明书和权利要求书中,术语“计算系统”被广泛地定义为包括其中包
括至少一个处理器以及能够在其上具有可以由处理器执行的计算机可执行
指令的存储器的任何设备或系统(或其组合)。存储器可以采取任何形式,
并可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,
并可包括多个组成计算系统。
如图42所示,在其最基本的配置中,计算系统4200通常包括至少一
个处理单元4202和存储器4204。存储器4204可以是物理系统存储器,可
以是易失性的、非易失性、或两者的某种组合。此处也可以使用术语“存
储器”来指诸如物理存储介质之类的非易失性大容量存储。如果计算系统
是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如此处所
使用的,术语“模块”或“组件”可以是指在计算系统上执行的软件对象
或例程。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计
算系统上执行的对象或进程(例如,作为分离的线程)。
在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实
施例。如果这样的动作是以软件实现的,则执行该动作的相关联的计算系
统的一个或多个处理器响应于已经执行了计算机可执行指令,引导计算系
统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以
及被操作的数据)可以存储在计算系统4200的存储器4204中。
计算系统4200还可以包含可允许计算系统4200诸如通过例如网络
4210等与其他消息处理器进行通信的通信信道4208。通信信道4208是通
信介质的示例。通信介质通常以诸如载波或其它传输机制等“已调制数据
信号”来体现计算机可读指令、数据结构、程序模块或其它数据,并包括
任何信息传送介质。作为示例而非限制,通信介质包括有线介质,如有线
网络或直接线连接,以及诸如声学、无线、红外线及其他无线介质之类的
无线介质。如这里所使用的术语“计算机可读介质”包括存储介质和通信
介质两者。
本发明的范围内的实施例还包括用于携带或其上储存有计算机可执行
指令或数据结构的计算机可读介质。这样的计算机可读介质可以是可由通
用或专用计算机访问的任何可用介质。作为示例而非限制,这样的计算机
可读介质可包括诸如RAM、ROM、EEPROM、CD-ROM之类的物理存储
器和/或存储介质或其他光盘存储、磁盘存储或其他磁存储设备、或可用于
携带或存储计算机可执行指令或数据结构形式的所需程序代码装置且可由
通用或专用计算机访问的任何其他介质。上述的组合也应被包括在计算机
可读介质的范围内。
计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处
理设备执行某一功能或某组功能的指令和数据。尽管用结构特征和/或方法
动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主
题不必限于此处所描述的具体特征或动作。相反,此处所描述的具体特征
和动作是作为实现所要求保护的主题的示例形式来公开的。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述
的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明
的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案
的含义和范围内的所有改变应被权利要求书的范围所涵盖。