首页 / 分析图模型

分析图模型失效专利 发明

技术内容

分析图模型 [0001] 背景 [0002] 向人传达信息的最有效的方式常常是在视觉上进行的。因此,数百万的人处理各种各样的视觉项目,以便传达或接收信息,以及以便协作。这样的视觉项目可包括,例如,概念简图、工程制图、材料清单、描绘诸如建筑物或分子结构之类的各种结构的三维模型、培训材料、带插图的安装说明书、规划图等等。 [0003] 最近,使用例如计算机辅助设计(CAD)以及实体建模应用程序来以电子方式构建这些视觉项目。这些应用程序常常允许作者将数据和约束附加于几何形状中。例如,用于构建材料清单的应用程序可以允许将诸如部件号和供应商之类的属性与每一部件、两个组件之间的最大角度等等相关联。构建圆剧场的电子版本的应用程序可以具有用于指定座位之间的最小间隙的工具等等。 [0004] 这样的应用程序对于设计和技术的进步贡献巨大。然而,任何给定应用程序都具有与可以在视觉上传达的信息的类型、如何在视觉上传达该信息、或可以归于各种视觉表示的数据和行为的范围有关的限制。如果要修改该应用程序以超出这些限制,则计算机程序员通常将要创作扩展该应用程序的能力的新应用程序,或提供全新的应用程序。同样,对于有多少用户(除模型的实际作者以外)可以操纵该模型来测试各种情形也有限制。 [0005] 简要概述 [0006] 此处所描述的各实施例涉及包含多个视觉图项目的图视图的结构。可以构建每一视觉图项目,并使用由与每一视觉图项目相对应的图视图组件所定义的逻辑来将每一视觉图项目放入适当位置,其中该逻辑可以取决于被填充到图视图组件的参数中的一个或多个值。这些参数值中的某些可以与已知模型参数值相对应。然而,其他参数值可以使用定义图模型参数之间的分析关系的模型来求解。在一个实施例中,图模型参数中的哪些已知并且哪些未知可能不是预先确定的。因此,甚至可以使用单个模型为多个求解操作路径准备解算器。图视图合成过程可以是完全数据驱动的,并可包括用于规范化输入数据并将规范化的输入数据绑定到图模型参数的机制。 [0007] 本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。 [0008] 附图简述 [0009] 为了描述可以获得本发明的上文所列举的及其他优点和特征的方式,下面将通过参考附图来呈现对各实施例的更具体的描述。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:图1示出了其中可以使用本发明的原理的环境,包括构建取决于输入数据的视图合成的数据驱动的合成框架; [0010] 图2示出了表示图1的环境的一个示例的管道环境; [0011] 图3示意性地示出了图2的管道的数据部分的实施例; [0012] 图4示意性地示出了图2的管道的分析法部分的实施例; [0013] 图5示意性地示出了图2的管道的视图部分的实施例; [0014] 图6示出了可以通过图2的管道来构建的视图合成的呈现; [0015] 图7示出了用于使用图2的管道环境来生成视图合成的方法的流程图; [0016] 图8示出了用于使用图2的管道环境响应于与视图合成的用户交互来重新生成视图合成的方法的流程图; [0017] 图9示意性地示出了图4的分析法部分的解算器,进一步详细地包括专门解算器的集合; [0018] 图10示出了通过协调专门解算器集合的动作来对未知模型参数进行求解的图9的解算器的流程图; [0019] 图11示出了扩展了图6的示例的集成视图合成的呈现; [0020] 图12示出了架子布局的可视化,并只表示此处所描述的原理可以适用的无数的应用程序中的一个; [0021] 图13示出了此处所描述的原理也可以适用的市区规划的可视化; [0022] 图14示出了本发明的原理可以适用的从而创建更动态的学习环境的比较儿童的教育的常规可视化; [0023] 图15示出了本发明的原理可以适用的从而创建更动态的学习环境的比较人口密度的常规可视化;以及 [0024] 图16示出了表示其中可以实现图1的合成框架(或其各部分)的环境的计算系统。 [0025] 详细描述 [0026] 图1示出了可以用来构建交互式视觉合成的视觉合成环境100。交互式视觉合成的构建是使用数据驱动的分析法和分析结果的可视化来执行的。环境100包括合成框架 110,该合成框架110执行独立于视图合成130的问题领域而执行的逻辑。例如,同一个合成框架110可以用来合成用于城市规划、分子模型、杂货店货架布局、机器性能或装配分析或其他领域专用呈现的交互式视图合成。 [0027] 然而,合成框架110使用领域专用数据120来构建该领域专用的实际视觉合成 130。因此,通过改变域专用数据120,可以使用同一个合成框架110来构建任意数量的不同领域的视图合成,而非必须重新编码合成框架110本身。如此,通过改变数据而非重新编码和重新编译,管道100的合成框架110可以潜在地适用于无限多个问题领域,或至少适用于各种各样的问题领域。然后,可以将视图合成130作为指令提供给适当的2-D或3-D呈现模块。此处所描述的体系结构还允许将预先存在的视图合成模型作为构件方便地合并到新视图合成模型中。在一个实施例中,可以将多个视图合成包括在集成视图合成中,以方便地在对模型的两个可能的解决方案之间进行比较。 [0028] 图2示出了以管道环境200的形式存在的合成框架110的示例体系结构。管道环境200包括管道201本身,以及其他。管道201包括数据部分210、分析法部分220,以及视图部分230,分别参考随后的图3到5以及伴随的描述来详细地对它们进行了描述。现在,在一般水平,管道201的数据部分210可以接受各种不同类型的数据,以规范形式将该数据提供给管道201的分析法部分220。分析法部分220将该数据绑定到各种模型参数,并使用模型分析法求解模型参数中的未知数。然后,将各种参数值提供给视图部分230,该视图部分230使用模型参数的这些值来构建合成视图。 [0029] 管道环境200还包括创作组件240,该创作组件240允许管道201的作者或其他用户制定和/或选择向管道201提供的数据。例如,创作组件240可以用来向数据部分210(由输入数据211表示)、分析法部分220(由分析法数据221表示)以及视图部分230(由视图数据231表示)中的每一个部分提供数据。各种数据211,221和231表示图1的领域专用数据120的示例,下面将更详细地对它们进行描述。创作组件240支持提供各种数据,包括例如数据模式,供模型使用的实际数据,从外部源带进的数据的位置或可能的位置的范围,视觉(图形或动画)对象,可以对画面、建模语句(例如,视图、方程、约束)、绑定等等执行的用户界面交互。在一个实施例中,创作组件只是由总的管理器组件(在图2中未示出,但是由图1的合成框架110表示)所提供的功能的一个部分。该管理器是响应于事件(诸如用户交互事件、外部数据事件,以及来自诸如解算器、操作系统等等之类的其他组件中的任何一个组件的事件)来控制和排序所有其他组件(诸如数据连接器、解算器、查看器等等)的操作的总的指挥器。 [0030] 传统上,交互式视图合成应用程序的生命周期涉及两个关键时间:创作时间和使用时间。在创作时,交互式视图合成应用程序的功能由程序员编码以提供所需领域专用的交互式视图合成。例如,室内设计应用程序的作者(例如,通常是计算机程序员)可能编制允许用户执行室内设计专用的有限动作集的应用程序。 [0031] 在使用时,用户(例如,或许是业主或专业室内设计师)可以使用该应用程序来执行被硬编码到该应用程序中的一组有限动作中的任何一个或多个动作。在室内设计应用程序示例中,用户可以指定被显示的虚拟房间的尺寸,向房间添加家具及其他室内设计组件,或许旋转视图以获得房间的各种角度,设置每一项目的颜色,等等。然而,除非用户是不介意对室内设计应用程序进行反向工程和修改的程序员,否则用户仅限于被应用程序作者允许的有限动作集。例如,除非由应用程序提供,用户将不能使用应用程序自动地算出哪一种窗户布局会将环境噪声最小化,根据“风水”规则房间布局表现得如何,或最小化太阳能贡献。 [0032] 然而,在图2的管道环境200中,创作组件240被用来向现有管道201提供数据,在现有管道201中,正是该数据驱动从定义输入数据,到定义分析模型,到定义在视图合成中如何可视化分析法的结果的整个过程。因此,不必执行任何编码就能使管道201适应各种领域和问题中的任何一个。只有提供给管道201的数据才是需要改变的,以便应用管道 201以从不同问题领域可视化不同视图合成,或者或许调整对于现有领域的问题求解。此外,由于数据可以在使用时(即,运行时)以及在创作时改变,所以可以在运行时修改和/或扩展模型。如此,在创作模型和运行该模型之间有较少的(如果有的话)区别。由于所有创作都涉及编辑数据项,并且由于软件从数据运行其所有的行为,所以对数据的每个改变都立即影响行为,无需重新编码和重新编译。 [0033] 管道环境200还包括用户交互响应模块250,该模块检测用户何时与显示的视图合成进行交互,并随后确定作为响应执行什么操作。例如,某些类型的交互可能不需要提供给管道201的数据的变化,并且因此不需要对视图合成进行更改。其他类型的交互可能改变数据211,221,或231中的一个或多个。在该情况下,此新的或经过修改的数据可能导致新输入数据被提供给数据部分210,可能需要分析法部分220对该输入数据进行重新分析,和/或可能需要视图部分230对视图合成进行重新可视化。 [0034] 因此,管道201可以用来将数据驱动的分析可视化扩展到或许无限多个问题领域,或至少各种各样的问题领域。此外,不必是程序员即可改变视图合成以解决各种问题。 现在将参考图3的相应的数据部分300,图4的分析法部分400,以及图5的视图部分500来按该顺序描述管道201的数据部分210,分析法部分220和视图部分230中的每一部分。 从图3到5显而易见地看出,管道201可以构建成一系列转换组件,其中这些组件各自1)接收某些适当的输入数据,2)响应于该输入数据,执行某些动作(诸如对输入数据执行转换),以及3)输出随后充当下一转换组件的输入数据的数据。 [0035] 管道201可以在客户机上、在服务器上实现,或甚至可以分布在客户机和服务器之间,这没有限制。例如,管道201可以在服务器上实现,并提供呈现指令作为输出。客户机侧的浏览器可以只根据从服务器接收到的呈现指令来进行呈现。在另一方面,管道201可以被包含在客户机上,创作和/或使用在客户机上执行。即使管道201完全在客户机上,管道201仍可以搜索客户机外部的数据源以查找适当的信息(例如,模型、连接器、规范化器、模式,及其他)。还有提供这两种方法的混合的实施例。例如,在一种这样的混合方法中,模型主存在服务器上,但是,web浏览器模块被动态地在客户机上加载,以便使一些模型的交互和查看逻辑在客户机上运行(如此,允许更丰富的并且更快的交互和视图)。 [0036] 图3只示出了图2的管道201的数据部分300的许多可能的实施例中的一种。数据部分300的各功能中的一个功能是以规范格式提供数据,该规范格式符合参考图4所讨论的管道的分析法部分400所理解的模式。数据部分包括访问异构数据301的数据访问组件310。输入数据301在数据能(但是不必)以规范形式呈现给数据访问组件310的意义上可以是“异构”。事实上,构建数据部分300以使得异构数据可以是各种格式。可以由模型访问和操作的不同种类的领域数据的示例包括文本和XML文档、表、列表、分层结构(树)、SQL数据库查询结果、BI(商务智能)立方查询结果、各种格式的诸如2D图形和3D视觉模型之类的图形信息、以及其组合(即,合成)。此外,可以通过提供要被访问的数据的定义(例如,模式)来声明性地扩展可以被访问的数据的种类。因此,数据部分300允许到模型的各种异构输入,还支持可访问的数据类型的运行时、声明性扩展。 [0037] 在一个实施例中,数据访问部分300包括用于从许多不同的数据源获取数据的许多连接器。由于连接器的主要功能中的一个是将对应的数据置于规范形式,这样的连接器下面以及在附图中常常被称为“规范化器”。每一规范化器都可以理解其对应的数据源的专用应用程序编程接口(API)。规范化器还可以包括用于与该对应的API进行接口以从数据源读取和/或向数据源写入数据的对应逻辑。如此,规范化器在外部数据源和数据的存储器映像之间充当桥梁。 [0038] 数据访问组件310评估输入数据301。如果输入数据已经是规范的,并且因此可以由分析法部分400处理,则输入数据可以作为要输入的规范数据340直接提供给分析法部分400。 [0039] 然而,如果输入数据301不是规范的,则适当的数据规范化组件330能够将输入数据301转换为规范格式。数据规范化组件330实际上是数据规范化组件330的集合,每一个数据规范化组件330都能够将具有特定特征的输入数据转换为规范形式。规范化组件330的集合被示为包括四个规范化组件331、332、333和334。然而,省略号335表示也可以有其他数量的规范化组件,或许甚至比所示出的四个更少。 [0040] 输入数据301甚至可以包括规范化器本身以及相关数据特征的标识。数据部分 300可以注册相关数据特征,并向数据规范化组件集合330提供规范化组件,其中可以向可用的规范化组件添加规范化组件。如果稍后接收到具有那些相关特征的输入数据,则数据部分310可以将该输入数据分配给相关的规范化组件。也可以从外部源,诸如从web上的定义的组件库动态地查找规范化组件。例如,如果给定数据源的模式是已知的,但是所需的规范化器不存在,则可以从外部组件库定位规范化器,假设可以找到这样的库并且其中包含所需的组件。该管道也可以解析其模式仍未知的数据,并将解析结果与已知组件库中的模式信息进行比较,以尝试对该数据的类型进行动态判断,并且因此定位所需的规范化器组件。 [0041] 可另选地,并非输入数据包括所有规范化组件,输入数据可以改为提供定义了规范化转换的转换定义。集合330可以被配置成将该转换定义转换为对应的规范化组件,该规范化组件与零个或更多个标准默认规范化转换一起实施转换。这表示其中数据部分300消费输入数据并且不沿着管道向下提供对应的规范化的数据的情况的示例。然而,在或许大多数情况下,输入数据301导致生成对应的规范化的数据340。 [0042] 在一个实施例中,数据部分310可以被配置成在输入数据的文件类型和/或格式类型的基础上将输入数据分配给数据规范化组件。其他特征可包括例如输入数据的源。可以将默认规范化组件分配给没有指定的对应的规范化组件的输入数据。默认规范化组件可以应用一组规则以尝试将输入数据规范化。如果默认规范化组件不能将该数据规范化,则该默认规范化组件可以触发图1的创作组件140,提示用户提供输入数据的模式定义。如果模式定义还不存在,则创作组件140可以呈现模式定义助手,以帮助作者生成可以用来将输入数据转换为规范形式的对应的模式定义。一旦数据处于规范形式,则伴随该数据的模式提供对该数据的足够描述,使得管道201其余部分不需要新代码来解释该数据。相反,管道201包括能够根据可通过可访问的模式声明语言来表达的任何模式来解释数据的代码。 [0043] 无论如何,规范数据340是作为来自数据部分300的输出数据,并作为分析法部分 400的输入数据来提供的。规范数据可包括其中包括各种数据类型的字段。例如,字段可包括简单数据类型,如整数、浮点数字、串、向量、数组、集合、分层结构、文本、XML文档、表、列表、SQL数据库查询结果、BI(商务智能)立方查询结果、各种格式的诸如2D图形和3D视觉模型之类的图形信息,或者甚至这些各种数据类型的复杂组合。作为另一个优点,规范化过程能够规范化各种输入数据。此外,数据部分300能够接受的输入数据的种类也是可扩展的。这在如在本说明书中稍后所讨论的组合多个模型的情况下是有帮助的。 [0044] 图4示出了表示图2的管道201的分析法部分220的示例的分析法部分400。数据部分300将规范化的数据401提供给数据-模型绑定组件410。尽管规范化的数据401可以具有任何规范化的形式,以及任意数量的参数,参数的形式和数量甚至可以在一段输入数据与另一段输入数据之间不同。然而,为了讨论,规范数据401具有字段402A到402H,它们此处可以统称为“字段402”。 [0045] 另一方面,分析法部分400包括许多模型参数411。模型参数的类型和数量可以随着模型不同而不同。然而,为了讨论特定示例,将讨论包括模型参数411A、411B、411C和 411D的模型参数411。在一个实施例中,可以声明性地定义模型参数的标识以及模型参数之间的分析关系,而不使用命令性编码。 [0046] 数据-模型绑定组件410在规范化的数据字段402和模型参数之间调停,由此在各字段之间提供绑定。在此情况下,将数据字段402B绑定到模型参数411A,如由箭头403A所表示的。换言之,数据字段402B的值被用来填充模型参数411A。同样,在此示例中,数据字段402E被绑定到模型参数411B(如由箭头403B所表示的),而数据字段402H被绑定到模型参数411C(如由箭头403C所表示的)。 [0047] 数据字段402A、402C、402D、402F和402G未被示为绑定到模型参数中的任何一个。 这将强调,并非输入数据中的所有数据字段都始终需要被用作模型参数。在一个实施例中,这些数据字段中的一个或多个可以用来向数据-模型绑定组件410提供与来自规范化的数据(对于此规范化的数据,或者或许任何将来类似的规范化的数据)的哪些字段将被绑定到哪一个模型参数有关的指令。这表示可以提供给图2的分析法部分220的分析法数据 221的类型的示例。可以按许多方式形成来自规范化的数据中的哪些数据字段被绑定到哪些模型参数的定义。例如,绑定可以1)由作者在创作时显式地设置,2)由用户在使用时显式地设置(服从由作者施加的任何限制),3)由创作组件240基于算法启发式法自动绑定,和/或4)当确定无法通过算法进行绑定时,由创作组件提示作者和/或用户指定绑定。如此,也可以作为模型逻辑本身的一部分来解决绑定。 [0048] 作者定义哪些数据字段被映射到哪些模型参数的能力给予作者能够使用作者定义模型参数用起来舒服的符号的巨大灵活性。例如,如果一个模型参数表示压力,则作者可以将该模型参数命名为“Pressure”或“P”或对作者有意义的任何其他符号。作者甚至可以重命名模型参数,在一个实施例中,这可能导致数据模型绑定组件410自动地更新以允许以前绑定到旧名称的模型参数的绑定被改为绑定到新名称的模型参数,从而保留所需绑定。这种用于绑定的机制还允许绑定在运行时被声明性地改变。 [0049] 在此示例中,模型参数411D被示为带有星号,以强调数据-模型绑定组件410未向模型参数411D分配值。因此,模型参数411D仍然未知。换言之,未向模型参数411D分配值。 [0050] 建模组件420执行许多功能。首先,建模组件420定义模型参数411之间的分析关系。分析关系421被分类为三个一般类别,包括方程431、规则432和约束433。然而,解算器的列表是可扩展的。例如,在一个实施例中,可以作为分析关系的一部分来包括一个或多个仿真,假设提供了对应的仿真引擎并将其注册为解算器。 [0051] 如此处所使用的术语“方程”与在数学领域中使用的该术语一致。 [0052] 如此处所使用的术语“规则”表示条件语句,其中如果满足了一个或多个条件(条件语句的条件(即“if”)部分),则将采取一个或多个动作(条件语句的结果(即“then”)部分)。如果在条件语句中表达一个或多个模型参数,或者在结果语句中表达了一个或多个模型参数,则规则被应用于这些模型参数。 [0053] 如此处所使用的术语“约束”表示限制被应用于一个或多个模型参数。例如,在城市规划模型中,特定房屋元素可被限于置于具有总的可能的分区目的地的子集的地图位置上。桥元素可被限于低于某一最大长度或一定数量的车道。 [0054] 熟悉该模型的作者可以提供适用于该模型的这些方程、规则和约束的表达式。在仿真的情况下,作者可以提供适当的仿真引擎,该仿真引擎提供模型参数之间的适当的仿真关系。建模组件420可以提供供作者提供方程、规则和约束的自然的符号表达式的机制。 例如,热力学相关模型的作者可以简单地从热力学教科书复制和粘贴方程。将模型参数绑定到数据字段的能力允许作者使用该作者熟悉的任何符号(如在作者依赖的教科书中所使用的原样的符号)或作者希望使用的确切符号。 [0055] 在求解之前,建模组件420还标识将求解哪些模型参数(即,此后称为“输出模型变量”(单数情况下)、或“诸输出模型变量”(复数情况下)、或“(诸)输出模型变量”(一个或多个输出模型变量的情况下))。输出模型变量可以是未知参数,或者它们可以是已知模型参数,其中已知模型参数的值在求解操作中变化。在图4的示例中,在数据-模型绑定操作之后,模型参数411A、411B和411C是已知的,而模型参数411D是未知的。因此,未知模型参数411D可以是诸输出模型变量中的一个。作为替换或补充,已知模型参数411A、 411B和411C中的一个或多个也可以是输出模型变量。然后,如果可能的话,解算器440求解(诸)输出模型变量。在下面所描述的一个实施例中,解算器440能够求解各种输出模型变量,甚至在单个模型内,只要提供足够的输入模型变量以允许求解操作得以执行。输入模型变量可以是,例如,其值在求解操作过程中不会变化的已知模型参数。例如,在图4中,如果模型参数411A和411D是输入模型变量,则解算器可以改为求解输出模型变量411B和 411C。在一个实施例中,解算器可以输出单个模型参数的许多不同数据类型中的任何一个。 例如,不管操作数是整数、浮点、向量、或矩阵,某些方程运算(如加法、减法等等)都适用。 [0056] 在一个实施例中,甚至在解算器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”模型参数的某个进一步的模型分析法。此部分解结果可以在视图合成中以某种方式输出,以允许领域专家看到该部分结果。 [0057] 在图4中以简化形式示出了解算器440。然而,解算器440可以指导多个组成解算器的操作,如参考图9所描述的。在图4中,建模组件420随后使模型参数(包括现在已知的和已求解的输出模型变量)可用作输出以提供给图5的视图部分500。 [0058] 图5示出了表示图2的视图部分230的示例的视图部分500。视图部分500从图 4的分析法部分400接收模型参数411。视图部分还包括包含视图组件集合的视图组件储存库520。例如,此示例中的视图组件储存库520被示为包括视图组件521到524,但视图组件储存库520可以包含任意数量的视图组件。每一个视图组件都可包括零个或更多个输入参数。例如,视图组件521不包括任何输入参数。然而,视图组件522包括两个输入参数 542A和542B。视图组件523包括一个输入参数543,且视图组件524包括一个输入参数544。 也就是说,这只是一个示例。输入参数可以,但是不必影响呈现视觉项目的方式。视图组件 521不包括任何输入参数的事实强调了可以有不参考任何模型参数而生成的视图。考虑只包括不变的固定(内置)数据的视图。这样的视图可以例如构成用户的参考信息。可另选地,考虑只提供浏览目录的一种方式的视图,以便可以从其中选择项目以便导入到模型中。 [0059] 每一视图组件521到524都包括对应的逻辑或与对应的逻辑相关联,当由视图合成组件540使用对应的视图组件输入参数(如果有的话)来执行该逻辑时,使得对应的视图项目被置于虚拟空间550中。该虚拟项目可以是静态图像或对象,或者可以是动态动画虚拟项目或对象。例如,视图组件521到524中的每一个都与对应的逻辑531到534相关联,当这些逻辑被执行时使得对应的虚拟项目551到554分别被呈现在虚拟空间550中。虚拟项目被示为简单形状。然而,虚拟项目在形式上可能十分复杂,或许甚至包括动画。在此描述中,当视图项目被呈现在虚拟空间时,这意味着视图合成组件已经创作了足够的指令,当这些指令被提供给呈现引擎时,呈现引擎能够在显示器上的指定位置并以指定的方式显示该视图项目。 [0060] 可以使用例如图2的创作组件240来将视图组件521到524或许甚至作为视图数据提供给视图部分500。例如,创作组件240可以提供允许作者从多个几何形状中选择或者可能构造其他几何形状的选择器。作者也可以指定每一个视图组件的输入参数的类型,而一些输入参数可以是视图部分500使用的默认输入参数。也可以给与每一视图组件521到524相关联的逻辑提供视图数据,和/或该逻辑也可以包括由视图部分500本身所提供的一些默认功能。 [0061] 视图部分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)当确定无法通过算法进行绑定时,由创作组件提示作者和/或用户指定绑定。 [0062] 如上文所提及的,视图项目可包括动画。举一个简单示例,考虑例如绘制了一个公司在给定时间点(如给定日历季度)的历史和计划收入、广告费用以及按销售区域的利润的柱状图。可以在所需时间跨度内为每一日历季度绘制柱状图。现在,想象您绘制这些图表中的一个,比方说时间跨度中的最早时间的那一个,然后每隔半秒将它替换为下一时间跨度的图表(例如,下一季度)。结果将是随着动画的进行,表示每一个区域的利润、销售以及广告费的柱线的高度发生变化。在此示例中,每一个时段的图表都是动画中的“单元”,其中该单元示出了移动之间的瞬间,其中顺序示出的单元集合模仿移动。常规动画模型允许使用内置的硬编码的图表类型来随着时间的推移而产生动画。 [0063] 然而,相比之下,通过使用管道201,可以使任何类型的视觉项目动画化,并且可以通过改变视觉组件的参数中的任何一个或任何组合来驱动该动画。返回到上面的柱状图示例,想象代替按时间动画化,我们按广告费来动画化。此动画中的每一“单元”是示出了对于给定广告费的值的随着时间的推移的销售和利润的柱状图。如此,随着广告费变化,柱线响应于广告费的变化增长和收缩。 [0064] 动画数据显示的力量是它们使得什么参数对其他参数的变化最敏感变得非常显而易见,因为您立即看到响应于动画参数的变化,每一个参数的值如何快速地变化以及变化到什么程度。 [0065] 管道201还由于下列特征而在其动画能力方面与众不同: [0066] 首先,可以通过模型的分析法来计算动画变量的步骤的顺序,对照只是预定义的范围内的固定步骤顺序。例如,在作为动画变量来改变广告费的示例中,想象所指定的将是“通过广告费来进行动画化,其中对于每一个步骤,广告费增大5%”或“其中广告费是该步骤的总费用的10%”。一个复杂得多的示例是“通过广告费来进行动画化,其中广告费被优化以便使销售随时间的变化速率最大化。”换言之,解算器将确定随时间(即,对于诸如季度之类的每一个连续的时间段)的广告花费的一组步骤,以使得销售的增长率最大化。这里,用户大概不仅希望看到通过改变广告费可以使销售增长要多快,而且希望了解实现此增长的每季度广告费的量(可以作为合成视图的一部分来绘制该值的序列)。 [0067] 其次,可以使任何类型的视觉项目动画化,而不只是传统的数据图表。例如,考虑喷气式发动机的计算机辅助设计(CAD)模型,该模型1)将通过风速参数动画化,2)其中,涡轮机的旋转速度是风速的函数,并且3)其中,涡轮机轴承的温度是风速的函数。喷气式发动机对涡轮叶片不受损或者轴承过热之前涡轮机可以旋转得多快具有限制。如此,在此动画中,我们期望随着风速改变,涡轮叶片和轴承的颜色应该从蓝色(安全)变为红色(临界)。“安全”和“临界”涡轮机RPM的值和轴承温度可以由该模型基于那些部件的物理特征来计算。现在,随着动画在定义的范围内改变风速,我们看到涡轮叶片和轴承都改变了颜色。现在有趣的是注意哪一个首先到达临界,二者中的任何一个是否经受突然(跑道)达到临界。这些类型的效果难以通过查看图表或查看图形的序列来辨别,但是在动画中立即变得显而易见。这只是通过任意参数(风速)使任意视觉项目(CAD模型)动画化的一个示例,动画仍影响其他任意参数(涡轮机RPM和轴承温度)。可以根据要充当动画变量的任何所需的参数来使任何视觉项目的任何参数动画化。 [0068] 第三,可以在中间停止管道201,以便可以由用户修改数据和参数,然后重新启动或恢复动画。如此,例如,在喷气式发动机示例中,如果在给定风速看到失控加热开始,则用户可以在失控时停止动画,修改某些发动机设计标准,诸如轴承或轴承表面材料的类型,并且随后继续动画以查看该改变的效果。 [0069] 如同此处所讨论的其他功能一样,可以由作者来定义动画,和/或让用户操纵以测试各种情形。例如,模型可以被创作成允许某些视觉项目由用户根据用户自己选定的参数和/或在用户选定的动画变量的数据范围内而动画化(包括指定计算出的范围应该是所希望的能力)。这样的动画也可以并排地显示,如在其他“假设分析(what-if)”比较显示中那样。例如,用户可以在带有将来的不同的流行利率或不同的广告费用斜率的两种情形下比较按时间动画化的销售和利润的随时间的动画。在喷气式发动机示例中,用户可以比较改变轴承设计之前和之后情况的发动机的动画。 [0070] 此时,将参考图6描述如何使用合成框架来实际构建视图合成的具体示例,图6示出了包括房间布局601(在房间内布置了家具)并包括“风水”计602的视图合成的3-D呈现600。提供此示例只是为了示出此处所描述的原理如何应用于任何任意的视图合成,而不管是什么领域。因此,图6的示例,以及此处所描述的任何其他示例视图合成,应该被严格地视为只是允许通过参考非限制性的具体示例来更全面地理解抽象概念的示例,而不是限定本发明的更广泛的范围。此处所描述的原理可以适用于构建若干种类的视图合成。尽管如此,参考具体示例可以阐明更广泛的抽象原理。 [0071] 图7示出了用于生成视图构造的方法700的流程图。方法700可以通过图2的管道环境200来执行,因而将频繁地参考图2的管道环境200,以及参考图3到5来对其进行描述,图3到5各自示出了图2的管道的各特定部分。尽管可以执行方法700来构建任何视图合成,将参考图6的视图合成600来描述方法700。方法700的一些动作可由图2的数据部分210来执行,并在图7的左栏在标题“数据”下列出。方法700的其他动作可由图2的分析法部分220来执行,并在图7的左侧第二栏在标题“分析法”下列出。方法700的其他动作由图2的视图部分230来执行,并在图7的右侧第二栏在标题“视图”下列出。动作中的一个动作可由呈现模块来执行,并在右栏中在标题“其他”下列出。可以使用任何常规的或还有待于开发的呈现模块来呈现根据此处所描述的原理构建的视图合成。 [0072] 参考图7,数据部分访问至少共同地影响将显示什么视觉项目或如何显示视觉项目中的给定的一个或多个视觉项目的输入数据(动作711)。例如,参考图6,输入数据可包括家具的每一个项目的视图组件。例如,床、椅子、植物、桌子、花中的每一个,甚至房间本身都可以由对应的视图组件来表示。视图组件可以具有适于该视图组件的输入参数。例如,如果使用动画,则一些输入参数可能影响动画的流动。一些参数可能影响视觉项目的显示,而某些参数可能不影响。 [0073] 例如,房间本身可以是一视图组件。一些输入参数可包括房间的尺寸、房间的朝向、墙壁颜色、墙壁纹理、地板颜色、地板类型、地板纹理、房间内的光源的位置和电源等等。 也可能有不一定反映在此视图合成中,但是可能反映在房间组件的其他视图和使用中的房间参数。例如,房间参数可能具有用度、分以及秒经度和纬度表示的房间的位置。房间参数也可以包括房间组件的作者的标识,以及房间的平均租金。 [0074] 房间内的各种组件也可以由对应的参数化的视图组件来表示。例如,每一植物都可以配置有指定盆风格、盆颜色、盆尺寸、植物颜色、植物弹性、植物对日光的依赖性、植物的每日摄水量、植物每日的氧气产生量、植物位置等等。同样,取决于正在显示的东西的性质,这些参数中的某些参数可能影响如何呈现显示的方式,而其他参数可能不影响。 [0075] “风水”计602也可以是视图组件。该计量表可包括诸如直径、该计量表的直径中所包含的楔子(wedge)的数量、文本颜色等等之类的输入参数。“风水”计的各种楔子也可以是视图组件。在该情况下,对视图组件的输入参数可以是标题(例如,水、山、雷、风、火、地、湖、天)、或许是出现在楔子中的图形、色调等等。 [0076] 分析法部分将输入数据绑定到模型参数(动作721),确定输出模型变量(动作 722),并使用模型参数之间的模型专用的分析关系来求解输出模型变量(动作723)。前面已经讨论了动作721的绑定操作,该操作基本上允许作者灵活地使用模型作者舒服的符号来定义模型分析法方程、规则和约束。 [0077] 输出模型变量的标识可以在一个求解操作与下一求解操作之间不同。即使模型参数可以保持相同,哪些模型参数的标识是输出模型变量将取决于将绑定到特定模型参数的数据的可用性。这在允许用户在给定视图合成中执行“假设分析”方面具有显著暗示。 [0078] 例如,在图6的“风水”房间示例中,假设用户购买了一把新椅子放在他们的起居室。用户可以将房间的设计作为数据提供给管道。这可以通过用创作组件提示用户输入房间尺寸来促进,或许还提供允许用户选择虚拟家具以拖放到虚拟房间中的、实际家具被置于实际房间中的适当位置的选择工具。然后,用户可以选择可以被编辑的一件家具,使其具有用户所购买的新椅子的特征。然后,用户可以将该椅子拖放到房间中。“风水”计602将自动地更新。在此情况下,椅子的位置及其他属性将是输入模型变量,而“风水”分数将是输出模型变量。随着用户将虚拟椅子拖放到各个位置,“风水”计的“风水”分数将更新,如此,用户可以测试将虚拟椅子放在各个位置的“风水”结果。为避免用户必须将椅子拖放到每个可能的位置以看出哪一个位置提供最佳的“风水”,用户可以获得局部视觉线索(诸如,例如,梯度线或箭头),这些局部视觉线索告诉用户从其当前位置在特定方向移动椅子是否使得“风水”更好或更差,以及有多好或多差。 [0079] 然而,用户也可以进行在常规视图合成中未听说过的别的操作。用户可以实际改变输出模型变量。例如,用户可以指示“风水”计中的所需的“风水”分数,并将虚拟椅子的位置保留为输出模型变量。然后,解算器将求解输出模型变量,并提供将达到至少指定的“风水”分数的椅子的一个或多个建议位置。用户可以选择使多个参数成为输出模型变量,而系统可以提供对这些输出模型变量的多个解。这通过参考图9更详细地描述的复杂解算器来促进。 [0080] 返回到图7,一旦求解了输出模型变量,则将模型参数绑定到参数化的视图组件的输入参数(动作731)。例如,在“风水”示例中,在求解了未知“风水”分数之后,将分数作为输入参数绑定到“风水”计视图组件,或者或许绑定到该计量表中所包含的适当的楔子。 可另选地,如果“风水”分数是输入模型变量,则可以求解虚拟椅子的位置,并作为输入参数提供给椅子视图组件。 [0081] 现在将呈现简化示例,该示例示出了解算器如何重新排列方程并改变一个分析模型的所有被驱动的输入和输出模型变量的指定的原理。用户自己不必重新排列方程。该简化示例可能不能准确地表示“风水”规则,但是示出了其原理。假设房间的总“风水”(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。 [0082] 然后,视图部分通过使用输入参数(如果有的话)执行与该视图组件相关联的构建逻辑以构建视觉项目的视图(动作732),来驱动视图合成中的视图项目的构建。然后,可以将该视图构造提供给呈现模块,然后该呈现模块使用该视图构造作为呈现指令(动作 741)。 [0083] 在一个实施例中,构建视图的过程被视为由解算器执行的数据转换。即,对于给定类型的视图(例如,考虑柱状图),存在着包括规则、方程以及约束的模型,该模型通过将输入数据转换为可显示的输出数据结构(称为景物图)来生成视图,该可显示的输出数据结构编码了所有低级几何形状以及呈现软件所需的相关联属性以驱动图形硬件。在柱状图示例中,输入数据将是例如将与诸如图表标题、轴标签等事物的属性一起绘制的数据系列。生成该柱线的模型将具有执行下列操作的规则、方程以及约束:1)统计该数据系列包括多少条目以便确定要绘制多少柱线,2)计算该数据系列横跨的范围(最小值,最大值),以便计算诸如每一个轴的比例和起始/最终值等事物,3)基于前面计算出的缩放因子,计算数据系列中的每一个数据点的柱线的高度,4)统计图表标题中有多少字符,以便计算标题的起始位置和大小,以便适当地定位该标题并使其居于图表的中心等等。总而言之,模型被设计为基于输入数据来计算一组几何形状,这些几何形状被安置在类型为“景物图”的分层数据结构内。换言之,景物图是模型基于输入数据来求解的输出变量。如此,作者可以使用该作者用来创作、定制以及合成任何类型的模型的同一个框架,来设计全新种类的视图、定制的现有视图,并将预先存在的视图合成为合成图。如此,不是程序员的作者可以创建新的视图,而无需编写新代码。 [0084] 返回到图2,回想一下用户交互响应模块250检测用户何时与视图合成进行交互,并使得管道恰当地作出响应。图8示出了用于对用户与视图合成的交互作出响应的方法 800的流程图。具体而言,用户交互响应模块确定管道的哪些组件应该执行进一步的工作以便重新生成该视图,还向管道组件提供表示用户交互的数据或至少取决于用户交互的数据。在一个实施例中,这是通过在相反的(上行)视图/分析法/数据方向上运行并且平行于(下行)数据/分析法/视图管道的转换管道来完成的。 [0085] 交互被作为事件张贴到上行管道中。数据/分析法/视图管道中的每一个变换器都提供处理传入的交互数据的上行变换器。这些变换器可以是空(通路,其在路径之外得到优化)或者它们可以对要进一步向上游馈送的交互数据执行变换操作。这在以下方面提供了管道的正面的性能和响应性:1)诸如对源数据没有影响的视图操纵等对上行转换没有影响的交互行为可以在管道中的最适当的(最不上游)点加以处理,2)中间变换器可以在最终来自更上游的变换器的最后更新之前通过将启发式地确定的更新发回到下游来优化视图更新性能。例如,在接收到数据编辑交互时,视图级变换器可以使立即视图直接更新到视图的景物图中(对于它知道如何解释的编辑),最后的完整更新稍后来自其中实际编辑了源数据的上游数据变换器。 [0086] 当给定视图交互的语义具有到所需的底层数据编辑的非平凡映射时,中间变换器可以提供所需的上游映射。例如,拖动计算出的结果的图上一个点可能需要将计算多个源数据项的新值的倒退解,这些源数据项在图上馈送计算出的值。解算器级上游变换器将能够调用所需解,并将所需的数据编辑传播到上游。 [0087] 图8示出了用于对用户与视图构造的交互作出响应的方法800的流程图。在检测到用户与显示器上的视图合成的呈现进行交互之后(动作801),首先确定该用户交互是否需要重新生成视图(判定框802)。这可以通过呈现引擎引发一个由图2的用户交互响应组件250解释的事件来执行。如果该用户交互不需要重新生成视图(在判定框802中为“否”),则管道不执行重构视图的任何进一步的动作(动作803),但呈现引擎本身可以对视图执行某种转换。这样的用户交互的示例可以是用户增大视图构造的呈现的对比度或旋转该视图构造。由于这些动作可以由呈现引擎本身来执行,所以管道不需要响应于该用户交互执行重构视图的任何操作。 [0088] 另一方面,如果确定用户交互的类型需要重新生成视图构造(在判定框802中为“是”),则由管道重构视图(动作704)。这可能涉及对提供给管道的数据的某种改变。例如,在“风水”示例中,假设用户将在虚拟房间内移动虚拟椅子的位置,则虚拟椅子组件的位置参数因而将变化。将引发一个事件,向分析法部分通知表示虚拟椅子的位置的对应的模型参数也应该改变。然后,分析法组件将重新求解“风水”分数,重新填充“风水”计或楔子的对应的输入参数,使得“风水”计利用适于椅子的新位置的当前“风水”分数来更新。 [0089] 用户交互可能需要以前已知的模型参数现在是未知数,以前未知的参数现在是已知的。这是可能要求输入和输出模型变量的指定变化以便以前指定的输入模型变量可能变为输出模型变量以及反向指定的多个可能的示例中的一个。在该情况下,分析法部分将求解新输出模型变量,从而驱动视图合成的重构。 [0090] 解算器框架 [0091] 图9示出了可以表示图4的解算器440的示例的解算器环境900。解算器环境900可以用软件、硬件或其组合来实现。解算器环境900包括管理和协调专门解算器的集合910的操作的解算器框架901。集合910被示为包括三个专门解算器911、912和913,但是省略号914表示也可以有其他数量(即,三个以上或少于三个)的专门解算器。此外,省略号 914还表示专门解算器的集合910是可扩展的。随着发现和/或开发可以帮助模型分析法的新的专门解算器,可以将这些新专门解算器合并到集合910中,以补充现有专门解算器,或者或许替换现有解算器中的一个或多个。例如,图9示出了新解算器915被使用解算器注册模块921注册到集合910中。作为一个示例,新解算器或许可以是接受一个或多个已知值并求解一个或多个未知值的仿真解算器。其他示例包括用于线性方程组、微分方程、多项式、积分、求根器、因式分解器、优化器等等的系统的解算器。每个解算器都可以在数值模式或在符号模式或在混合数值-符号模式下工作。解的数值部分可以驱动参数化的呈现下游。解的符号部分可以驱动部分解呈现。 [0092] 专门解算器的集合可包括适于求解输出模型变量的任何解算器。如果例如模型要确定自行车的制动器,则可以保证对复变微积分方程的求解。在该情况下,可以将专门复变微积分解算器集成到集合910中,以或许补充或替换现有方程解算器。在一个实施例中,每一个解算器都被设计成求解成特定类型的分析法关系的一个或多个输出模型变量。例如,可以有被配置成求解一个方程中的未知数的一个或多个方程解算器。可以有被配置成应用规则以求解未知数的一个或多个规则解算器。可以有被配置成应用约束以求解未知数的一个或多个约束解算器。其他类型的解算器可以是例如使用输入数据执行仿真以便构建对应的输出数据的仿真解算器。 [0093] 解算器框架901被配置成协调集合910中的一个或多个或全部专门解算器的处理以使得一个或多个输出模型变量被求解。解算器框架901被配置成将已求解的值提供给一个或多个其他外部组件。例如,参考图2,解算器框架901可以将模型参数值提供给管道的视图部分230,以便求解操作影响由视图组件执行来呈现视图项目的方式,或从而影响与视图项目相关联的其他数据。作为求解的另一潜在效果,可以改变模型分析法本身。例如,仅仅作为可以实现这一点的许多示例中的一个示例,可以利用可修改的规则集来创作模型,以便在给定解中,最初不活动的某些规则和/或约束被激活,并且最初被激活的某些规则和/或约束变得不活动。也可以用这种方法修改方程。 [0094] 图10示出了解算器框架901协调集合910中的专门解算器之间的处理的方法 1000的流程图。现在将频繁地参考图9的解算器环境900描述图10的方法1000。 [0095] 解算器框架通过标识哪些模型参数是输入模型变量(动作1001),以及哪些模型参数是输出模型变量(动作1002),并通过标识定义模型参数之间的关系的模型分析法(动作1003),来开始求解操作。给定此信息,解算器框架分析模型参数中的依赖性(动作 1004)。甚至给定固定一组模型参数,并给定固定一组模型分析法,依赖性也可以根据哪些模型参数是输入模型变量以及哪些是输出模型变量而变化。因此,每当使用哪些模型参数的标识是输入并基于模型分析法来执行求解操作时,系统可以推断依赖图。用户不必为每一个求解指定依赖图。通过评估每个求解操作的依赖性,解算器框架具有在一个求解操作过程中求解一组一个或多个模型变量并在下一求解操作中求解另一组一个或多个模型变量的灵活性。在图2到5的上下文中,这意味着用户通过与视图合成进行接口来指定输入什么以及输出什么的更大的灵活性。 [0096] 在某些求解操作中,模型可能根本没有任何输出模型变量。在该情况下,求解将验证全部已知模型参数值,总的来说,满足由该模型的分析法所表达的所有关系。换言之,如果要擦除任何一个数据值,将它变为未知数,然后求解,则被擦除的值将由模型来重新计算,并将与以前的相同。如此,加载的模型已经以求解的形式存在,并且当然,具有未知数并获得解的模型现在也以求解的形式存在。重要的是,与求解的模型的视图进行交互的用户能够编辑视图,这可以具有改变一个或多个数据值的效果,并且因此造成将尝试重新计算输出模型变量的数据值以便新数据值集与分析法相一致的重新求解。用户可以编辑哪些数据值(不管模型是否以输出模型变量启动)是由作者控制的;事实上,这是通过由定义哪些变量表示允许的未知数的作者来控制的。 [0097] 如果存在具有可以独立地被求解而无需首先求解其他表达式中的其他未知数的一个或多个未知数的表达式(判定框1005中为“是”),则可以在任何时间甚至与其他求解步骤平行地求解这些表达式(动作1006)。另一方面,如果存在具有在不首先求解另一表达式中的未知数的情况下无法求解的未知数的表达式,则已经找到求解依赖性。在该情况下,该表达式变为定义相对于另一表达式的操作的特定次序的关系结构(如依赖树)的一部分。 [0098] 在具有对其他表达式的互连的求解依赖性的表达式的情况下,基于所分析的依赖性来确定专门解算器的执行次序(动作1007)。然后,解算器按确定的次序执行(动作 1008)。在一个示例中,在模型分析法被表达为方程、约束以及规则的情况下,执行的次序可以如下所示:1)将带有依赖性的或作为独立表达式不完全可解的方程重写为约束2)求解约束,3)求解方程,以及4)求解规则。规则求解可能导致数据被更新。 [0099] 一旦解算器被按指定的次序执行,则确定求解是否应该停止(判定框1009)。如果例如求解了全部输出模型变量,或者如果确定尽管并非求解了所有输出模型变量,但是专门解算器不能执行任何操作以进一步求解更多输出模型变量,则求解过程应该停止。如果求解过程不应该结束(判定框1009中为“否”),则过程返回到对依赖性的分析(动作 1004)。然而,此时,输入和输出模型变量的标识可能由于被求解的一个或多个输出模型变量而发生变化。另一方面,如果求解过程应该结束(在判断框1009中为“是”),则求解结束(动作1010)。然而,如果由于有太多的输出模型变量而导致模型无法被完全求解,则模型仍然可能在生成部分解时取得成功,其中给输出模型变量分配了反映求解能够进行得多远的符号值。例如,如果模型具有方程A=B+C,B已知是“2”,是输入模型变量,但是C是输出模型变量,A也是输出模型变量,并需要被求解,模型解算器不能产生A的数值,因为B是已知的,而C是未知的;如此,代替全解,解算器返回“2+C”作为A的值。如此,对于作者来说,什么附加变量需要变成已知的是显而易见的,无论通过给它提供一个值或通过添加可以成功地从其他输入数据产生所需的值的进一步的规则/方程/约束或者仿真。 [0100] 每当解算器框架检测到已知模型参数中的任何一个的值有变化,和/或每当解算器框架确定已知和未知模型参数的标识已经变化,则可以重复此方法1000。求解能以至少两种方式进行。首先,如果能以符号方式对模型进行完全求解(即,如果能通过算法重写所有方程、规则以及约束,以使得对于每一个未知数都存在可计算的表达式),则这就完成了,计算该模型。换言之,生成每一个未知数的数据值,和/或调整允许调整的数据值。作为第二可能的方式,如果模型无法以符号方式完全求解,则以符号方式部分地对它进行求解,并且然后确定是否可以使用一个或多个数值方法来达到所需的解。此外,执行优化步骤,以便甚至在第一种情况下,确定使用数值方法相对于执行符号求解方法是否是计算所需值的更快方式。虽然符号方法可以更快,但还是有这样的情况:符号求解可能执行太多的项重写和/或太多的重写规则搜索,以至于放弃此方法并使用数值方法求解会更快。 [0101] 合成视图合成 [0102] 管道201还包括或许被作为创作机制240的一部分来包括的模型导入机制241。 模型导入机制241向作者提供用户界面或其他帮助,以允许作者将预先存在的分析法驱动的模型的至少一部分导入到用户正在构建的当前分析法驱动的模型中。因此,当创作新分析法模型时,作者不必始终从头开始。导入可以是整个分析法驱动的模型,或者或许是该模型的一部分。例如,导入可以造成下列六个潜在的效果中的一个或多个或全部。 [0103] 作为导入的第一潜在的效果,可以将另外的模型输入数据添加到管道中。例如,参考图2,可以向输入数据211、分析法数据221和/或视图数据231中添加另外的数据。另外的模型输入数据也可以包括被添加到图3的数据访问组件310或者可能不同的规范化组件330的另外的连接器。 [0104] 作为导入的第二潜在效果,在模型输入数据和模型参数之间可以有另外的或经过修改的绑定。例如,参考图4,数据-模型绑定器410可能使得在规范化的数据401和模型参数411之间发生另外的绑定。这可能使得已知模型参数的数量增加。 [0105] 作为导入的第三潜在效果,可以有用以生成补充的一组模型参数的另外的模型参数。例如,参考图4,模型参数411可能由于导入的模型的分析行为的导入而扩充。 [0106] 作为导入的第四潜在效果,可以有添加到模型的另外的分析关系(如方程、规则和约束)。另外的输入数据由第一潜在效果产生,另外的绑定由第二潜在效果产生,另外的模型参数由第三潜在效果产生,而另外的分析关系由第四效果产生。这些另外的项目中的任何一个或多个可以被视为影响视图合成的另外的数据。此外,这些效果中的任何一个或多个都可以改变图4的解算器440的行为。 [0107] 作为导入的第五潜在效果,在视图的模型参数和输入参数之间可以有另外的或不同的绑定。例如,参考图5,模型-视图绑定组件510将潜在地扩充的一组模型参数411绑定到视图组件储存库520中的潜在地扩充的一组视图组件。 [0108] 作为导入的第六潜在效果,可以有添加到图5的视图组件储存库520的另外的参数化的视图组件,或许造成新视图项目被添加到视图合成中。 [0109] 因此,通过导入另一模型的全部或一部分,导入与该模型相关联的数据。由于视图合成是数据驱动的,所以这意味着该模型的导入的部分被立即合并到当前视图合成中。 [0110] 当导入预先存在的分析法驱动的分析法模型的一部分时,被提供给管道201的数据发生变化,从而造成管道201立即或响应于某种其他事件重新生成视图合成。因此,在基本上是从现有模型进行的复制和粘贴操作的情况下,由于解析操作,所产生的合成模型可以立即在显示器上查看。 [0111] 作为此功能如何有用的示例,考虑图6的“风水”房间视图合成。此应用程序的作者可以是“风水”专家,并可能希望只从标准房间布局视图合成模型开始。因此,通过导入预先存在的房间布局模型,“风水”专家现在相对快速地,如果不是立即的话,能够看到房间布局601在显示器上显示出来,如图6所示。不仅如此,标准房间布局视图合成模型通常可能附带的家具和房间项目目录,现在已经变得对图6的“风水”应用程序可用。 [0112] 现在,“风水”专家可能希望导入基本的饼图元素作为用于构建“风水”图表元素 602的基础。然而,“风水”专家可为该图表元素指定特定的固定输入参数,包括总共有8个楔子,或许还有每一个楔子的背景图像和标题。现在“风水”专家只需指定分析关系,该分析关系指定模型参数如何相互关联。具体而言,家具的颜色、位置以及类型或其他房间项目都可能对特定“风水”分数具有影响。专家可以简单地记下这些关系,以由此通过分析将房间布局601和“风水”分数互连。这种在其他人的工作上构建的协作能力在创建解决问题并允许视觉分析的应用程序时产生巨大的创造性。这与可能允许用户使用固定依赖图来可视地编程单向数据流的系统完全不同。这些系统可以进行单向求解,最初编程的从输入到输出的方向。给定与用户的交互会话,取决于在任何时间什么是已知的以及什么是未知的,此处所描述的原理允许以多种方式求解。 [0113] 视觉交互 [0114] 直到此时视图合成过程被描述为一次呈现的单个视图合成。例如,图6示出了从一组输入数据生成的单个视图合成。然而,此处所描述的原理可以被扩展到其中包括多个组成视图合成的集成视图合成的示例。这可能在许多不同情况下有用。 [0115] 例如,给定单个一组输入数据,当解算器机制正在求解输出模型变量时,可以有多个可能的解。组成视图合成可能各自表示多个可能的解中的一个,其中另一组成视图合成可能表示另一可能的解。 [0116] 在另一示例中,用户可能简单地希望保留使用特定一组输入数据生成的以前的视图合成,并随后修改该输入数据来尝试新的情形以生成新视图合成。用户还可能希望也保留该第二视图合成,并通过再次改变该输入数据来尝试第三种可能的情形。然后,用户可以同时查看这三种情形,或许通过并排比较,以获取通过一次只查看一个视图合成可能难以获得的信息。 [0117] 图11示出了从图6的“风水”示例延伸的集成视图合成1100。在该集成视图合成中,再次使用元素601和602来表示图6的第一视图合成600,与图6完全相同。然而,这里,有强调地表示的第二视图合成。第二视图合成与第一视图合成的相似之处是有两个元素,房间显示和“风水”分数计。然而,第二视图合成的输入数据不同于第一视图合成的输入数据。例如,在此情况下,家具的多个项目的位置数据将不同,从而导致它们在第二视图合成的房间布局1101中的位置不同于第一视图合成的房间布局601中的位置。然而,与第一视图合成的“风水”计602相比,各种家具项目的不同位置与第二视图合成的“风水”计 1102中的不同“风水”分数相互关联。 [0118] 集成视图合成也可以包括比较元素,该比较元素在视觉上表示至少一个参数的值跨全部以前创建的并且目前显示的视图合成的某一些的比较。例如,在图11中,可以有柱状图,该柱状图示出每一个显示的视图合成的成本和交付时间。这样的比较元素可以是视图组素储存库520中的另外的视图组件。或许,比较视图元素只有在显示多个视图合成时才呈现。在该情况下,可以将比较视图合成输入参数映射到该模型的不同求解迭代的模型参数。例如,可以将比较视图合成输入参数映射到为图11的第一和第二视图合成的生成而产生的成本参数,并将其映射到为第一和第二视图合成的生成而产生的交付参数。 [0119] 参考图11,还有允许用户在视觉上强调全部可用的以前构建的视图合成的选定子集的选择机制1110。选择机制1110被示为包括以缩略图形式示出的或以某种其他不强调的方式示出的三个可能的视图构造1111、1112和1113。每一个缩略图视图合成1111到 1113都包括对应的复选框1121到1123。用户可以选中与将被在视觉上强调的任何视图合成相对应的复选框。在此情况下,复选框1121和1123被选中,从而使得显示对应的视图构造的更大形式。 [0120] 集成视图合成或者甚至该集成视图合成的任何单个视图合成,都可以具有用户与视图合成进行交互以指定什么模型参数应该被视为未知的从而触发通过分析解算器机制的另一求解的机制。例如,在图11的房间显示1101中,可以右击家具的特定项目,右击特定参数(例如,位置),并且可以出现允许用户指定该参数应该被视为未知数的下拉菜单。 然后,用户可以右击协调性百分比(例如,“风水”分数计1102中的95%),于是会出现一个滑动块(或文本框或其他用户输入机制),该滑动块允许用户指定不同的协调性百分比。 由于这将造成已知和未知参数的标识的改变,所以这将造成重新求解,其位置被指定为未知的家具的项目可能出现在新位置。 [0121] 在一个实施例中,集成视图合成也可以包括可以进行的调整的视觉提示,该调整可能在特定方向倾向于模型参数的值。例如,在“风水”示例中,如果特定协调性分数被指定为已知输入参数,则可为家具的该项目(其位置被指定为未知)建议家具的各个位置。例如,或许从家具发出多个箭头,建议移动该家具以便获得更高的协调性百分比的方向,移动以最大化水分数的不同方向,移动以最大化水分数的不同方向等等。视图组件也可以示出椅子可以被移动到的阴影以增加特定分数。如此,用户可以使用这些视觉提示以便围绕需要被优化的特定参数来改进设计。在另一示例中,或许用户希望降低成本。然后,用户可以指定该成本作为要被最小化的未知数,造成不同的一组建议的家具选择。 [0122] 附加示例应用程序 [0123] 图1和2的体系结构可以允许构建无数的数据驱动的分析法模型,而不管领域如何。这些领域根本无需类似。无论哪里有问题需要求解,只要对视觉项目应用分析法是有帮助的,则此处所描述的原理就可以是有益的。直到现在,只描述了几个示例应用程序,包括“风水”房间布局应用程序。为演示此处所描述的原理的广泛的适用性,现在将描述几个补充的广泛的示例应用。 [0124] 补充示例#1-零售货架安排 [0125] 产品销售人员常常使用3-D可视化来销售货架上的商品,最终显示和新促销商品。利用管道201,销售人员将能够在现场进行“假设分析”。给定某些产品布局并给定最小日销售额/纵尺(linear foot)阈值,销售人员可以计算和可视化手边的最小所需库存。 相反,给定手边的某个库存并给定双周补充周期,销售人员可以计算将给出所需销售额/纵尺的产品布局。零售商将能够使这一影响可视化,比较各个情形,并比较利润。图12示出了示例零售商货架安排可视化。输入数据可包括产品的视觉图像、产品数量、为每一个产品分配的线性平方尺,和每一个产品的货架号等等。 [0126] 补充示例#2-城市规划 [0127] 城市规划混搭(mash up)变得很重要。使用此处所描述的原理,可以将分析法集成到这样的解决方案中。城市规划者将打开由专家所创建的交通模型,并从道路改善长廊(gallery)拖进一个桥梁。该桥梁将带来分析行为,诸如长度约束和强风操作限制。通过适当的可视化,规划者将看到并比较不同的桥梁类型和布局对交通量的影响。可以将此处所描述的原理应用于其中地图可以用于各种用途的任何地图情形。地图可以用于理解地形的特征并查找到某个位置的方向。地图也可以是用于比较分地区的数据的视觉背景幕。 最近,地图被用于创建虚拟世界,其中可以在地图中覆盖或放置建筑物、室内装饰和任意的 2-D或3-D对象。图13示出了示例可视化城市规划图。 [0128] 补充示例#3-视觉教育 [0129] 在其中复杂数据不仅需要由领域从业者理解而且还应由公众理解的诸如科学、医学、以及人口统计之类的领域,作者可以使用此处所描述的原理来创建激起受众的兴趣的数据可视化。他们将使用领域专用的比喻,并提供作者的风格。图14是关于儿童的教育的插图。图15是关于人口密度的常规插图。通常,这样的可视化仅仅是静态插图。利用此处所描述的原理,这些可以变成实况的交互式体验。例如,通过输入在地理上分布的增长模式来作为输入数据,用户可以看到人口峰值变化。创作的模型支持的某些可视化将让用户执行“假设分析”。即,作者可以改变某些值,并看到该变化对其他值的影响。 [0130] 因此,此处所描述的原理提供了可视化的问题求解和分析领域的主要范式转变。 该范式转变适用于所有领域,因为此处所描述的原理可以适用于任何领域。 [0131] 已经较详细地描述了各实施例,作为边注,此处所描述的各种操作和结构可以,但是不必通过计算系统来实现。因此,为结束本描述,将参考图16描述示例计算系统。 [0132] 图16示出了计算系统1600。计算系统现在越来越多地采取各种形式。计算系统可以,例如,是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统,或者甚至常规上不被视为计算系统的设备。在此说明书和权利要求书中,术语“计算系统”被广泛地定义为包括其中包括至少一个处理器以及能够在其上具有可以由处理器执行的计算机可执行指令的存储器的任何设备或系统(或其组合)。存储器可以采取任何形式,并可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并可包括多个组成计算系统。 [0133] 如图16所示,在其最基本的配置中,计算系统1600通常包括至少一个处理单元 1602和存储器1604。存储器1604可以是物理系统存储器,可以是易失性的、非易失性、或两者的某种组合。此处也可以使用术语“存储器”来指诸如物理存储介质之类的非易失性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如此处所使用的,术语“模块”或“组件”可以是指在计算系统上执行的软件对象或例程。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分离的线程)。 [0134] 在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行该动作的相关联的计算系统的一个或多个处理器响应于已经执行了计算机可执行指令,引导计算系统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统1600的存储器1604中。 [0135] 计算系统1600还可以包含可允许计算系统1600诸如通过例如网络1610等与其他消息处理器进行通信的通信信道1608。通信信道1608是通信介质的示例。通信介质通常以诸如载波或其它传输机制等“已调制数据信号”来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传送介质。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、无线、红外线及其他无线介质之类的无线介质。如这里所使用的术语“计算机可读介质”包括存储介质和通信介质两者。 [0136] 本发明的范围内的实施例还包括用于携带或其上储存有计算机可执行指令或数据结构的计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可包括诸如RAM、ROM、EEPROM、CD-ROM之类的物理存储器和/或存储介质或其他光盘存储、磁盘存储或其他磁存储设备、或可用于携带或存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,计算机将该连接完全视为计算机可读介质。 因此,任何这样的连接被适当地称为计算机可读介质。上述的组合也应被包括在计算机可读介质的范围内。 [0137] 计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于此处所描述的具体特征或动作。相反,此处所描述的具体特征和动作是作为实现所要求保护的主题的示例形式来公开的。 [0138] 本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。