KR101568893B1 - 분석적 맵 모델 - Google Patents

분석적 맵 모델 Download PDF

Info

Publication number
KR101568893B1
KR101568893B1 KR1020107028988A KR20107028988A KR101568893B1 KR 101568893 B1 KR101568893 B1 KR 101568893B1 KR 1020107028988 A KR1020107028988 A KR 1020107028988A KR 20107028988 A KR20107028988 A KR 20107028988A KR 101568893 B1 KR101568893 B1 KR 101568893B1
Authority
KR
South Korea
Prior art keywords
model
visual map
view
visual
map
Prior art date
Application number
KR1020107028988A
Other languages
English (en)
Other versions
KR20110040776A (ko
Inventor
대릴 이. 루빈
비제이 미탈
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=41445312&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR101568893(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20110040776A publication Critical patent/KR20110040776A/ko
Application granted granted Critical
Publication of KR101568893B1 publication Critical patent/KR101568893B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/313Selection or weighting of terms for indexing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/13Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/02CAD in a network environment, e.g. collaborative CAD or distributed simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Structural Engineering (AREA)
  • Civil Engineering (AREA)
  • Architecture (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Processing Or Creating Images (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Abstract

시각적 맵 아이템들은 각 시각적 맵 아이템에 대응하는 맵 뷰 컴포넌트에 의해 정의되는 로직을 사용하여 각각 구축되고 제자리에 배치될 수 있는데, 이러한 로직은 맵 뷰 컴포넌트의 파라미터(들)에 채워지는 하나 이상의 값에 의존할 수 있다. 이러한 파라미터 값들 중 일부는 알려진 모델 파라미터 값들에 대응할 수 있다. 그러나, 다른 파라미터 값들은 맵 모델 파라미터들 사이의 분석 관계들을 정의하는 모델을 사용하기 위해 해결(solve)되었을 수 있다. 일 실시예에서, 맵 모델 파라미터들 중 어느 것이 알려지고 어느 것이 알려지지 않는지가 미리 결정되지 않을 수 있다. 따라서, 심지어 단일 모델을 사용하는 복수의 해결 연산 경로에 대해 해결기(solver)가 준비될 수 있다. 맵 뷰 컴포지션 프로세스(map view composition process)는 전적으로 데이터 주도적(data-driven)일 수 있고, 입력 데이터를 정규화(canonicalize)하고 정규화된 입력 데이터를 맵 모델 파라미터들에 대해 결속(bind)시키기 위한 메커니즘을 포함할 수 있다.

Description

분석적 맵 모델{ANALYTICAL MAP MODELS}
종종, 인간에게 정보를 전달하는 가장 효과적인 방식은 시각이다. 따라서, 수백만 명의 사람들이 정보를 전달하거나 받기 위해, 그리고 협력하기 위해 넓은 범위의 시각적 아이템들을 연구한다. 이러한 시각적 아이템들은 예컨대 개념 스케치, 공학 도면, 재료 조사표(explosions of bills of materials), 빌딩이나 분자 구조와 같은 다양한 구조를 묘사하는 3차원 모델, 교육 자료, 도해 설치 설명서 및 계획도 등을 포함할 수 있다.
보다 최근에 들어서, 이러한 시각적 아이템들은 예컨대 CAD(Computer Aided Design) 및 솔리드 모델링(solid modeling) 애플리케이션들을 사용하여 전자적으로 구축된다. 종종 이러한 애플리케이션들은 저작자가 데이터 및 제약(constraint)들을 기하 구조(geometry)에 부가할 수 있도록 한다. 예컨대, 재료표(bill of materials)를 구축하기 위한 애플리케이션은 부품 번호 및 공급자와 같은 속성들이 각각의 부품 또는 두 컴포넌트(component)간의 최대 각도 등과 연관되도록 할 수 있다. 경기장의 전자적인 버전을 구축하는 애플리케이션은 좌석들 간의 최소 간격 등을 지정하기 위한 도구를 포함할 수 있다.
이러한 애플리케이션들은 디자인과 기술의 진보에 막대한 기여를 해왔다. 그러나, 임의의 주어진 애플리케이션은 시각적으로 전달될 수 있는 정보의 유형, 그 정보가 시각적으로 전달되는 방식, 또는 다양한 시각적 표현으로 나타낼 수 있는 데이터 및 행위(behavior)의 범위에 대한 제한을 갖는다. 애플리케이션이 이러한 제한들을 넘어 수정되어야 하는 경우, 새로운 애플리케이션은 전형적으로 애플리케이션의 능력들을 확장시키거나 완전히 새로운 애플리케이션을 제공하는 컴퓨터 프로그래머에 의해 저작(author)될 것이다. 또한, 얼마나 많은 (모델의 실제 저작자 이외의) 사용자가 모델을 조작하여 다양한 시나리오를 시험할 수 있는지에 대한 제한이 존재한다.
본 명세서에 기술된 실시예들은 복수의 시각적 맵 아이템을 포함하는 맵 뷰(map view)의 구축과 관련된다. 상기 시각적 맵 아이템들은 각 시각적 맵 아이템에 대응하는 맵 뷰 컴포넌트에 의해 정의되는 로직을 사용하여 각각 구축되고 제자리에 배치될 수 있는데, 이러한 로직은 맵 뷰 컴포넌트의 파라미터(들)에 채워지는 하나 이상의 값에 의존할 수 있다. 이러한 파라미터 값들 중 일부는 알려진 모델 파라미터 값들에 대응할 수 있다. 그러나, 다른 파라미터 값들은 맵 모델 파라미터들 사이의 분석 관계들을 정의하는 모델을 사용하기 위해 해결(solve)되었을 수 있다. 일 실시예에서, 맵 모델 파라미터들 중 어느 것이 알려지고 어느 것이 알려지지 않는지가 미리 결정되지 않을 수 있다. 따라서, 심지어 단일 모델을 사용하는 복수의 해결 연산 경로에 대해 해결기(solver)가 준비될 수 있다. 맵 뷰 컴포지션 프로세스(map view composition process)는 전적으로 데이터 주도적(data-driven)일 수 있고, 입력 데이터를 정규화(canonicalize)하고 정규화된 입력 데이터를 맵 모델 파라미터들에 대해 결속(bind)시키기 위한 메커니즘을 포함할 수 있다.
이러한 요약은 청구된 주제 대상의 중요한 특징들 또는 본질적인 특징들을 식별하기 위한 것이 아니며, 또한 청구된 주제 대상의 범위를 결정하는 데 도움이 되기 위해 사용되기 위한 것도 아니다.
위에서 열거된, 그리고 다른 장점들과 특징들을 얻을 수 있는 방식을 기술하기 위해, 다양한 실시예의 보다 구체적인 설명이 첨부된 도면들을 참조하여 이루어질 것이다. 이러한 도면들은 오직 예시적인 실시예들을 묘사하고 따라서 본 발명의 범위를 한정하는 것으로 간주되지 않아야 한다는 점을 이해하면, 첨부된 도면들의 사용을 통해 실시예들이 추가적인 구체성과 세부 사항을 가지고 기술 및 설명될 것이다.
도 1은 본 발명의 원리들이 이용될 수 있는, 입력 데이터에 의존하는 뷰 컴포지션을 구축하는 데이터 주도 컴포지션 프레임워크를 포함하는 환경을 도시하는 도면.
도 2는 도 1의 환경의 일례를 나타내는 파이프라인 환경을 도시하는 도면.
도 3은 도 2의 파이프라인의 데이터 부분의 실시예를 개략적으로 도시하는 도면.
도 4는 도 2의 파이프라인의 분석 부분의 실시예를 개략적으로 도시하는 도면.
도 5는 도 2의 파이프라인의 뷰 부분의 실시예를 개략적으로 도시하는 도면.
도 6은 도 2의 파이프라인에 의해 구축될 수 있는 뷰 컴포지션의 렌더링(rendering)을 도시하는 도면.
도 7은 도 2의 파이프라인 환경을 사용하여 뷰 컴포지션을 생성하기 위한 방법의 흐름도.
도 8은 도 2의 파이프라인 환경을 사용하여 뷰 컴포지션과의 사용자 상호작용에 응답하여 뷰 컴포지션을 재생성하기 위한 방법의 흐름도.
도 9는 특수(specialized) 해결기들의 모음을 포함하는 도 4의 분석 부분의 해결기를 더 상세히 개략적으로 도시하는 도면.
도 10은 특수 해결기들의 모음의 동작들을 조정함으로써 미지의 모델 파라미터들을 해결하기 위한 도 9의 해결기의 흐름도.
도 11은 도 6의 예를 확장하는 통합된 뷰 컴포지션의 렌더링을 도시하는 도면.
도 12는 본 명세서에 기술된 원리들이 적용될 수 있는 무수한 응용예들 중 하나만을 나타내는, 선반 배치의 시각화를 나타내는 도면.
도 13은 본 명세서에 기술된 원리들이 또한 적용될 수 있는 도시 계획의 시각화를 도시하는 도면.
도 14는 본 발명의 원리들이 더욱 동적인 학습 환경을 생성하는 데 적용될 수 있는, 아동 교육을 비교하는 종래의 시각화를 도시하는 도면.
도 15는 본 발명의 원리들이 더욱 동적인 학습 환경을 생성하는 데 적용될 수 있는, 인구 밀도를 비교하는 종래의 시각화를 도시하는 도면.
도 16은 도 1의 컴포지션 프레임워크(또는 그 일부)가 구현될 수 있는 환경을 나타내는 컴퓨팅 시스템을 도시하는 도면.
도 1은 상호작용식 시각적 컴포지션을 구축하는 데 사용될 수 있는 시각적 컴포지션 환경(100)을 도시한다. 상호작용식 시각적 컴포지션의 구축은 데이터 주도 분석 및 분석 결과의 시각화를 사용하여 수행된다. 환경(100)은 뷰 컴포지션(130)의 문제 영역(problem-domain)과 독립하여 수행되는 로직을 수행하는 컴포지션 프레임워크(110)를 포함한다. 예컨대, 동일한 컴포지션 프레임워크(110)가 도시 계획, 분자 모델, 식품점 선반 배치, 기계 성능 또는 조립 분석, 또는 다른 영역 특정 렌더링에 대한 상호작용식 뷰 컴포지션들을 컴포지션하는 데 사용될 수 있다.
그러나 컴포지션 프레임워크(110)는 영역에 특정한 실제의 시각적 컴포지션(130)을 구축하기 위해 영역 특정 데이터(120)를 사용한다. 따라서, 컴포지션 프레임워크(110) 자체를 재코딩(recode)해야 하는 대신 영역 특정 데이터(120)를 변경함으로써 임의의 개수의 상이한 영역에 대한 뷰 컴포지션들을 구축하기 위해 동일한 컴포지션 프레임워크(110)가 사용될 수 있다. 따라서, 재코딩 또는 재컴파일링(recompile) 대신에 데이터를 변경함으로써, 파이프라인(100)의 컴포지션 프레임워크(110)는 잠재적으로 무한한 개수의 문제 영역에 대해, 또는 적어도 다양한 문제 영역에 대해 적용될 수 있다. 다음으로 뷰 컴포지션(130)은 적합한 2-D 또는 3-D 렌더링 모듈에 대한 명령들로서 공급될 수 있다. 본 명세서에 기술된 아키텍처는 또한 기존의 뷰 컴포지션 모델들을 새로운 뷰 컴포지션 모델들에 대한 건축용 블록들로서 편리하게 포함시킬 수 있도록 한다. 일 실시예에서, 복수의 뷰 컴포지션이 통합 뷰 컴포지션에 포함되어 모델에 대한 두 개의 가능한 해(solution) 사이의 비교를 용이하게 할 수 있다.
도 2는 파이프라인 환경(200)의 형태로 된 컴포지션 프레임워크(110)의 예시적인 아키텍처를 도시한다. 파이프라인 환경(200)은 다른 것들 중에서도 파이프라인(201) 자체를 포함한다. 파이프라인(201)은 데이터 부분(210), 분석 부분(220) 및 뷰 부분(230)을 포함하는데, 이들 각각은 후속하는 도 3 내지 5 및 첨부된 상세한 설명과 관련하여 각각 상세히 기술될 것이다. 여기에서는, 일반적인 수준에서, 파이프라인(201)의 데이터 부분(210)이 다양한 상이한 유형의 데이터를 수용할 수 있고, 이러한 데이터를 정규적인(canonical) 형태로 파이프라인(201)의 분석 부분(220)에게 제공한다. 분석 부분(220)은 데이터를 다양한 모델 파라미터에 결속시키고, 모델 분석을 사용하여 모델 파라미터들 내의 미지의 파라미터들을 해결한다. 다음으로, 다양한 파라미터 값이 뷰 부분(230)에 제공되는데, 뷰 부분(230)은 모델 파라미터들 내의 이러한 값들을 사용하여 합성 뷰를 구축한다.
파이프라인 환경(200)은 또한 파이프라인(201)의 저작자 또는 다른 사용자가 파이프라인(201)에게 제공할 데이터를 작성(formulate) 및/또는 선택할 수 있도록 하는 저작 컴포넌트(authoring component)(240)를 포함한다. 예컨대, 저작 컴포넌트(240)는 데이터 부분(210){입력 데이터(211)로 표현됨}, 분석 부분(220){분석 데이터(221)로 표현됨} 및 뷰 부분(230){뷰 데이터(231)로 표현됨} 각각에게 데이터를 공급하는 데 사용될 수 있다. 다양한 데이터(211, 221 및 231)는 도 1의 영역 특정 데이터(120)의 예를 나타내고, 아래에서 훨씬 더 상세히 기술될 것이다. 저작 컴포넌트(240)는 예컨대 데이터 스키마(schema), 모델에 의해 사용될 실제 데이터, 외부 소스(source)들로부터 가져올 데이터의 위치 또는 가능한 위치들의 범위, 시각적(그래픽 또는 애니메이션) 개체들, 시각적 모델링 구문(statement)(예컨대 뷰, 방정식, 제약)상에서 수행될 수 있는 사용자 인터페이스 상호작용 및 결속(binding) 등을 포함하는 다양한 데이터의 제공을 지원한다. 일 실시예에서, 저작 컴포넌트는 전체 관리자 컴포넌트{도 2에 도시되지 않았으나, 도 1의 컴포지션 프레임워크(110)로 표현됨}에 의해 제공되는 기능의 일부분일 뿐이다. 관리자는 이벤트들(예컨대 사용자 상호작용 이벤트, 외부 데이터 이벤트 및 해결기, 운영 체제 등과 같은 다른 컴포넌트들 중 임의의 것으로부터의 이벤트)에 응답하여 모든 다른 컴포넌트들(예컨대 데이터 접속기, 해결기 및 뷰어 등)의 연산을 제어하고 시퀀싱하는 전체 감독자이다.
전통적으로, 상호작용식 뷰 컴포지션 애플리케이션의 수명은 저작 시기 및 사용 시기라는 두 개의 주요 시기를 수반한다. 저작 시기에는, 상호작용식 뷰 컴포지션 애플리케이션의 기능이 프로그래머에 의해 코딩되어 원하는 영역에 특정한 상호작용식 뷰 컴포지션을 제공한다. 예컨대, 인테리어 디자인 애플리케이션의 저작자(예컨대 전형적으로 컴퓨터 프로그래머)는 사용자가 인테리어 디자인에 특유한 동작들의 한정된 집합을 수행하도록 하는 애플리케이션을 코딩할 수 있다.
사용 시기에는, 사용자(예컨대 아마도 주택 소유자 또는 전문적인 인테리어 디자이너)가 상기 애플리케이션을 사용하여 상기 애플리케이션 내로 하드 코딩(hard code)된 유한한 동작들의 집합 중 임의의 하나 이상을 수행할 수 있다. 인테리어 디자인 응용예에서, 사용자는 디스플레이되고 있는 가상적인 방의 치수를 지정하고, 방에 가구 및 다른 인테리어 디자인 컴포넌트들을 추가하며, 가능하게는 뷰를 회전하여 방에 대한 다양한 각도를 얻고, 각 아이템의 색을 설정하는 등을 할 수 있다. 그러나, 사용자가 인테리어 디자인 애플리케이션의 역설계(reverse engineering) 및 수정을 마다하지 않는 프로그래머인 경우, 사용자는 애플리케이션 저작자에 의해 가능해진 동작들의 한정된 집합으로 제한될 것이다. 예컨대, 애플리케이션에 의해 제공되지 않는 경우, 사용자는 애플리케이션을 사용하여 어떤 창 배치가 주변 잡음을 최소화하는지, 방 배치가 어떻게 풍수 규칙들(Feng Shui rules)에 따라 수행되는지, 또는 태양열의 영향을 최소화하는지를 자동으로 산출할 수 없을 것이다.
그러나, 도 2의 파이프라인 환경(200)에서, 저작 컴포넌트(240)는 가존의 파이프라인(201)에 데이터를 제공하는 데 사용되는데, 여기서 입력 데이터를 정의하는 것으로부터 분석 모델을 정의하는 것까지, 그리고 분석 결과가 어떻게 뷰 컴포지션으로 시각화되는지를 정의하는 것까지 전체 프로세스를 주도하는 것은 데이터이다. 따라서, 다양한 영역 및 문제 중 임의의 것에 파이프라인(201)을 적응시키기 위해 어떠한 코딩도 수행할 필요가 없다. 상이한 문제 영역으로부터의 상이한 뷰 컴포지션을 함께 시각화하거나 또는 아마도 기존 영역에 대한 문제 해결을 조절하도록 파이프라인(201)을 적용하기 위해 변경되어야 할 것은 파이프라인(201)에 제공되는 데이터뿐이다. 또한, 데이터는 사용 시기(즉, 실행 시기)뿐만 아니라 저작 시기에도 변경될 수 있기 때문에, 모델은 실행시에 수정 및/또는 확장될 수 있다. 따라서, 모델을 저작하는 것과 모델을 실행하는 것 사이의 구분은 존재한다 하더라도 더 적다. 모든 저작은 데이터 아이템들의 편집을 수반하기 때문에, 그리고 소프트웨어는 데이터로부터 이것의 모든 행위를 실행하기 때문에, 데이터에 대한 모든 변경은 재코딩 및 재컴파일링에 대한 필요 없이 즉시 행위에 영향을 미친다.
파이프라인 환경(200)은 또한 사용자가 디스플레이된 뷰 컴포지션과 언제 상호작용하였는지를 탐지하고 다음으로 그에 응답하여 무엇을 할지를 결정하는 사용자 상호작용 응답 모듈(250)을 포함한다. 예컨대, 소정의 유형의 상호작용들은 파이프라인(201)에 제공되는 데이터의 변화를 요구하지 않을 수 있고, 따라서 뷰 컴포지션에 대한 변화를 요구하지 않을 수 있다. 다른 유형의 상호작용들은 데이터(211, 221 또는 231) 중 하나 이상을 변경시킬 수 있다. 그러한 경우, 이러한 새로운 또는 수정된 데이터는 새로운 입력 데이터가 데이터 부분(210)에 제공되도록 야기하고/하거나 분석 부분(220)에 의한 입력 데이터의 재분석을 요구하고/하거나 뷰 부분(230)에 의한 뷰 컴포지션의 재시각화를 요구할 수 있다.
따라서, 파이프라인(201)은 데이터 주도 분석 시각화를 가능하게는 무한한 개수의 문제 영역으로, 또는 적어도 다양한 문제 영역으로 확장시키는 데 사용될 수 있다. 또한, 다양한 문제에 대처하도록 뷰 컴포지션을 변경하기 위해 우리가 프로그래머일 필요도 없다. 파이프라인(201)의 데이터 부분(210), 분석 부분(220) 및 뷰 부분(230) 각각은 이제 도 3의 데이터 부분(300), 도 4의 분석 부분(400) 및 도 5의 뷰 부분(500)과 관련하여 각각 이러한 순서로 기술될 것이다. 도 3 내지 5로부터 명확해지는 바처럼, 파이프라인(201)은 일련의 변환 컴포넌트로서 구축될 수 있는데, 여기서 이들은 각각 1) 소정의 적합한 입력 데이터를 수신하고, 2) 그러한 입력 데이터에 응답하여 소정의 동작을 수행하고(예컨대 입력 데이터에 대한 변환을 수행함), 3) 이후 다음 변환 컴포넌트에 대한 입력 데이터의 역할을 하는 데이터를 출력한다.
파이프라인(201)은 클라이언트 상에서 또는 서버 상에서 구현될 수 있거나, 또는 클라이언트와 서버 사이에 제한 없이 분산될 수도 있다. 예컨대, 파이프라인(201)은 서버 상에서 구현될 수 있고, 렌더링 명령들을 출력으로서 제공할 수 있다. 다음으로, 클라이언트 측에 있는 브라우저는 서버로부터 수신된 렌더링 명령들에 따라 렌더링할 수 있다. 스펙트럼의 다른 쪽 끝에서, 파이프라인(201)이 클라이언트 상에 포함되어 클라이언트에서 저작 및/또는 사용이 수행되도록 할 수 있다. 파이프라인(201)이 전체적으로 클라이언트에 있다 하더라도, 파이프라인(201)은 여전히 클라이언트의 외부에 있는 데이터 소스들에서 적합한 정보(예컨대 모델, 접속기, 정규화기 및 스키마 등)를 검색할 것이다. 이러한 두 가지 접근법의 혼성(hybrid)을 제공하는 실시예들이 또한 존재한다. 예컨대, 이러한 혼성 접근법 중 하나에서는, 모델이 서버 상에서 호스팅되지만, 웹 브라우저 모듈들은 클라이언트 상에 동적으로 로딩되어 모델의 상호작용 및 뷰 로직 중 일부가 클라이언트 상에서 실행되도록 한다(따라서 더 풍부하고 빠른 상호작용과 뷰를 가능하게 함).
도 3은 도 2의 파이프라인(201)의 데이터 부분(300)의 많은 가능한 실시예 중 단지 하나를 도시한다. 데이터 부분(300)의 기능들 중 하나는 도 4와 관련하여 논의되는 파이프라인의 분석 부분(400)이 이해하는 스키마들과 일치하는 정규 형식으로 데이터를 제공하는 것이다. 데이터 부분은 이종(heterogenic) 데이터(301)를 액세스하는 데이터 액세스 컴포넌트(310)를 포함한다. 입력 데이터(301)는 데이터가 정규 형식으로 데이터 액세스 컴포넌트(310)에 제공될 수 있다(반드시 그러할 필요는 없음)는 의미에서 "이종"일 수 있다. 사실, 데이터 부분(300)은 이종 데이터가 다양한 형식을 가질 수 있도록 구조화된다. 모델들에 의해 액세스되고 연산될 수 있는 상이한 종류의 영역 데이터의 예들은 텍스트 및 XML 문서, 표, 목록, 계층(트리), SQL 데이터베이스 질의 결과, BI 큐브(Business Intelligence Cube) 질의 결과, 다양한 형식의 2D 도면 및 3D 시각 모델과 같은 그래픽 정보 및 이들의 조합(즉, 합성)을 포함한다. 또한, 액세스될 수 있는 데이터의 종류는 액세스될 데이터에 대한 정의(예컨대 스키마)를 제공함으로써 선언적으로(declaratively) 확장될 수 있다. 따라서, 데이터 부분(300)은 모델에 대한 다양한 이종 입력을 허용하고, 또한 액세스 가능한 데이터 유형들을 실행시에 선언적으로 확장하는 것을 지원한다.
일 실시예에서, 데이터 액세스 부분(300)은 다수의 상이한 데이터 소스로부터 데이터를 획득하기 위한 다수의 접속기를 포함한다. 접속기의 주요 기능들 중 하나는 대응하는 데이터를 정규 형태로 배치하는 것이므로, 이러한 접속기들은 종종 이후에 그리고 도면에서 "정규화기(canonicalizer)"들이라고 일컬어질 것이다. 각 정규화기는 자신의 대응하는 데이터 소스의 특정한 API(Application Program Interface)들에 관한 이해를 가질 수 있다. 정규화기는 또한 데이터 소스에 대한 데이터의 판독 및/또는 기록을 위해 그 대응하는 API와 인터페이싱(interface)하기 위한 대응하는 로직을 포함할 수 있다. 따라서, 정규화기들은 외부 데이터 소스들과 데이터의 메모리 이미지 사이를 브리징(bridge)한다.
데이터 액세스 컴포넌트(310)는 입력 데이터(301)를 평가한다. 입력 데이터가 이미 정규적이고 따라서 분석 부분(400)에 의해 처리될 수 있는 경우, 입력 데이터는 분석 부분(400)에 입력될 정규 데이터(340)로서 직접 제공될 수 있다.
그러나, 입력 데이터(301)가 정규적이지 않은 경우, 적합한 데이터 정규화 컴포넌트(330)가 입력 데이터(301)를 정규 형태로 전환시킬 수 있다. 데이터 정규화 컴포넌트들(330)은 실제로는 특정한 특성들을 갖는 입력 데이터를 정규 형태로 각각 전환시킬 수 있는 데이터 정규화 컴포넌트들(330)의 모음이다. 정규화 컴포넌트들(330)의 모음은 4개의 정규화 컴포넌트(331, 332, 333 및 334)를 포함하는 것으로서 도시된다. 그러나, 생략 부호(335)는 다른 개수, 가능하게는 도시된 4개보다도 적은 개수의 정규화 컴포넌트들이 또한 존재할 수 있음을 나타낸다.
입력 데이터(301)는 정규화기 자체뿐만 아니라 상관된 데이터 특성(들)의 식별(identification)을 포함할 수도 있다. 이후 데이터 부분(300)은 상관된 데이터 특성들을 등록할 수 있고, 정규화 컴포넌트를 데이터 정규화 컴포넌트 모음(330)에 제공할 수 있는데, 이러한 정규화 컴포넌트는 가용 정규화 컴포넌트들에 추가될 수 있다. 이러한 상관된 특성들을 갖는 입력 데이터가 나중에 수신되는 경우, 데이터 부분(310)은 입력 데이터를 상관된 정규화 컴포넌트에 할당할 수 있다. 정규화 컴포넌트들은 또한 외부 소스들로부터, 예컨대 웹 상의 정의된 컴포넌트 라이브러리들로부터 동적으로 발견될 수 있다. 예컨대, 주어진 데이터 소스에 대한 스키마가 알려져 있지만 필요한 정규화기가 존재하지 않으면, 외부 컴포넌트 라이브러리로부터 정규화기를 찾아낼 수 있다(이러한 라이브러리가 발견될 수 있고 필요한 컴포넌트들을 포함하는 경우). 파이프라인은 또한 스키마가 아직 알려지지 않은 데이터를 분석할 수 있고, 분석 결과를 알려진 컴포넌트 라이브러리에 있는 스키마 정보와 비교하여 데이터의 유형을 동적으로 결정하도록 시도할 수 있고 따라서 필요한 정규화기 컴포넌트들을 찾아낼 수 있다.
대안적으로, 정규화 컴포넌트 전부를 포함하는 입력 데이터 대신에, 입력 데이터는 정규화 변환을 정의하는 변환 정의를 대신 제공할 수 있다. 다음으로, 모음(330)은 변환 정의를 0 이상의 표준 디폴트(default) 정규화 변환과 함께 변환을 시행하는 대응하는 정규화 컴포넌트로 전환시키도록 구성될 수 있다. 이는 데이터 부분(300)이 입력 데이터를 소비하고 파이프라인의 더 아래쪽으로 대응하는 정규화된 데이터를 제공하지 않는 경우의 예를 나타낸다. 그러나, 아마도 대부분의 경우에, 입력 데이터(301)는 대응하는 정규화된 데이터(340)가 생성되는 결과를 낳는다.
일 실시예에서, 데이터 부분(310)은 입력 데이터를 입력 데이터의 파일 유형 및/또는 형식 유형에 기초하여 데이터 정규화 컴포넌트에 할당하도록 구성될 수 있다. 다른 특징들은 예컨대 입력 데이터의 소스를 포함할 수 있다. 디폴트 정규화 컴포넌트는 지정된 대응하는 정규화 컴포넌트를 갖지 않는 입력 데이터에 할당될 수 있다. 디폴트 정규화 컴포넌트는 입력 데이터를 정규화하도록 시도하기 위한 규칙들의 집합을 적용할 수 있다. 디폴트 정규화 컴포넌트가 데이터를 정규화할 수 없는 경우, 디폴트 정규화 컴포넌트는 도 1의 저작 컴포넌트(140)를 트리거링(trigger)하여 사용자에게 입력 데이터에 대한 스키마 정의를 제공하도록 촉구(prompt)할 수 있다. 스키마 정의가 기존에 존재하지 않는 경우, 저작 컴포넌트(140)는 입력 데이터를 정규 형태로 변환하는 데 사용될 수 있는 대응하는 스키마 정의를 저작자가 생성하는 것을 돕도록 스키마 정의 도우미(schema definition assistant)를 제공할 수 있다. 데이터가 정규 형태이면, 데이터에 수반하는 스키마는 파이프라인(201)의 나머지가 데이터를 해석하기 위한 새로운 코드를 필요로 하지 않기에 충분한 데이터의 설명을 제공한다. 그 대신, 파이프라인(201)은 액세스 가능한 스키마 선언 언어로 표현 가능한 임의의 스키마에 비추어 데이터를 해석할 수 있는 코드를 포함한다.
여하 간에, 정규 데이터(340)는 데이터 부분(300)으로부터의 출력 데이터로서, 그리고 분석 부분(400)에 대한 입력 데이터로서 제공된다. 정규 데이터는 다양한 데이터 유형을 포함하는 필드들을 포함할 수 있다. 예컨대, 필드들은 정수, 부동 소수점 수, 문자열, 벡터, 어레이, 모음, 계층적 구조, 텍스트, XML 문서, 표, 목록, SQL 데이터베이스 질의 결과, BI 큐브 질의 결과, 다양한 형식의 2D 도면 및 3D 시각 모델과 같은 그래픽 정보와 같은 단순한 데이터 유형들, 또는 이러한 다양한 데이터 유형의 더욱 복잡한 조합들을 포함할 수 있다. 다른 장점으로서, 정규화 프로세스는 다양한 입력 데이터를 정규화할 수 있다. 또한, 데이터 부분(300)이 수용할 수 있는 다양한 입력 데이터는 확장될 수 있다. 이는 본 명세서에서 나중에 논의되는 바처럼 복수의 모델이 조합되는 경우에 도움이 된다.
도 4는 도 2의 파이프라인(201)의 분석 부분(220)의 예를 나타내는 분석 부분(400)을 도시한다. 데이터 부분(300)은 정규화된 데이터(401)를 데이터 모델 결속 컴포넌트(410)에 제공하였다. 정규화된 데이터(401)는 임의의 정규화된 형태와 임의의 개수의 파라미터를 가질 수 있는데, 형태 및 파라미터의 개수는 심지어 입력 데이터의 한 부분과 다른 부분에서 상이할 수 있다. 그러나, 논의의 목적을 위해, 정규 데이터(401)는 본 명세서에서 집합적으로 "필드(402)"라고 일컬어질 수 있는 필드 402A 내지 402H를 갖는다.
한편으로, 분석 부분(400)은 다수의 모델 파라미터(411)를 포함한다. 모델 파라미터들의 유형 및 개수는 모델에 따라 상이할 수 있다. 그러나, 특정한 예에 관한 논의의 목적을 위해, 모델 파라미터들(411)은 모델 파라미터 411A, 411B, 411C 및 411D를 포함하는 것으로서 논의될 것이다. 일 실시예에서, 모델 파라미터들의 아이덴티티(identity) 및 모델 파라미터들 간의 분석 관계는 명령형(imperative) 코딩을 사용하지 않고 선언적으로 정의될 수 있다.
데이터 모델 결속 컴포넌트(410)는 정규화된 데이터 필드들(402)과 모델 파라미터들(411) 사이를 중재하는데, 그럼으로써 필드들 사이에 결속을 제공한다. 이러한 경우, 데이터 필드(402B)는 화살표(403A)로 나타낸 바처럼 모델 파라미터(411A)에 결속된다. 달리 말해, 데이터 필드(402B)로부터의 값은 모델 파라미터(411A)를 채우는 데 사용된다. 또한, 이 예에서, 데이터 필드(402E)는 모델 파라미터(411B)에 결속되고{화살표(403B)로 나타냄}, 데이터 필드(402H)는 모델 파라미터(411C)에 결속된다{화살표(403C)로 나타냄}.
데이터 필드들(402A, 402C, 402D, 402F 및 402G)은 모델 파라미터들 중 어떤 것에도 결속되지 않은 것으로 도시된다. 이는 입력 데이터로부터의 데이터 필드 전부가 항상 모델 파라미터로서 사용되어야 할 필요가 있는 것은 아님을 강조하기 위한 것이다. 일 실시예에서, 이러한 데이터 필드들 중 하나 이상은 정규화된 데이터로부터의 어느 필드들(이러한 정규화된 데이터 또는 가능하게는 임의의 장래의 유사한 정규화된 데이터에 관한 것임)이 어느 모델 파라미터에 결속될지에 관한 명령들을 데이터 모델 결속 컴포넌트(410)에 제공하는 데 사용될 수 있다. 이는 도 2의 분석 부분(220)에 제공될 수 있는 분석 데이터(221)의 종류에 관한 예를 나타낸다. 정규화된 데이터로부터의 어느 데이터 필드들이 어느 파라미터들에 결속될지에 관한 정의는 다수의 방식으로 작성될 수 있다. 예컨대, 결속은 1) 저작 시기에 저작자에 의해 명시적으로 설정되고/되거나, 2) 사용 시기에 사용자에 의해 명시적으로 설정되고/되거나(저작자에 의해 부과된 임의의 제한을 받을 수 있음), 3) 알고리즘 휴리스틱(algorithmic heuristics)에 기초하여 저작 컴포넌트(240)에 의해 자동으로 결속되고/되거나, 4) 결속이 알고리즘적으로 만들어질 수 없다고 결정되는 경우에 저작자의 저작 컴포넌트 및/또는 사용자에 의해 결속을 지정하도록 촉구할 수 있다. 따라서, 결속은 또한 모델 로직 자체의 일부로서 해결될 수 있다.
어느 데이터 필드들이 어느 모델 파라미터들에 매핑(map)되는지를 저작자가 정의할 수 있는 능력은 저작자가 친숙한 기호들을 모델 파라미터들을 정의하는 데 사용할 수 있는 유연성을 저작자에게 제공한다. 예컨대, 모델 파라미터들 중 하나가 압력을 나타내는 경우, 저작자는 모델 파라미터를 "Pressure" 또는 "P" 또는 저작자에게 의미가 있는 임의의 다른 기호로 명명할 수 있다. 저작자는 모델 파라미터를 개명할 수도 있는데, 이는 일 실시예에서 종전의 명칭을 갖는 모델 파라미터에 대한 이전의 결속이 그 대신 새로운 명칭을 갖는 모델 파라미터에 결속되도록 데이터 모델 결속 컴포넌트(410)가 자동으로 업데이트하게 만들 수 있다. 결속을 위한 이러한 메커니즘은 또한 결속이 실행시에 선언적으로 변경되게 할 수 있다.
모델 파라미터(411D)는 별표와 함께 도시되는데, 이는 이 예에서 모델 파라미터(411D)가 데이터 모델 결속 컴포넌트(410)에 의해 값을 할당받지 않았음을 강조하기 위한 것이다. 따라서, 모델 파라미터(411D)는 알려지지 않은 채로 남는다. 달리 말해, 모델 파라미터(411D)는 값을 할당받지 않는다.
모델링 컴포넌트(420)는 다수의 기능을 수행한다. 첫째로, 모델링 컴포넌트(420)는 모델 파라미터들(411) 사이의 분석 관계들(421)을 정의한다. 분석 관계들(421)은 방정식들(431), 규칙들(432) 및 제약들(433)을 포함하는 3개의 일반적인 카테고리로 카테고리화된다. 그러나, 해결기들의 목록은 확장 가능하다. 일 실시예에서, 예컨대 하나 이상의 시뮬레이션이 분석 관계들의 일부로서 포함될 수 있다(대응하는 시뮬레이션 엔진이 제공되고 해결기로서 등록되는 경우).
본 명세서에서 사용되는 "방정식"이라는 용어는 수학 분야에서 사용되는 용어와 마찬가지이다.
본 명세서에서 사용되는 "규칙"이라는 용어는 하나 이상의 조건(조건문의 조건 부분 또는 "if" 부분)이 충족되는 경우에 하나 이상의 동작(조건문의 결과 부분 또는 "then" 부분)이 취해지는 조건문을 의미한다. 하나 이상의 모델 파라미터가 조건문에서 표현되는 경우, 또는 하나 이상의 모델 파라미터가 결과문에서 표현되는 경우 규칙이 모델 파라미터들에 적용된다.
본 명세서에서 사용되는 "제약"이라는 용어는 하나 이상의 모델 파라미터에 제약이 적용됨을 의미한다. 예컨대, 도시 계획 모델에서, 특정한 주택 요소는 전체 가능한 구역 지정의 부분 집합을 갖는 지도 위치 상의 배치로 제한될 수 있다. 교량 요소(bridge element)는 소정의 최대 길이 또는 소정 개수의 차로(lanes) 미만으로 제한될 수 있다.
모델에 익숙한 저작자는 그 모델에 적용되는 이러한 방정식들, 규칙들 및 제약의 표현들을 제공할 수 있다. 시뮬레이션의 경우, 저작자는 모델 파라미터들 사이의 적합한 시뮬레이션 관계들을 제공하는 적합한 시뮬레이션 엔진을 제공할 수 있다. 모델링 컴포넌트(420)는 저작자가 방정식들, 규칙들 및 제약들에 대한 자연적인 기호 표현을 제공하도록 하는 메커니즘을 제공할 수 있다. 예컨대, 열역학 관련 모델의 저작자는 간단히 열역학 교과서로부터 방정식들을 복사하고 붙여 넣을 수 있다. 모델 파라미터들을 데이터 필드들에 결속시키는 능력은 저작자가 익숙한 어떠한 기호들이라도(예컨대 저작자가 의존하는 교과서들에서 사용되는 정확한 기호들), 또는 저작자가 사용하고 싶은 정확한 기호들을 저작자가 사용할 수 있도록 한다.
해결에 앞서, 모델링 컴포넌트(420)는 또한 모델 파라미터들 중 어느 것이 해결될지{즉, 이하에서는 단수의 경우 "출력 모델 변수", 또는 복수의 경우 "출력 모델 변수들", 또는 단일 또는 복수의 출력 모델 변수가 존재할 수 있는 경우 "출력 모델 변수(들)"라 함}를 식별한다. 출력 모델 변수들은 미지의 파라미터들일 수 있거나 또는 알려진 모델 파라미터들일 수 있는데, 알려진 모델 파라미터의 값은 해결 연산시에 변경될 수 있다. 도 4의 예에서, 데이터 모델 결속 연산 후에, 모델 파라미터들(411A, 411B 및 411C)이 알려지고, 모델 파라미터(411D)는 알려지지 않는다. 따라서, 미지의 모델 파라미터(411D)는 출력 모델 변수들 중 하나일 수 있다. 그 대신 또는 그에 추가하여, 알려진 모델 파라미터들(411A, 411B 및 411C) 중 하나 이상은 또한 출력 모델 변수들일 수 있다. 다음으로, 해결기(440)는 가능한 경우 출력 모델 변수(들)를 해결한다. 이후에 기술되는 일 실시예에서, 해결 연산이 수행되도록 하기에 충분한 입력 모델 변수들이 제공되는 한, 해결기(440)는 심지어 단일 모델 내의 다양한 출력 모델 변수를 해결할 수 있다. 입력 모델 변수들은 예컨대 해결 연산 중에 변경되지 않는 값들을 갖는 알려진 모델 파라미터들일 수 있다. 예컨대, 도 4에서, 모델 파라미터 411A 및 411D가 입력 모델 변수들이라면, 해결기는 그 대신 출력 모델 변수 411B 및 411C를 해결할 수 있다. 일 실시예에서, 해결기는 단일 모델 파라미터에 대한 다수의 상이한 데이터 유형 중 임의의 것을 출력할 수 있다. 예컨대, 일부 방정식 연산들(예컨대 가산 및 감산 등)은 피연산자들이 정수, 부동 소수점, 이들의 벡터들, 또는 이들의 행렬들인지의 여부에 관계없이 적용된다.
일 실시예에서, 해결기(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" 모델 파라미터가 해결되도록 소정의 추가적인 모델 분석이 제공될 필요가 있음을 저작자에게 신호하는 역할을 할 것이다. 이러한 부분적인 해결 결과는 영역 전문가가 부분적인 결과를 볼 수 있도록 뷰 컴포지션에서 소정의 방식으로 출력될 수 있다.
해결기(440)가 도 4에 간략화된 형태로 도시된다. 그러나, 해결기(440)는 도 9와 관련하여 기술되는 바처럼 복수의 성분 해결기의 연산을 지시할 수 있다. 도 4에서, 이후 모델링 컴포넌트(420)는 모델 파라미터들(현재 알려지고 해결된 출력 모델 변수들을 포함함)을 도 5의 뷰 부분(500)에 제공될 출력으로서 입수 가능하게 만든다.
도 5는 도 2의 뷰 부분(230)의 예를 나타내는 뷰 부분(500)을 도시한다. 뷰 부분(500)은 도 4의 분석 부분(400)으로부터 모델 파라미터들(411)을 수신한다. 뷰 부분은 또한 뷰 컴포넌트들의 모음을 포함하는 뷰 컴포넌트 저장소(520)를 포함한다. 예컨대, 이 예에서 뷰 컴포넌트 저장소(520)는 뷰 컴포넌트 521 내지 524를 포함하는 것으로 도시되지만, 뷰 컴포넌트 저장소(520)는 임의의 개수의 뷰 컴포넌트를 포함할 수 있다. 뷰 컴포넌트들은 각각 0 이상의 입력 파라미터를 포함할 수 있다. 예컨대, 뷰 컴포넌트(521)는 어떠한 입력 파라미터도 포함하지 않는다. 그러나, 뷰 컴포넌트(522)는 두 개의 입력 파라미터 542A 및 542B를 포함한다. 뷰 컴포넌트(523)는 하나의 입력 파라미터(543)를 포함하고, 뷰 컴포넌트(524)는 하나의 입력 파라미터(544)를 포함한다. 언급한 바처럼, 이는 예시일 뿐이다. 입력 파라미터들은 시각적 아이템들이 어떻게 렌더링되는지에 영향을 미칠 수 있다(반드시 그러할 필요는 없음). 뷰 컴포넌트(521)가 어떠한 입력 파라미터도 포함하지 않는다는 사실은 어떠한 모델 파라미터도 참조하지 않고 생성되는 뷰들이 존재할 수 있음을 강조한다. 변하지 않는 고정된(내장형) 데이터를 포함하는 뷰를 고려한다. 이러한 뷰는 예컨대 사용자를 위한 참조 정보를 구성할 수 있다. 그 대신, 모델로 도입(import)하기 위해 카탈로그로부터 아이템들이 선택될 수 있도록 카탈로그를 열람하는 방식을 제공할 뿐인 뷰를 고려한다.
뷰 컴포넌트 521 내지 524 각각은, 뷰 컴포지션 컴포넌트(540)에 의해 실행되는 경우에 대응하는 뷰 컴포넌트 입력 파라미터(들)(존재하는 경우)를 사용하여 대응하는 뷰 아이템이 가상 공간(550)에 배치되도록 하는 대응하는 로직을 포함하거나 그와 연관된다. 이러한 가상 아이템은 정적인 이미지 또는 개체일 수 있거나, 또는 동적인 애니메이션 가상 아이템 또는 개체 일 수 있다. 예컨대, 뷰 컴포넌트 521 내지 524 각각은 실행시에 대응하는 가상 아이템 551 내지 554가 각각 가상 공간(550)에 렌더링되도록 하는 대응하는 로직 531 내지 534와 연관된다. 가상 아이템들은 단순한 모양으로 도시된다. 그러나, 가상 아이템들은 가능하게는 심지어 애니메이션을 포함하는 형태로 상당히 복잡할 수 있다. 본 명세서에서, 뷰 아이템이 가상 공간에 렌더링되는 경우, 이는 렌더링 엔진에 제공되는 경우 렌더링 엔진이 뷰 아이템을 디스플레이 상에서 지정된 위치에 지정된 방식으로 디스플레이할 수 있는 충분한 명령들을 뷰 컴포지션 컴포넌트가 저작하였음을 의미한다.
뷰 컴포넌트 521 내지 524는 예컨대 도 2의 저작 컴포넌트(240)를 사용하여 가능하게는 심지어 뷰 부분(500)에게 뷰 데이터로서 제공될 수 있다. 예컨대, 저작 컴포넌트(240)는 저작자가 몇몇 기하학적 형태로부터 선택하거나 가능하게는 다른 기하학적 형태들을 컴포지션할 수 있도록 하는 선택기를 제공할 수 있다. 저작자는 각 뷰 컴포넌트에 대한 입력 파라미터들의 유형을 지정할 수 있고, 한편으로 입력 파라미터들 중 일부는 뷰 부분(500)에 의해 부과되는 디폴트 입력 파라미터들일 수 있다. 뷰 컴포넌트 521 내지 524 각각과 연관되는 로직은 또한 뷰 데이터로서 제공될 수 있고/있거나 뷰 부분(500) 자체에 의해 제공되는 소정의 디폴트 기능을 포함할 수도 있다.
뷰 부분(500)은 모델 파라미터들 중 적어도 일부를 뷰 컴포넌트 521 내지 524의 대응하는 입력 파라미터들에 결속시키도록 구성되는 모델 뷰 결속 컴포넌트(510)를 포함한다. 예컨대, 모델 파라미터(411A)는 화살표(511A)로 나타낸 바처럼 뷰 컴포넌트(522)의 입력 파라미터(542A)에 결속된다. 모델 파라미터(411B)는 화살표(511B)로 나타낸 바처럼 뷰 컴포넌트(522)의 입력 파라미터 (542B)에 결속된다. 또한, 모델 파라미터(411D)는 화살표(511C)로 나타낸 바처럼 뷰 컴포넌트들(523 및 524)의 입력 파라미터들(543 및 544)에 각각 결속된다. 모델 파라미터(411C)는 어떠한 대응하는 뷰 컴포넌트 파라미터에도 결속되지 않은 것으로 도시되는데, 이는 모든 모델 파라미터들은 이러한 모델 파라미터들이 분석 부분에서 본질적이라 하더라도 파이프라인의 뷰 부분에 의해 사용될 필요가 있는 것은 아님을 강조한다. 또한, 모델 파라미터(411D)는 뷰 컴포넌트들의 두 개의 상이한 입력 파라미터에 결속된 것으로 도시되는데, 이는 모델 파라미터들이 복수의 뷰 컴포넌트 파라미터에 결속될 수 있음을 나타낸다. 일 실시예에서, 모델 파라미터들과 뷰 컴포넌트 파라미터들 사이의 결속의 정의는 1) 저작 시기에 저작자에 의해 명시적으로 설정되고/되거나, 2) 사용 시기에 사용자에 의해 명시적으로 설정되고/되거나(저작자에 의해 부과된 임의의 제한을 받을 수 있음), 3) 알고리즘 휴리스틱에 기초하여 저작 컴포넌트(240)에 의해 자동으로 결속되고/되거나, 4) 결속이 알고리즘적으로 만들어질 수 없다고 결정되는 경우에 저작자의 저작 컴포넌트 및/또는 사용자에 의해 결속을 지정하도록 촉구함으로써 작성될 수 있다.
앞서 언급한 바처럼, 뷰 아이템은 애니메이션을 포함할 수 있다. 간단한 예를 들자면, 예컨대 주어진 시점(예컨대 주어진 분기)에서 회사의 기존 및 예상 수입, 광고 비용 및 판매 영역에 의한 이익을 도시하는 막대 차트를 고려한다. 막대 차트는 원하는 시간 범위에서 각 분기에 대해 그려질 수 있다. 이제, 이러한 차트들 중 하나를 그린다고 상상한다{상기 하나의 차트는 시간 범위에서 가장 이른 시간에 대한 것이고, 다음으로 매 하반기는 이것을 다음 시간 범위(예컨대 다음 분기)에 대한 차트로 대체함}. 결과는 애니메이션이 진행됨에 따라 각 영역 변화에 대해 이익, 매출(sales) 및 광고 비용을 높이로 나타내는 막대들을 도시하는 것이다. 이 예에서, 각 시기에 대한 차트는 애니메이션의 "셀(cell)"이고, 셀은 이동 사이의 순간을 나타내는데, 여기서 시퀀스(sequence)로 도시된 셀들의 모음은 이동을 시뮬레이션한다. 종래의 애니메이션 모델들은 내장형 하드 코딩 차트 유형들을 사용하여 시간에 따른 애니메이션을 가능하게 한다.
그러나, 이에 반해 파이프라인(201)을 사용하여 임의의 종류의 시각 표현이 애니메이션화될 수 있고, 애니메이션은 시각적 컴포넌트의 파라미터들 중 임의의 하나 또는 임의의 조합을 변화시킴으로써 구동될 수 있다. 위의 막대 차트의 예로 돌아가면, 시간에 의한 애니메이션 대신에 광고 비용에 의한 애니메이션을 상상한다. 이러한 애니메이션 내의 각 "셀"은 주어진 광고 비용 값에 대한 시간에 따른 매출 및 이익을 나타내는 막대 차트이다. 따라서, 광고 비용이 변화함에 따라, 광고 비용의 변화에 응답하여 막대들이 늘어나고 줄어든다.
애니메이션화된 데이터 디스플레이의 힘은 이것이 어떤 파라미터들이 다른 파라미터들의 변화에 가장 민감한지를 눈에 매우 명확하게 나타낸다는 점인데, 그 까닭은 애니메이션 파라미터의 변화에 응답하여 각 파라미터의 값들이 얼마나 빨리 그리고 얼마나 많이 변화하는지를 즉시 보기 때문이다.
파이프라인(201)은 또한 아래의 특징들로 인해 이것의 애니메이션 능력에 있어서 구별된다.
첫째로, 애니메이션 변수에 대한 단계들의 시퀀스들은 미리 정의된 범위에 걸쳐 단지 단계들의 고정된 시퀀스로 있는 것에 대비하여 모델의 분석에 의해 계산될 수 있다. 예컨대, 광고 비용을 애니메이션 변수로서 변화시키는 예에서, "각 단계에 대해 5% 만큼 증가하는 광고 비용에 의한 애니메이션" 또는 "광고 비용은 그 단계에 대해 전체 비용의 10%임"으로 지정된다고 상상한다. 훨씬 더 복잡한 예는 "시간에 따른 매출의 변화율을 최대화하도록 최적화되는 광고 비용에 의한 애니메이션"이다. 달리 말해, 해결기는 시간에 따른 광고 지출(즉 분기와 같은 각각의 연속적인 시기에 대한 것임)에 대한 단계들의 집합을 결정하여 매출 성장률이 최대화되도록 할 것이다. 여기서 사용자는 광고 비용을 변화시킴으로써 매출이 얼마나 빠르게 성장하도록 만들어질 수 있는지를 보기를 원할 뿐만 아니라, 이러한 성장을 달성하는 광고 비용에 대한 분기별 양을 알기를 원할 수 있다(값들의 시퀀스는 합성 시각 효과의 일부로서 도시될 수 있음).
둘째로, 전통적인 데이터 차트뿐만이 아니라 임의의 종류의 시각 효과가 애니메이션화될 수 있다. 예컨대, 1) 공기 속도 파라미터에 의해 애니메이션화되고 2) 터빈의 회전 속도가 공기 속도의 함수이며, 3) 터빈 베어링의 온도가 공기 속도의 함수인 제트 엔진의 CAD 모델을 고려한다. 제트 엔진은 터빈 깃(turbine blade)들이 무결성을 잃거나 베어링이 과열되기 전에 터빈들이 얼마나 빠르게 회전될 수 있는지에 대한 제한을 갖는다. 따라서, 이러한 애니메이션에서, 공기 속도가 변화함에 따라 터빈 깃들과 베어링의 색이 청색(안전)에서 적색(위험)으로 변화하기를 원할 수 있다. "안전" 및 "위험" 터빈 RPM 및 베어링 온도에 대한 값들은 이러한 부품들의 물리적 특성들에 기초하여 모델에 의해 계산될 수 있다. 이제, 정의된 범위에서 애니메이션이 공기 속도를 변화시킴에 따라, 터빈 깃들과 베어링이 각각 색을 바꾸는 것을 볼 수 있다. 이제 관심이 되는 것은 어느 것이 먼저 위험 상태에 도달하는지, 그리고 어느 하나가 위험 상태로의 갑작스러운(돌발적인) 이동을 겪는지 여부에 주목하는 것이다. 이러한 종류의 효과는 차트나 도면들의 시퀀스를 관찰함으로써 구별하기가 어렵지만, 애니메이션에서는 즉각적으로 분명해진다. 이는 임의의 파라미터(공기 속도)에 의해 임의의 시각 효과(CAD 모델)를 애니메이션화하는 일례일 뿐이며, 애니메이션은 또 다른 임의의 파라미터들(터빈 RPM 및 베어링 온도)에 영향을 미친다. 임의의 시각 효과(들)의 임의의 파라미터(들)는 애니메이션 변수로서의 역할을 하는 임의의 원하는 파라미터(들)에 따라 애니메이션화될 수 있다.
셋째로, 파이프라인(201)은 데이터 및 파라미터들이 사용자에 의해 수정된 후 애니메이션이 재시작 또는 재개될 수 있도록 스트림 도중에 정지될 수 있다. 따라서, 예컨대 제트 엔진의 예에서, 주어진 공기 속도에서 돌발적인 가열이 시작하는 것으로 관찰되는 경우, 사용자는 돌발적인 가열 시점에서 애니메이션을 정지하고, 베어링의 종류 또는 베어링 표면 재료와 같은 소정의 엔진 디자인 기준을 수정하며, 변경의 효과를 관찰하도록 애니메이션을 속행할 수 있다.
본 명세서에서 논의되는 다른 능력들과 마찬가지로, 애니메이션들은 저작자에 의해 정의되고/되거나 사용자가 조작하여 다양한 시나리오를 시험하도록 공개될 수 있다. 예컨대, 사용자 자신이 선택하는 파라미터들에 따라 및/또는 사용자가 선택하는 애니메이션 변수에 대한 데이터 범위들(원하는 계산된 범위들을 지정하는 능력을 포함함)에 걸쳐 소정의 시각 효과들이 사용자에 의해 애니메이션화되도록 모델이 저작될 수 있다. 이러한 애니메이션들은 또한 다른 가정(what-if) 비교 디스플레이들에서와 같이 나란히 디스플레이될 수 있다. 예컨대, 사용자는 장래의 상이한 일반 이율, 또는 상이한 광고 비용 증가율(ramp)을 갖는 두 시나리오에서 시간에 의해 애니메이션화되는, 시간에 따른 매출과 이익의 애니메이션을 비교할 수 있다. 제트 엔진의 예에서, 사용자는 베어링 설계의 변경 전후에 대한 엔진의 애니메이션들을 비교할 수 있다.
이 시점에서, 컴포지션 프레임워크가 어떻게 뷰 컴포지션을 실제로 구축하는 데 사용될 수 있는지에 관한 특정한 예가 도 6을 참조하여 기술될 것이며, 도 6은 방 안에 가구가 배치된 방 배치(601)를 포함하고 또한 풍수 미터(602)를 포함하는 뷰 컴포지션의 3-D 렌더링(600)을 도시한다. 이러한 예는 본 명세서에 기술된 원리들이 어떻게 영역에 관계없이 임의의 뷰 컴포지션에 적용될 수 있는지를 보여주기 위해서 제공될 뿐이다. 따라서, 도 6의 예, 그리고 본 명세서에 기술된 임의의 다른 예시 뷰 컴포지션은 추상적인 개념이 비한정적인 구체적인 예들을 참조하여 더 완전하게 이해될 수 있도록 하고 본 발명의 더 넓은 범위를 정의하지 않는 예로서만 엄밀하게 간주되어야 한다. 본 명세서에 기술된 원리들은 무수하게 다양한 뷰 컴포지션을 구축하는 데 적용될 수 있다. 그럼에도 불구하고, 구체적인 예를 참조하는 것은 더 넓은 추상적인 원리들을 명료화할 수 있다.
도 7은 뷰 컴포지션을 생성하기 위한 방법(700)의 흐름도이다. 방법(700)은 도 2의 파이프라인 환경(200)에 의해 수행될 수 있고, 따라서 도 2의 파이프라인 환경(200)을 종종 참조할 뿐만 아니라 도 2의 파이프라인의 특정한 부분들을 각각 도시하는 도 3 내지 5를 참조하여 기술될 것이다. 방법(700)은 임의의 뷰 컴포지션을 구축하도록 수행될 수 있지만, 방법(700)은 도 6의 뷰 컴포지션(600)과 관련하여 기술될 것이다. 방법(700)의 동작들 중 일부는 도 2의 데이터 부분(210)에 의해 수행될 수 있고, 도 7의 좌측 열에서 "데이터" 헤더 하에 열거된다. 방법(700)의 다른 동작들은 도 2의 분석 부분(220)에 의해 수행될 수 있고, 도 7의 좌측으로부터 두 번째 열에서 "분석" 헤더 하에 열거된다. 상기 방법의 다른 동작들은 도 2의 뷰 부분(230)에 의해 수행될 수 있고, 도 7의 우측으로부터 두 번째 열에서 "뷰" 헤더 하에 열거된다. 동작들 중 하나는 렌더링 모듈에 의해 수행될 수 있고, 우측 열에서 기타 헤더 하에 열거된다. 본 명세서에 기술된 원리들에 따라 구축되는 뷰 컴포지션을 렌더링하기 위해 임의의 종래의 또는 개발될 렌더링 모듈이 사용될 수 있다.
도 7을 참조하면, 데이터 부분은 어떠한 시각적 아이템들이 디스플레이되는지 또는 시각적 아이템들 중 주어진 하나 이상이 어떻게 디스플레이되는지에 대해 적어도 집합적으로 영향을 미치는 입력 데이터를 액세스한다(동작 711). 예컨대, 도 6을 참조하면, 입력 데이터는 가구의 아이템들 각각에 대한 뷰 컴포넌트들을 포함할 수 있다. 예컨대, 소파, 의자, 식물, 테이블, 꽃, 그리고 심지어 방 자체가 각각 대응하는 뷰 컴포넌트에 의해 표현될 수 있다. 뷰 컴포넌트는 뷰 컴포넌트에 적합한 입력 파라미터들을 가질 수 있다. 애니메이션이 이용되는 경우, 예컨대 입력 파라미터들 중 일부가 애니메이션의 흐름에 영향을 미칠 수 있다. 파라미터들 중 일부가 시각적 아이템의 디스플레이에 영향을 미칠 수 있고, 일부 파라미터들은 그렇지 않을 수 있다.
예컨대, 방 자체가 뷰 컴포넌트일 수 있다. 입력 파라미터들 중 일부는 방의 치수, 방의 방향, 벽 색, 벽 텍스처(texture), 바닥 색, 바닥 유형, 바닥 텍스처, 방의 광원들의 위치 및 전원 등을 포함할 수 있다. 또한, 이러한 뷰 컴포지션에 반드시 반영되지는 않지만 방 컴포넌트의 다른 뷰 및 용도에는 반영될 수 있는 방 파라미터들이 존재할 수 있다. 예컨대, 방 파라미터는 경도와 위도의 시, 분, 초로 표현된 방의 위치를 가질 수 있다. 방 파라미터는 또한 방 컴포넌트의 저작자의 신원 및 방의 평균 임대료를 포함할 수 있다.
방 안의 다양한 컴포넌트는 또한 대응하는 파라미터화된 뷰 컴포넌트에 의해 표현될 수 있다. 예컨대, 각각의 식물은 화분 스타일, 화분 색, 화분 치수, 식물 색, 식물 회복력, 식물의 일광 종속성, 식물의 일일 물 섭취량, 식물의 일일 산소 배출량, 식물의 위치 등을 지정하는 입력 파라미터로 구성될 수 있다. 다시 한 번, 무엇이 디스플레이되고 있는지에 관한 성질에 따라, 이러한 파라미터들 중 일부는 디스플레이가 어떻게 렌더링되는지에 영향을 미칠 수 있고, 다른 파라미터들은 그렇지 않을 수 있다.
풍수 미터(602)가 또한 뷰 컴포넌트일 수 있다. 상기 미터는 직경, 상기 미터의 직경에 포함될 쐐기(wedge)의 개수 및 텍스트 색 등과 같은 입력 파라미터들을 포함할 수 있다. 풍수 미터의 다양한 쐐기는 또한 뷰 컴포넌트들일 수 있다. 그러한 경우, 뷰 컴포넌트들에 대한 입력 파라미터들은 표제{예컨대 물(Water), 산(Mountain), 벼락(Thunder), 바람(Wind), 불(Fire), 흙(Earth), 호수(Lake), 하늘(Heaven)}일 수 있고, 가능하게는 쐐기에 나타나는 그래픽, 또는 색조 등일 수 있다.
분석 부분은 입력 데이터를 모델 파라미터들에 결속시키고(동작 721), 출력 모델 변수들을 결정하고(동작 722), 출력 모델 변수들을 해결하기 위해 모델 파라미터들 사이의 모델에 특유한 분석 관계들을 사용한다(동작 723). 동작 721의 결속 연산은 앞서 논의되었고, 본질적으로 모델 저작자가 익숙한 기호들을 사용하여 모델 분석 방정식, 규칙 및 제약을 저작자가 정의할 수 있도록 하는 유연성을 허용한다.
식별 또는 출력 모델 변수들은 하나의 해결 연산과 다음의 해결 연산에 있어서 상이할 수 있다. 모델 파라미터들이 동일하게 유지될 수 있더라도, 어느 모델 파라미터들이 출력 모델 변수들인지에 관한 식별은 특정한 모델 파라미터들에 결속할 데이터의 가용성에 의존할 것이다. 이는 사용자가 주어진 뷰 컴포지션에서 가정 시나리오들을 수행할 수 있도록 하는 것에 관하여 주목할 만한 의미를 갖는다.
예컨대, 도 6의 풍수 방의 예에서, 사용자가 자신의 거실에 배치할 새 의자를 구입하였다고 가정한다. 사용자는 방의 디자인을 파이프라인에 대한 데이터로서 제공할 수 있다. 이는 저작 컴포넌트에 의해 용이하게 될 수 있는데, 저작 컴포넌트는 사용자에게 방 치수를 입력하도록 촉구하고, 가능하게는 사용자가 가상적인 가구를 선택하여 실제 가구가 실제 방에 배치되는 적합한 위치로 가상적인 방 안에 끌어다 놓을 수 있도록 하는 선택 도구를 제공한다. 이후 사용자는 사용자가 구입한 새 의자의 특성들을 갖도록 편집될 수 있는 가구를 선택할 수 있다. 사용자는 그러한 의자를 방 안으로 끌어다 놓을 수 있다. 풍수 미터(602)는 자동으로 업데이트될 것이다. 이러한 경우에, 의자의 위치 및 다른 속성들은 입력 모델 변수들일 것이고, 풍수 점수는 출력 모델 변수일 것이다. 사용자가 가상 의자를 다양한 위치로 끌고 다니면, 풍수 미터의 풍수 점수가 업데이트될 것이고, 따라서 사용자는 다양한 위치에 가상 의자를 배치하는 풍수적인 결과를 시험할 수 있다. 최상의 풍수를 낳는 위치가 어디인지를 확인하기 위해 사용자가 모든 가능한 위치로 의자를 끌고 다녀야 하지 않도록, 사용자는 의자를 현재 위치로부터 특정한 방향으로 움직이는 것이 더 나은지 또는 더 나쁜지, 그리고 얼마나 더 나은지 또는 더 나쁜지를 사용자에게 알려주는 국지적인 시각적 단서들(예컨대 경사선 또는 화살표)을 얻을 수 있다.
그러나, 사용자는 또한 종래의 뷰 컴포지션에서는 전례가 없는 그 밖의 어떤 것을 행할 수 있다. 사용자는 실제로 출력 모델 변수들을 변경할 수 있다. 예컨대, 사용자는 풍수 미터의 원하는 풍수 점수를 지적할 수 있고, 가상 의자의 위치를 출력 모델 변수로서 남겨둘 수 있다. 이후 해결기는 출력 모델 변수를 해결할 것이고, 적어도 지정된 풍수 점수를 달성하는 의자의 제안된 위치 또는 위치들을 제공할 것이다. 사용자는 복수의 파라미터를 출력 모델 변수들로 만들기를 선택할 수 있고, 시스템은 출력 모델 변수들에 대한 복수의 해를 제공할 수 있다. 이는 도 9와 관련하여 더 상세히 기술되는 복합 해결기(complex solver)에 의해 용이하게 된다.
도 7로 돌아가면, 출력 모델 변수들이 해결되면, 모델 파라미터들은 파라미터화된 뷰 컴포넌트들의 입력 파라미터들에 결속된다(동작 731). 예컨대, 풍수의 예에서, 미지의 풍수 점수가 해결된 후, 점수들은 입력 파라미터들로서 풍수 미터 뷰 컴포넌트에 결속되거나, 또는 가능하게는 미터에 포함된 적합한 쐐기에 결속된다. 그 대신, 풍수 점수가 입력 모델 변수인 경우, 가상 의자의 위치가 해결되고 의자 뷰 컴포넌트에 대한 입력 파라미터로서 제공될 수 있다.
이제 해결기가 방정식들을 어떻게 재배열할 수 있고 하나의 분석 모델에서 모두 구동되는 입력 및 출력 모델 변수들의 지정을 변경할 수 있는지에 관한 원리들을 예시하는 간략한 예가 제시될 것이다. 사용자 자신은 방정식들을 재배열할 필요가 없다. 간략한 예는 풍수 규칙들을 정확히 나타내지 않을 수 있지만, 그럼에도 불구하고 원리를 예시한다. 방(FSroom)의 전체 풍수(FS)가 의자(FSchair)의 FS 및 식물(FSplant)의 FS와 같다고 가정한다. FSchair가 벽으로부터의 의자의 거리 d의 상수 A배와 같다고 가정한다. FSplant가 상수 B라고 가정한다. 그러면 방의 전체 FS는 FSroom = A*d + B이다. d가 입력 모델 변수인 경우, FSroom은 출력 모델 변수이고, 미터 상에 디스플레이되는 이것의 값은 사용자가 의자를 재배치함에 따라 변한다. 이제 사용자가 미터를 클릭하여 이것을 입력 모델 변수로 만들고 d를 미지의 출력 모델 변수 상태로 옮긴다고 가정한다. 이러한 경우, 해결기는 효과적으로 내부에서 위의 방정식을 d = (FSroom - B)/A로 다시 기록한다. 그러한 경우, 사용자가 미터 상의 원하는 값 FSroom을 변화시킴에 따라, 뷰 컴포넌트는 의자를 움직여 벽으로부터의 이것의 거리 d를 변화시킬 수 있다.
이후 뷰 부분은 가능하게는 뷰 컴포지션 내에서 뷰 아이템의 구축을 주도하도록 입력 파라미터(들)(존재하는 경우)를 사용하여 뷰 컴포넌트와 연관된 구축 로직을 실행시킴으로써 시각적 아이템들의 뷰를 구축한다(동작 732). 이후 뷰 구축은 렌더링 모듈에 제공될 수 있고, 다음으로 렌더링 모듈은 뷰 구축을 렌더링 명령들로서 사용한다(동작 741).
일 실시예에서, 뷰를 구축하는 처리는 해결기에 의해 수행되는 데이터 변환으로서 취급된다. 즉, 주어진 종류의 뷰의 경우(예컨대 막대 차트를 고려함), 입력 데이터를 디스플레이 가능한 출력 데이터 구조(장면 그래프라고 불림)로 변환함으로써 뷰를 생성하는 규칙, 방정식 및 제약으로 이루어지는 모델이 존재하는데, 상기 출력 데이터 구조는 그래픽 하드웨어를 구동하기 위해 렌더링 소프트웨어가 필요로 하는 모든 낮은 수준의 기하 구조 및 연관된 속성들을 인코딩한다. 막대 차트의 예에서, 입력 데이터는 예컨대 차트 표제 및 축 표지 등과 같은 것들에 대한 속성들과 함께 도시될 데이터 시리즈일 것이다. 막대를 생성하는 모델은 1) 얼마나 많은 막대를 그릴지를 결정하기 위해 데이터 시리즈가 얼마나 많은 항목으로 이루어지는지를 세고, 2) 척도 및 각 축에 대한 시작/종료 값들과 같은 것들을 계산하기 위해 데이터 시리즈가 걸쳐 있는 범위(최소값, 최대값)를 계산하며, 3) 이전에 계산된 척도 인자에 기초하여 데이터 시리즈 내의 각 데이터 지점에 대한 막대의 높이를 계산하고, 4) 표제가 적절히 위치하고 차트에 대해 중앙에 있게 하도록 표제에 대한 시작 위치 및 크기를 계산하기 위해 얼마나 많은 문자가 차트 표제 내에 있는지를 세는 등과 같은 것들을 행하는 규칙, 방정식 및 제약을 가질 것이다. 요컨대, 모델은 입력 데이터에 기초하여 기하학적 모양들의 집합을 계산하도록 디자인되는데, 이러한 기하학적 모양들은 "장면 그래프" 유형의 계층적 데이터 구조 내에 배열된다. 달리 말해, 장면 그래프는 입력 데이터에 기초하여 모델이 해결하는 출력 변수이다. 따라서, 저작자는 저작자가 임의의 종류의 모델을 저작, 커스터마이징(customize) 및 컴포지션하는 데 사용하는 동일한 프레임워크를 사용하여 전적으로 새로운 종류의 뷰들을 디자인할 수 있고, 기존의 뷰들을 커스터마이징할 수 있으며, 기존의 뷰들을 합성 뷰들로 컴포지션할 수 있다. 따라서, 프로그래머가 아닌 저작자는 새로운 코드를 드래프팅(draft)하지 않고 새로운 뷰들을 생성할 수 있다.
도 2로 돌아가서, 사용자 상호작용 응답 모듈(250)은 사용자가 뷰 컴포지션과 언제 상호작용하는지를 탐지하고, 파이프라인이 적절히 응답하도록 한다는 점을 상기한다. 도 8은 뷰 컴포지션과의 사용자 상호작용에 응답하기 위한 방법(800)의 흐름도를 도시한다. 특히, 사용자 상호작용 응답 모듈은 뷰를 재생성하기 위해 파이프라인의 어느 컴포넌트들이 추가 작업을 수행해야 하는지를 결정하고, 또한 사용자 상호작용을 나타내거나 적어도 사용자 상호작용에 의존하는 데이터를 파이프라인 컴포넌트들에게 제공한다. 일 실시예에서, 이는 역(업스트림) 뷰/분석/데이터 방향으로 향하고 (다운스트림) 데이터/분석/뷰 파이프라인과 평행한 변환 파이프라인을 통해 이루어진다.
상호작용은 업스트림 파이프라인으로의 이벤트로서 포스팅(post)된다. 데이터/분석/뷰 파이프라인 내의 각 변환기는 들어오는 상호작용 데이터를 취급하는 업스트림 변환기를 제공한다. 이러한 변환기들은 무효{경로 밖에서 최적화되는 패스스루(passthrough)}일 수 있거나, 또는 업스트림으로 더 공급될 상호작용 데이터에 대한 변환 연산을 수행할 수 있다. 이는 파이프라인의 긍정적인 성능 및 응답성을 제공하는데, 이는 1) 소스 데이터에 대한 효과를 갖지 않는 뷰 조작과 같은, 업스트림 변환에 대한 효과를 갖지 않는 상호작용 행위들이 파이프라인 내의 가장 적합한(적어도 업스트림) 지점에서 취급될 수 있고, 2) 후속 업스트림 변환기들로부터 최종적으로 오게 될 최종 업데이트에 앞서 휴리스틱적으로 결정되는 업데이트를 다운스트림으로 다시 송신함으로써 중간 변환기들이 뷰 업데이트 성능을 최적화할 수 있다는 점에서 그러하다. 예컨대, 데이터 편집 상호작용의 수신시에, 뷰 수준 변환기는 중간 뷰 업데이트가 뷰(어떻게 해석할지를 아는 편집에 대한 것임)에 대한 장면 그래프로 직접 반영되게 할 수 있는데, 최종적인 완전한 업데이트는 나중에 소스 데이터가 실제로 편집되는 업스트림 데이터 변환기로부터 온다.
주어진 뷰 상호작용의 시멘틱(semantics)이 필요한 기저 데이터 편집에 대한 비자명(nontrivial) 매핑을 갖는 경우, 중간 변환기들은 필요한 업스트림 매핑을 제공할 수 있다. 예컨대, 계산된 결과의 그래프 상의 지점을 드래깅(drag)하는 것은 그래프 상의 계산된 값을 공급하는 복수의 소스 데이터 아이템에 대한 새로운 값들을 계산하는 역방향 해결을 요구할 수 있다. 해결기 수준 업스트림 변환기는 필요한 해결을 호출(invoke)할 수 있고, 필요한 데이터 편집을 업스트림으로 전파할 수 있을 것이다.
도 8은 뷰 컴포지션을 갖는 사용자 상호작용에 응답하기 위한 방법(800)의 흐름도를 도시한다. 사용자가 디스플레이 상의 뷰 컴포지션의 렌더링과 상호작용하였음을 탐지하면(동작 801), 먼저 사용자 상호작용이 뷰의 재생성을 필요로 하는지 여부가 결정된다(판정 블록 802). 이는 도 2의 사용자 상호 작용 응답 컴포넌트(250)에 의해 해석되는 이벤트를 일으키는 렌더링 엔진에 의해 수행될 수 있다. 사용자 상호작용이 뷰의 재생성을 필요로 하지 않는 경우(판정 블록 802의 아니오), 파이프라인은 뷰를 재구축하기 위한 어떠한 추가적인 동작도 수행하지 않지만(동작 803), 렌더링 엔진 자체는 뷰에 대한 소정의 변환을 수행할 수 있다. 이러한 사용자 상호작용의 예는 사용자가 뷰 구축의 렌더링의 대비(contrast)를 증가시키려 하거나 뷰 구축을 회전시키려 하는 경우일 수 있다. 이러한 동작들은 렌더링 엔진 자체에 의해 이루어질 수 있으므로, 파이프라인은 사용자 상호작용에 응답하여 뷰를 재구축하기 위한 어떤 작업도 수행할 필요가 없다.
한편으로, 사용자 상호작용의 유형이 뷰 구축의 재생성을 필요로 하는 것으로 결정되는 경우(판정 블록 802의 예), 뷰가 파이프라인에 의해 재구축된다(동작 704). 이는 파이프라인에 제공되는 데이터의 소정의 변경을 수반할 수 있다. 예컨대, 풍수의 예에서, 사용자가 가상 방 안에서 가상 의자의 위치를 움직인다고 가정하면, 가상 의자 컴포넌트의 위치 파라미터가 그에 따라 변화할 것이다. 가상 의자의 위치를 나타내는 대응하는 모델 파라미터가 또한 변경되어야 함을 분석 부분에게 알리는 이벤트가 촉발될 것이다. 다음으로, 분석 컴포넌트는 풍수 점수를 해결할 것이고, 풍수 미터 또는 쐐기의 대응하는 입력 파라미터들을 다시 채워, 풍수 미터가 의자의 새로운 위치에 적합한 현재의 풍수 점수로 업데이트하도록 할 것이다.
사용자 상호작용은 이전에 알려졌던 모델 파라미터들이 이제 알려지지 않을 것과 이전에 알려지지 않은 파라미터들이 이제 알려질 것을 요구할 수 있다. 이것은 이전에 지정된 입력 모델 변수들이 출력 모델 변수들이 될 수 있고 그 역으로도 될 수 있도록 입력 및 출력 모델 변수들의 지정의 변경을 필요로 할 수 있는 몇몇 가능한 예들 중 하나이다. 그러한 경우, 분석 부분은 새로운 출력 모델 변수(들)에 대해 해결할 것이고, 이에 의해 뷰 컴포지션의 재구축을 주도할 것이다.
해결기 프레임워크
도 9는 도 4의 해결기(440)의 예를 나타낼 수 있는 해결기 환경(900)을 도시한다. 해결기 환경(900)은 소프트웨어, 하드웨어, 또는 그 조합으로 구현될 수 있다. 해결기 환경(900)은 특수 해결기들의 모음(910)의 연산들을 관리하고 조정하는 해결기 프레임워크(901)를 포함한다. 모음(910)은 3개의 특수 해결기(911, 912 및 913)를 포함하는 것으로 도시되지만, 생략 부호(914)는 다른 개수(즉 3개보다 많거나 적음)의 특수 해결기가 또한 존재할 수 있음을 나타낸다. 또한, 생략 부호(914)는 또한 특수 해결기들의 모음(910)이 확장 가능함을 나타낸다. 모델 분석을 도울 수 있는 새로운 특수 해결기들이 발견 및/또는 개발됨에 따라, 이러한 새로운 특수 해결기들은 모음(910)에 포함되어 기존의 특수 해결기들을 보충하거나 또는 가능하게는 기존의 해결기들 중 하나 이상을 대체할 수 있다. 예컨대, 도 9는 해결기 등록 모듈(921)을 사용하여 새로운 해결기(915)가 모음(910)에 등록되고 있는 것을 도시한다. 일례로서, 새로운 해결기는 가능하게는 하나 이상의 알려진 값을 수용하고 하나 이상의 알려지지 않은 값을 해결하는 시뮬레이션 해결기일 수 있다. 다른 예들은 선형 방정식, 미분 방정식, 다항식, 적분식, 근 발견식(root-finder), 인수분해 식 및 최적화 식 등의 시스템들에 대한 해결기들을 포함한다. 모든 해결기는 수치 모드 또는 기호 모드 또는 혼합된 수치-기호 모드에서 동작할 수 있다. 해들의 수치 부분들은 파라미터화된 렌더링 다운스트림을 주도할 수 있다. 해의 기호 부분들은 부분해 렌더링을 주도할 수 있다.
특수 해결기들의 모음은 출력 모델 변수들을 해결하는 데 적합한 임의의 해결기를 포함할 수 있다. 예컨대, 모델이 자전거의 저항(drag)을 결정하기 위한 것인 경우, 복소 미적분 방정식들을 해결하는 것이 정당화될 수 있다. 그러한 경우, 특수 복소 미적분 해결기가 모음(910) 내에 포함되어 가능하게는 기존의 방정식 해결기를 보충 또는 대체할 수 있다. 일 실시예에서, 각 해결기는 특정한 종류의 분석 관계에 있는 하나 이상의 출력 모델 변수를 해결하도록 구성된다. 예컨대, 방정식에 있는 미지항들을 해결하도록 구성되는 하나 이상의 방정식 해결기가 존재할 수 있다. 미지항들을 해결하기 위해 규칙들을 적용하도록 구성되는 하나 이상의 규칙 해결기가 존재할 수 있다. 미지항들을 해결하기 위해 제약들을 적용하도록 구성되는 하나 이상의 제약 해결기가 존재할 수 있다. 다른 유형의 해결기는 예컨대 입력 데이터를 사용하여 시뮬레이션을 수행함으로써 대응하는 출력 데이터를 구축하는 시뮬레이션 해결기일 수 있다.
해결기 프레임워크(901)는 하나 이상의 출력 모델 변수가 해결되도록 모음(910) 내의 특수 해결기들 중 하나 이상 또는 전부의 처리를 조정하도록 구성된다. 이후 해결기 프레임워크(901)는 해결된 값들을 하나 이상의 다른 외부 컴포넌트에 제공하도록 구성된다. 예컨대, 도 2를 참조하면, 해결기 프레임워크(901)는 모델 파라미터 값들을 파이프라인의 뷰 부분(230)에게 제공함으로써, 뷰 컴포넌트들이 뷰 아이템을 렌더링하기 위해 어떻게 실행되는지에 대해, 또는 뷰 아이템과 연관된 다른 데이터에 대해 해결 연산이 영향을 미치도록 할 수 있다. 해결의 다른 잠재적인 효과로서, 모델 분석 자체가 변경될 수 있다. 예컨대, 이것이 구현될 수 있는 많은 예 중 단지 하나로서, 모델은 수정 가능한 규칙 집합으로 저작되어, 주어진 해결 도중에, 처음에는 비활성이었던 소정의 규칙(들) 및/또는 제약(들)이 활성화되고 처음에는 활성화되었던 소정의 규칙(들) 및/또는 제약(들)이 비활성화되도록 할 수 있다. 방정식들이 또한 이러한 방식으로 수정될 수 있다.
도 10은 해결기 프레임워크(901)가 모음(910) 내의 특수 해결기들 사이에서 처리를 조정하는 방법(1000)의 흐름도를 도시한다. 도 10의 방법(1000)이 이제 도 9의 해결기 환경(900)을 자주 참조하여 기술될 것이다.
해결기 프레임워크는 모델 파라미터들 중 어느 것이 입력 모델 변수들인지를 식별(동작 1001)하고 모델 파라미터들 중 어느 것이 출력 모델 변수들인지 식별(동작 1002)하며 모델 파라미터들 사이의 관계를 정의하는 모델 분석을 식별(동작 1003)함으로써 해결 연산을 개시한다. 이러한 정보가 주어지면, 해결기 프레임워크는 모델 파라미터들의 종속성을 분석한다(동작 1004). 고정된 집합의 모델 파라미터들이 주어지고 고정된 집합의 모델 분석이 주어지더라도, 종속성은 모델 파라미터들 중 어느 것이 입력 모델 변수들이고 어느 것이 출력 모델 변수들인지에 따라 변할 수 있다. 따라서, 시스템은 입력되는 모델 파라미터들의 아이덴티티를 사용하여 모델 분석에 기초하여 해결 연산이 수행되는 때마다 종속성 그래프를 추론할 수 있다. 사용자는 각 해결에 대한 종속성 그래프를 지정할 필요가 없다. 각 해결 연산에 대한 종속성을 평가함으로써, 해결기 프레임워크는 하나의 해결 연산 중에 하나 이상의 모델 변수의 하나의 집합을 해결하고 다음 해결 동작 중에 하나 이상의 모델 변수의 다른 집합을 해결하는 유연성을 갖는다. 도 2 내지 5의 맥락에서, 이는 뷰 컴포지션과 인터페이싱함으로써 무엇이 입력이고 무엇이 출력인지를 사용자가 지정하도록 하는 더 큰 유연성을 의미한다.
일부 해결 연산들에 있어서, 모델은 어떠한 출력 모델 변수도 갖지 않을 수 있다. 그러한 경우, 해결기는 모든 알려진 모델 파라미터 값들이 함께 그 모델에 대한 분석에 의해 표현되는 모든 관계를 충족하는지를 검증할 것이다. 달리 말해, 임의의 하나의 데이터 값을 지우고 이를 미지항으로 바꾸어 해결하고자 하는 경우, 지워진 값은 모델에 의해 재계산될 것이고, 이전과 동일할 것이다. 따라서, 로딩(load)되는 모델은 이미 해결된 형태로 존재할 수 있고, 미지항들을 갖고 해들을 갖는 모델 또한 물론 해결된 형태로 존재한다. 중요한 것은 해결된 모델의 뷰와 상호작용하는 사용자가 그럼에도 불구하고 뷰를 편집할 수 있다는 점인데, 이는 데이터 값 또는 값들을 변경하는 효과를 가질 수 있고, 따라서 새로운 집합의 데이터 값들이 분석과 일치하도록 출력 모델 변수들에 대한 데이터 값들을 재계산하도록 시도하는 재해결을 야기할 수 있다. 사용자가 어느 데이터 값들을 편집할 수 있는지(모델이 출력 모델 변수들로 시작하는지 여부)가 저작자에 의해 제어된다. 사실, 이는 어느 변수들이 허용된 미지항들을 나타내는지를 정의하는 저작자에 의해 제어된다.
다른 식들 내의 다른 미지항들을 먼저 해결하지 않고 독립적으로 해결될 수 있는 하나 이상의 미지항을 갖는 식들이 존재하는 경우(판정 블록 1005의 예), 이러한 식들은 임의의 시점에 해결될 수 있는데(동작 1006), 심지어 다른 해결 단계들과 병행하여 해결될 수 있다. 한편으로, 다른 식 내의 미지항을 먼저 해결하지 않고 해결될 수 없는 미지항들을 갖는 식들이 존재하는 경우, 해결 종속성이 발견된다. 그러한 경우, 식은 다른 식에 대해 연산의 특정한 순서를 정의하는 관계 구조(예컨대 종속성 트리)의 일부가 된다.
다른 식들로부터의 해결 종속성을 상호 연결하는 식들의 경우, 특수 해결기들의 실행 순서는 분석된 종속성에 기초하여 결정된다(동작 1007). 이후 해결기들은 결정된 순서(동작 1008)로 실행된다. 일례에서, 모델 분석이 방정식, 제약 및 규칙으로서 표현되는 경우, 실행 순서는 다음과 같을 수 있다. 즉, 1) 종속성을 갖거나 독립적인 식으로서 완전히 해결될 수 없는 방정식들이 제약들로서 다시 기록되고, 2) 제약들이 해결되며, 3) 방정식들이 해결되고, 4) 규칙들이 해결된다. 규칙 해결은 데이터가 업데이트되도록 할 수 있다.
해결기들이 지정된 순서로 실행되면, 해결이 정지해야 하는지 여부가 결정된다(판정 블록 1009). 예컨대 모든 출력 모델 변수들이 해결되었거나, 또는 모든 출력 모델 변수들이 해결되지 않았더라도 출력 모델 변수들 중 더 이상의 것을 해결하기 위해 특수 해결기들이 할 수 있는 것이 없는 경우 해결 프로세스가 정지해야 한다. 해결 프로세스가 종료되지 않아야 하는 경우(판정 블록 1009의 아니오), 프로세스는 종속성 분석으로 되돌아간다(동작 1004). 그러나, 이번에는 해결되고 있는 하나 이상의 출력 모델 변수로 인해 입력 및 출력 모델 변수들의 아이덴티티가 변했을 수 있다. 한편으로, 해결 프로세스가 종료되어야 하는 경우(판정 블록 1009의 예), 해결이 종료된다(동작 1010). 그러나, 지나치게 많은 출력 모델 변수가 존재하여 모델이 완전히 해결될 수 없는 경우, 모델은 그럼에도 불구하고 부분해를 생성하는 데 성공할 수 있고, 여기서 출력 모델 변수는 해결이 얼마나 진행될 수 있었는지를 반영하는 기호 값들을 할당받았다. 예컨대, 모델이 방정식 A = B + C를 갖고, B가 "2"로 알려져 있고 입력 모델 변수이며, C는 출력 모델 변수이고 A 또한 출력 모델 변수이며 해결될 필요가 있는 경우, 모델 해결기는 A에 대한 수치 값을 생성할 수 없는데, 그 까닭은 B가 알려진 반면 C가 알려지지 않았기 때문이다. 따라서 완전한 해결 대신, 해결기는 A에 대한 값으로서 "2+C"를 반환한다. 따라서, 어떤 추가적인 변수가 알려질 필요가 있는지는, 그러한 변수에 값을 공급하거나 또는 다른 입력 데이터로부터 필요한 값을 성공적으로 생성할 수 있는 추가적인 규칙/방정식/제약 또는 시뮬레이션을 추가함으로써 저작자에게 명확해진다.
이러한 방법(1000)은 해결기 프레임워크가 알려진 모델 파라미터들 중 임의의 것의 값의 변화가 있었음을 탐지하는 때마다 및/또는 해결기 프레임워크가 알려진 그리고 알려지지 않은 모델 파라미터들의 아이덴티티가 변했다고 결정하는 때마다 반복될 수 있다. 해결은 적어도 두 가지 방식으로 진행될 수 있다. 첫째로, 모델이 기호적으로 완전히 해결될 수 있는 경우(즉, 계산 가능한 식이 각 미지항에 대해 존재하도록 모든 방정식, 규칙 및 제약이 알고리즘적으로 재기록될 수 있는 경우), 이것이 이루어지고 모델이 계산된다. 달리 말해, 데이터 값들이 각 미지항들에 대해 생성되고/되거나 조절이 허용된 데이터 값들이 조절된다. 두 번째 가능한 방식으로서, 모델이 기호적으로 완전히 해결될 수 없는 경우, 이는 기호적으로 부분적으로 해결되고, 다음으로 하나 이상의 수치적인 방법이 필요한 해를 얻는 데 사용될 수 있는지 여부가 결정된다. 또한, 첫 번째 경우에도 기호적 해결 방법을 수행하는 것에 비해 필요한 값들을 계산하기 위해 수치적인 방법들을 사용하는 것이 더 빠른 방식일 수 있는지 여부가 결정되도록 최적화 단계가 이루어진다. 기호적 방법이 더 빠를 수 있지만, 많은 항 재기록 및/또는 많은 재기록 규칙 검색이 존재하여 이를 포기하고 수치적인 방법들을 사용하여 해결하는 것이 더 빨라 기호적 해결이 수행될 수 있는 경우들이 존재한다.
합성 뷰 컴포지션
파이프라인(201)은 또한 가능하게는 저작 메커니즘(240)의 일부로서 포함되는 모델 도입 메커니즘(241)을 포함한다. 모델 도입 메커니즘(241)은 사용자 인터페이스 또는 다른 도움을 저작자에게 제공하여 저작자가 기존의 분석 주도 모델의 적어도 일부를 사용자가 구축중인 현재의 분석 주도 모델 내로 도입할 수 있도록 한다. 따라서, 저작자는 새로운 분석 모델을 저작하는 경우에 항상 아무 것도 없는 상태에서 시작해야 할 필요가 없다. 전체 분석 주도 모델이 도입될 수 있거나, 또는 가능하게는 모델의 일부가 도입될 수 있다. 예컨대, 도입은 아래의 6개의 잠재적 효과 중 하나 이상 또는 전부를 야기할 수 있다.
도입의 첫 번째 잠재적 효과로서, 추가적인 모델 입력 데이터가 파이프라인에 추가될 수 있다. 예컨대, 도 2를 참조하면, 추가적인 데이터가 입력 데이터(211), 분석 데이터(221) 및/또는 뷰 데이터(231)에 추가될 수 있다. 추가적인 모델 입력 데이터는 또한 도 3의 데이터 액세스 컴포넌트(310), 또는 가능하게는 상이한 정규화 컴포넌트들(330)에 추가되는 추가적인 접속기들을 포함할 수 있다.
도입의 두 번째 잠재적 효과로서, 모델 입력 데이터와 모델 파라미터들 사이에 추가적인 또는 수정된 결속이 존재할 수 있다. 예컨대, 도 4를 참조하면, 데이터 모델 결속기(410)는 정규화된 데이터(401)와 모델 파라미터들(411) 사이에 추가적인 결속이 일어나게 할 수 있다. 이는 알려진 모델 파라미터의 개수에 있어서 증가를 야기할 수 있다.
도입의 세 번째 잠재적 효과로서, 모델 파라미터들의 보충적인 집합을 생성하기 위한 추가적인 모델 파라미터들이 존재할 수 있다. 예컨대, 도 4를 참조하면, 도입된 모델의 분석 행위들의 도입으로 인해 모델 파라미터들(411)이 증대될 수 있다.
도입의 네 번째 잠재적 효과로서, 모델에 추가되는 추가적인 분석 관계(예컨대 방정식, 규칙 및 제약)가 존재할 수 있다. 추가적인 입력 데이터가 첫 번째 잠재적 효과로부터 초래되고, 추가적인 결속이 두 번째 잠재적 효과로부터 초래되며, 추가적인 모델 파라미터들이 세 번째 잠재적 효과로부터 초래되고, 추가적인 분석 관계가 네 번째 효과로부터 초래된다. 이러한 추가적인 아이템들 중 임의의 하나 이상이 뷰 컴포지션에 영향을 미치는 추가적인 데이터로서 나타낼 수 있다. 또한, 이러한 효과들 중 임의의 하나 이상은 도 4의 해결기(440)의 행위를 바꿀 수 있다.
도입의 다섯 번째 잠재적 효과로서, 뷰의 모델 파라미터들과 입력 파라미터들 사이에 추가적인 또는 상이한 결속이 존재할 수 있다. 예컨대, 도 5를 참조하면, 모델 뷰 결속 컴포넌트(510)는 모델 파라미터들(411)의 잠재적으로 증가된 집합을 뷰 컴포넌트 저장소(520) 내의 뷰 컴포넌트들의 잠재적으로 증가된 집합에 결속시킨다.
도입의 여섯 번째 잠재적 효과로서, 도 5의 뷰 컴포넌트 저장소(520)에 추가되는 추가적인 파라미터화된 뷰 컴포넌트들이 존재할 수 있으며, 이는 가능하게는 뷰 컴포지션에 새로운 뷰 아이템들이 추가되는 결과를 낳는다.
따라서, 다른 모델의 전부 또는 일부를 도입함으로써, 그 모델과 연관된 데이터가 도입된다. 뷰 컴포지션이 데이터 주도적이므로, 이는 모델의 도입된 부분들이 현재의 뷰 컴포지션에 즉시 포함된다는 것을 의미한다.
기존의 분석 주도 분석 모델의 일부가 도입되는 경우, 파이프라인(201)에 공급되는 데이터의 변화가 일어나며, 이에 의해 파이프라인(201)이 즉시 또는 소정의 다른 이벤트에 응답하여 뷰 컴포지션의 재생성을 야기하도록 한다. 따라서, 본질적으로 기존의 모델로부터의 복사 및 붙여넣기인 것에 관해, 그러한 결과적인 합성 모델은 해결 동작으로 인해 디스플레이 상에 즉시 나타낼 수 있다.
이러한 특징이 얼마나 유용할 수 있는지에 관한 예로서, 도 6의 풍수 방 뷰 컴포지션을 고려한다. 이러한 애플리케이션의 저작자는 풍수 전문가일 수 있고, 표준 방 배치 뷰 컴포지션 모델로부터 시작하기를 원할 수 있다. 따라서, 기존의 방 배치 모델을 도입함으로써, 풍수 전문가는 이제 상대적으로 빠르게(즉시는 아니더라도) 방 배치(601)가 도 6에 도시된 디스플레이 상에 나타나는 것을 볼 수 있다. 이뿐만이 아니라, 이제 표준 방 배치 뷰 컴포지션 모델과 함께 통상적으로 딸려 오는 가구 및 방 아이템이 도 6의 풍수 어플리케이션에 대해 이용 가능하게 된다.
이제, 풍수 전문가는 풍수 차트 요소(602)를 구축하기 위한 기초로서 기본 파이 차트 요소를 도입하기를 원할 수 있다. 그러나, 이제 풍수 전문가는 가능하게는 총 8개의 쐐기가 있다는 점, 그리고 가능하게는 배경 이미지와 각 쐐기에 대한 표제를 포함하는 차트 요소에 대한 특정한 고정된 입력 파라미터들을 지정할 수 있다. 이제 풍수 전문가는 모델 파라미터들이 어떻게 상호 관련되는지를 지정하는 분석 관계를 지정할 필요가 있을 뿐이다. 특히, 가구 또는 다른 방 아이템의 색, 위치 및 유형은 특정한 풍수 점수에 영향을 미칠 수 있다. 전문가는 간단히 이러한 관계를 기록할 수 있고, 그럼으로써 방 배치(601)와 풍수 점수를 분석적으로 상호 관련시킬 수 있다. 다른 이들의 작업을 기초로 구축할 수 있는 이러한 유형의 협력적인 능력은 문제들을 해결하고 시각적인 분석을 가능하게 하는 애플리케이션들을 생성함에 있어서 막대한 창조성을 낳을 수 있다. 이는 특히 사용자가 고정된 종속성 그래프를 사용하여 일방향 데이터 흐름을 시각적으로 프로그래밍하도록 할 수 있는 시스템들과 대비된다. 이러한 시스템들은 입력으로부터 출력으로 원래 프로그래밍된 일방향 해결만을 행할 수 있다. 본 명세서에 기술된 원리들은 사용자와의 상호작용적 세션(session)이 주어지는 임의의 시점에 무엇이 알려지고 무엇이 알려지지 않는지에 따라 복수의 방식으로 해결을 가능하게 한다.
시각적 상호작용
지금까지는 뷰 컴포지션 프로세스가 한 번에 렌더링되는 단일 뷰 컴포지션인 것으로 기술되었다. 예컨대, 도 6은 입력 데이터의 집합으로부터 생성되는 단일 뷰 컴포지션을 도시한다. 그러나, 본 명세서에 기술된 원리들은 복수의 성분 뷰 컴포지션을 포함하는 통합된 뷰 컴포지션이 존재하는 예로 확장될 수 있다. 이는 다수의 상이한 환경에서 도움이 될 수 있다.
예컨대, 입력 데이터의 단일 집합이 주어지면, 해결기 메커니즘이 출력 모델 변수들을 해결하고 있는 경우에 복수의 가능한 해가 존재할 수 있다. 성분 뷰 컴포지션들은 각각 복수의 가능한 해 중 하나를 나타낼 수 있고, 다른 성분 뷰 컴포지션은 다른 가능한 해를 나타낼 수 있다.
다른 예에서, 사용자는 간단히 입력 데이터의 특정한 집합을 사용하여 생성된 이전의 뷰 컴포지션을 유지하고 이후 입력 데이터를 수정하여 새로운 시나리오를 시도함으로써 새로운 뷰 컴포지션을 생성하기를 원할 수 있다. 이후 사용자는 또한 그 두 번째 뷰 컴포지션을 보유하고 다시 한 번 입력 데이터를 변경함으로써 세 번째 가능한 시나리오를 시도하기를 원할 수 있다. 이후 사용자는 가능하게는 세 시나리오를 나란히 비교하면서 동시에 보면서 정보를 얻을 수 있는데, 이러한 정보는 그렇지 않은 경우에 단순히 하나의 뷰 컴포지션을 한 번에 보면서 얻기가 어려울 수 있다.
도 11은 도 6의 풍수 예로부터 확장되는 통합된 뷰 컴포지션(1100)을 도시한다. 통합된 뷰 컴포지션에서, 도 6의 제1 뷰 컴포지션(600)은 도 6에 도시된 그대로와 같은 요소들(601 및 602)을 다시 한 번 사용하여 표현된다. 그러나, 여기서 강조된 제2 뷰 컴포지션이 표현된다. 제2 뷰 컴포지션은 두 개의 요소, 방 디스플레이 및 풍수 점수 미터가 존재한다는 점에서 제1 뷰 컴포지션과 유사하다. 그러나, 제2 뷰 컴포지션에 대한 입력 데이터는 제1 뷰 컴포지션에 대한 입력 데이터와 상이하다. 예컨대, 이러한 경우, 가구의 아이템들 중 몇몇에 대한 위치 데이터가 상이할 수 있으며, 이에 의해 제2 뷰 컴포지션의 방 배치(1101) 내의 이들의 위치가 제1 뷰 컴포지션의 방 배치(601)의 위치와 상이하게 할 수 있다. 그러나, 다양한 가구 아이템들의 상이한 위치는 제1 뷰 컴포지션의 풍수 미터(602)에 비해 제2 뷰 컴포지션의 풍수 미터(1102)의 상이한 풍수 점수들과 상관된다.
통합된 뷰 컴포지션은 또한 이전에 생성되고 현재 디스플레이되는 뷰 컴포지션의 일부 또는 전부에 걸쳐 적어도 하나의 파라미터의 값의 비교를 시각적으로 표현하는 비교 요소를 포함할 수 있다. 예컨대, 도 11에서, 디스플레이되는 뷰 컴포지션들 각각에 대한 비용 및 전달 시간을 나타낼 수 있는 막대 그래프가 존재할 수 있다. 이러한 비교 요소는 뷰 컴포넌트 저장소(520) 내의 추가적인 뷰 컴포넌트일 수 있다. 가능하게는 그러한 비교 뷰 요소는 디스플레이되고 있는 복수의 뷰 컴포지션이 존재하는 경우에만 렌더링될 것이다. 그러한 경우, 비교 뷰 컴포지션 입력 파라미터들은 모델의 상이한 해결 반복에 대해 모델 파라미터들에 매핑될 수 있다. 예컨대, 비교 뷰 컴포지션 입력 파라미터들은 도 11의 제1 및 제2 뷰 컴포지션들의 생성을 위해 생성된 비용 파라미터에 매핑될 수 있고, 제1 및 제2 뷰 컴포지션들의 생성을 위해 생성된 전달 파라미터에 매핑될 수 있다.
도 11을 참조하면, 사용자가 이전에 구축된 이용 가능한 뷰 컴포지션들 전체의 선택된 부분 집합을 시각적으로 강조할 수 있도록 하는 선택 메커니즘(1110)이 존재한다. 선택 메커니즘(1110)은 썸네일(thumbnail) 형태로, 또는 다른 강조되지 않은 소정의 방식으로 도시되는 세 개의 가능한 뷰 구축(1111, 1112 및 1113)을 포함하는 것으로 도시된다. 각 썸네일 뷰 컴포지션(1111 내지 1113)은 대응하는 체크박스(1121 내지 1123)를 포함한다. 사용자는 시각적으로 강조될 임의의 뷰 컴포지션에 대응하는 체크박스를 체크할 수 있다. 이러한 경우, 체크박스들(1121 및 1123)이 체크되고, 그럼으로써 더 큰 형태의 대응하는 뷰 구축들이 디스플레이된다.
통합된 뷰 컴포지션, 또는 심지어 그 주제에 대한 임의의 단일 뷰 컴포지션은 어느 모델 파라미터들이 분석적 해결기 메커니즘에 의한 다른 해결을 트리거링하는 미지항으로서 취급되어야 하는지를 지정하도록 사용자가 뷰 컴포지션과 상호작용하게 하는 메커니즘을 가질 수 있다. 예컨대, 도 11의 방 디스플레이(1101)에서, 가구의 특정한 아이템을 우측 클릭하고, 특정한 파라미터(예컨대 위치)를 우측 클릭할 수 있고, 드롭 다운 메뉴(drop down menu)가 나타나 사용자로 하여금 그 파라미터가 미지항으로서 취급되어야 함을 지정하게 할 수 있다. 이후 사용자는 조화 비율(harmony percentage){예컨대 풍수 점수 미터(1102)의 95%}을 우측 클릭할 수 있고, 그에 따라 사용자로 하여금 상이한 조화 비율을 지정할 수 있도록 하는 슬라이더(slider)(또는 다른 사용자 입력 메커니즘의 텍스트 상자)가 나타날 수 있다. 이는 알려진 파라미터와 알려지지 않은 파라미터의 아이덴티티가 변경되는 결과를 낳을 것이기 때문에, 재해결이 도출될 것이고, 위치가 미지항으로서 지정된 가구의 아이템이 새로운 위치에 나타날 것이다.
일 실시예에서, 통합된 뷰 컴포지션은 특정한 방향으로 모델 파라미터의 값을 향하게 하도록 만들어 질 수 있는 조절에 대한 시각적인 프롬프트(prompt)를 포함할 수 있다. 예컨대, 풍수의 예에서, 특정한 조화 점수가 알려진 입력 파라미터로서 지정되는 경우, 위치가 미지항으로서 지정된 가구의 아이템에 대해 가구의 다양한 위치가 제안될 수 있다. 예컨대, 가능하게는 더 높은 조화 점수를 얻기 위해 가구를 움직일 방향 및 물 점수를 최대화하기 위해 움직일 상이한 방향 등을 제안하는 몇몇 화살표가 가구로부터 나올 수 있다. 뷰 컴포넌트는 또한 특정한 점수를 증가시키도록 의자가 옮겨질 수 있는 음영을 도시할 수 있다. 따라서, 사용자는 최적화를 원하는 특정한 파라미터 주위의 디자인을 개선하기 위해 이러한 시각적인 프롬프트들을 사용할 수 있다. 다른 예에서, 가능하게는 사용자는 비용을 감소시키기를 원할 수 있다. 그러면 사용자는 제안된 가구 선택의 상이한 집합을 낳도록 최소화될 미지항으로서 비용을 지정할 수 있다.
추가적인 예시 응용예
도 1 및 2의 아키텍처는 영역에 관계없이 무수한 데이터 주도 분석 모델이 구축되도록 할 수 있다. 이러한 영역들에 관해 유사할 필요가 있는 것은 전혀 존재하지 않는다. 시각적 표현에 대해 분석을 적용하는 것이 유용할 수 있는 경우에 해결해야 할 문제가 존재하는 경우, 본 명세서에 기술된 원리들이 유익할 수 있다. 지금까지, 풍수 방 배치 응용예를 포함하는 단지 몇 가지 예시적인 응용예만이 기술되었다. 본 명세서에 기술된 원리들의 넓은 범위의 응용성을 설명하기 위해, 몇몇 추가적인 넓은 범위의 예시 응용예들이 이제 기술될 것이다.
추가 예시 #1 - 소매상 선반 배열
제품 판매원은 종종 3-D 시각화를 사용하여 소매상들에게 선반 배열, 최종 디스플레이들 및 새로운 판촉물들을 판매한다. 파이프라인(201)을 사용하여, 판매원은 현장에서 가정 시나리오를 보여줄 수 있을 것이다. 소정의 제품 배치가 주어지고 최소 일일 매출/선형 면적(foot) 문턱값이 주어지면, 판매원은 최소한의 필요한 입수 가능한 재고(stock)를 계산하고 시각화할 수 있다. 반대로, 소정의 입수 가능한 재고가 주어지고 격주의 보급(replenishment) 주기가 주어지면, 판매원은 원하는 매출/선형 기저를 제공하는 제품 배치를 계산할 수 있다. 소매상은 영향을 시각화하고, 시나리오들을 비교하며, 이익들을 비교할 수 있을 것이다. 도 12는 예시적인 소매상 선반 매열 시각화를 도시한다. 입력 데이터는 제품의 시각적 이미지들, 제품의 개수, 각 제품에 대해 할당된 선형 평방 면적을 포함할 수 있다.
추가 예시 #2 - 도시 계획
도시 계획 매시업(mash up)이 중요해지고 있다. 본 명세서에 기술된 원리들을 사용하여, 분석이 이러한 해결책에 통합될 수 있다. 도시 계획자는 종종 전문가들에 의해 생성된 교통 모델을 열어 길 개선안들의 갤러리로부터 교량을 드래깅할 것이다. 교량은 길이 제약 및 강풍 동작 제한과 같은 분석 행위를 가져올 것이다. 적합한 시각화를 통해, 계획자는 상이한 교량 유형 및 배치의 교통에 대한 영향을 살펴보고 비교할 것이다. 본 명세서에 기술된 원리들이 임의의 지도 시나리오들에 적용될 수 있고, 여기서 지도는 다양한 목적을 위한 것일 수 있다. 지도는 지형의 특징을 이해하고 소정의 위치에 대한 방향을 찾기 위한 것일 수 있다. 지도는 또한 영역화된 데이터를 비교하기 위한 시각적인 배경일 수 있다. 더 최근에는, 빌딩, 인테리어 및 임의의 2-D 또는 3-D 개체들이 지도 내에 중첩되거나 배치될 수 있는 시각적인 세계를 생성하기 위해 지도들이 사용되고 있다. 도 13은 예시적인 시각화된 도시 계획을 도시한다.
추가 예시 #3 - 시각적 교육
영역 종사자뿐만 아니라 대중에 의해 복잡한 데이터가 이해될 필요가 있는 과학, 의학 및 인구학과 같은 영역에서는, 대중의 흥미를 일으키고 끌어당기는 데이터 시각화를 생성하기 위해 저작자들은 본 명세서에 기술된 원리들을 사용할 수 있다. 이들은 영역에 특유한 은유를 사용할 것이고, 저작자의 스타일 감각을 전달할 것이다. 도 14는 아동 교육에 관한 예시이다. 도 15는 인구 밀도에 관한 종래의 예시이다. 종래에는, 이러한 시각화는 단지 정적인 도해였다. 본 명세서에 기술된 원리들을 사용하여, 이들은 생생하고 상호작용적인 체험이 될 수 있다. 예컨대, 지리적으로 분산된 성장 패턴을 입력 데이터로서 입력함으로써, 사용자는 인구 피크 변화를 볼 수 있다. 저작된 모델이 지원하는 경우 소정의 시각화는 사용자들이 가정을 할 수 있게 한다. 즉, 저작자는 소정의 값들을 바꿀 수 있고, 그러한 변화가 다른 값들에 미치는 영향을 볼 수 있다.
따라서, 본 명세서에 기술된 원리들은 시각화된 문제 해결 및 분석의 세계에 주요한 패러다임 이동(paradigm shift)을 제공한다. 본 명세서에 기술된 원리들이 임의의 영역에 적용될 수 있으므로, 패러다임 이동은 모든 영역에 걸쳐 적용된다.
실시예들을 상세히 기술하였고, 참고적으로 본 명세서에 기술된 다양한 동작들 및 구조들은 컴퓨팅 시스템에 의해 구현될 필요가 없지만 그와 같이 구현되지 않을 수 있다. 따라서, 이러한 설명을 마무리하기 위해, 예시적인 컴퓨팅 시스템이 도 16과 관련하여 기술될 것이다.
도 16은 컴퓨팅 시스템(1600)을 도시한다. 컴퓨팅 시스템들은 이제 점차 다양한 형태를 취하고 있다. 컴퓨팅 시스템들은 예컨대 핸드헬드(handheld) 장치, 가전 기기, 랩톱 컴퓨터, 데스크톱 컴퓨터, 메인프레임, 분산형 컴퓨팅 시스템, 또는 심지어 종래에 컴퓨팅 시스템으로 고려되지 않았던 장치들일 수 있다. 본 명세서 및 청구 범위에서, "컴퓨팅 시스템"이라는 용어는 적어도 하나의 프로세서 및 프로세서에 의해 실행될 수 있는 컴퓨터 실행 가능 명령들을 가질 수 있는 메모리를 포함하는 임의의 장치 또는 시스템(또는 그 조합)을 포함하는 것으로서 넓게 정의된다. 메모리는 임의의 형태를 취할 수 있고, 컴퓨팅 시스템의 성질과 형태에 의존할 수 있다. 컴퓨팅 시스템은 네트워크 환경에 걸쳐 분산될 수 있고, 복수의 성분 컴퓨팅 시스템을 포함할 수 있다.
도 16에 도시된 바처럼, 가장 기본적인 구성에 있어서, 컴퓨팅 시스템(1600)은 전형적으로 적어도 하나의 처리 유닛(1602)과 메모리(1604)를 포함한다. 메모리(1604)는 휘발성, 비휘발성, 또는 이 둘의 소정의 조합일 수 있는 물리적 시스템 메모리일 수 있다. "메모리"라는 용어는 본 명세서에서 물리적 저장 매체와 같은 비휘발성 대용량 저장 장치를 지칭하는 데 사용될 수 있다. 컴퓨팅 시스템이 분산되는 경우, 처리, 메모리 및/또는 저장 능력이 또한 분산될 수 있다. 본 명세서에서 사용되는 바처럼, "모듈" 또는 "컴포넌트"라는 용어는 컴퓨팅 시스템 상에서 실행되는 소프트웨어 개체들 또는 루틴(routine)들을 지칭할 수 있다. 본 명세서에 기술되는 상이한 컴포넌트, 모듈, 엔진 및 서비스는 컴퓨팅 시스템 상에서 실행되는 개체들 또는 프로세스들로서 구현될 수 있다{예컨대 별개의 스레드(thread)로서}.
아래의 설명에서, 실시예들이 하나 이상의 컴퓨팅 시스템에 의해 수행되는 동작들을 참조하여 기술된다. 이러한 동작들이 소프트웨어로 구현되는 경우, 동작을 수행하는 연관된 컴퓨팅 시스템의 하나 이상의 프로세서는 컴퓨터 실행 가능 명령들을 실행한 것에 응답하여 컴퓨팅 시스템의 동작을 지시한다. 이러한 동작의 예는 데이터의 조작을 수반한다. 컴퓨터 실행 가능 명령들(그리고 조작된 데이터)은 컴퓨팅 시스템(1600)의 메모리(1604)에 저장될 수 있다.
컴퓨팅 시스템(1600)은 컴퓨팅 시스템(1600)이 예컨대 네트워크(1610) 상에서 다른 메시지 프로세서들과 통신하도록 하는 통신 채널들(1608)을 또한 포함할 수 있다. 통신 채널들(1608)은 통신 매체의 예이다. 통신 매체는 전형적으로 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호 또는 다른 전송 메커니즘 내의 다른 데이터를 구현하고, 임의의 정보 전달 매체를 포함한다. 예를 들어(한정이 아님), 통신 매체는 유산 네트워크 및 직접 배선 접속과 같은 유선 매체 및 음향, 무선, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 본 명세서에서 사용되는 바와 같은 컴퓨터 판독 가능 매체라는 용어는 저장 매체 및 통신 매체 모두를 포함한다.
본 발명의 범위 내의 실시예들은 또한 저장된 컴퓨터 실행 가능 명령들 또는 데이터 구조들을 운반하거나 갖는 컴퓨터 판독 가능 매체를 포함한다. 이러한 컴퓨터 판독 가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있다. 예를 들어(한정이 아님), 이러한 컴퓨터 판독 가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 장치, 자기 디스크 저장 매체 또는 다른 자기 저장 장치와 같은 물리적 저장 장치 및/또는 메모리 매체, 또는 컴퓨터 실행 가능 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 운반 또는 저장하는 데 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 정보가 네트워크 또는 다른 통신 접속(유선, 무선, 또는 이들의 조합)을 통해 컴퓨터에 전송 또는 제공되는 경우, 컴퓨터는 접속을 컴퓨터 판독 가능 매체로서 적절하게 본다. 따라서, 임의의 이러한 접속은 컴퓨터 판독 가능 매체로서 적절하게 명명된다. 위의 조합들이 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
컴퓨터 판독 가능 명령들은 예컨대 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 처리 장치가 소정의 기능 또는 기능들의 그룹을 수행하도록 하는 명령들 및 데이터를 포함한다. 주제 대상이 구조적인 특징 및/또는 방법적인 동작에 특유한 언어로 기술되었지만, 첨부된 청구항들에 정의된 주제 대상은 반드시 본 명세서에 기술된 특정한 특징들 또는 동작들로 한정되지는 않음을 이해해야 한다. 오히려, 본 명세서에 기술된 특정한 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태로서 개시된다.
본 발명은 그 취지나 본질적인 특성으로부터 벗어나지 않고 다른 특정한 형태로 구현될 수 있다. 기술된 실시예들은 모든 면에서 예시적일 뿐 한정적인 것으로 간주되지 않아야 한다. 따라서, 본 발명의 범위는 위의 설명이 아닌 첨부된 청구항들에 의해 나타내진다. 청구항들의 등가물의 의미 및 범위 내에 있게 되는 모든 변화가 이들의 범위 내에 포괄된다.

Claims (23)

  1. 하나 이상의 프로세서를 포함하는 컴퓨터 시스템에서, 복수의 시각적 맵 아이템(map items)을 포함하는 상호작용식 맵 뷰(interactive map view)를 분석적으로 구축하기 위해 구현되는 방법으로서,
    맵 뷰에 대응하는 가상 디스플레이 공간에 어떤 시각적 맵 아이템들이 디스플레이되는지에 대해, 및 상기 시각적 맵 아이템들이 렌더링되는 경우 상기 가상 디스플레이 공간에서 상기 시각적 맵 아이템들이 서로에 대해 어떻게 디스플레이되는지 및 어디에 디스플레이되는지에 대해 적어도 총체적으로(collectively) 영향을 미치는 입력 데이터에 상기 컴퓨터 시스템이 액세스하는 동작- 상기 시각적 맵 아이템들은 적어도 제1 시각적 맵 아이템 및 제2 시각적 맵 아이템을 포함하고, 상기 가상 디스플레이 공간 내에서의 상기 제2 시각적 맵 아이템의 위치는 상기 가상 디스플레이 공간 내에서의 상기 제1 시각적 맵 아이템의 위치에 의해 제약을 받음 -과,
    상기 컴퓨터 시스템이 상기 맵 뷰에 대응하는 분석 모델을 식별하는 동작- 상기 분석 모델은 상기 시각적 맵 아이템들의 렌더링에 관련된 복수의 모델 파라미터 간의 분석 관계들(analytical relations)을 정의함 -과,
    상기 컴퓨터 시스템이, 상기 입력 데이터를 상기 복수의 모델 파라미터 중 적어도 제1 모델 파라미터에 결합(binding)시킴으로써 상기 제1 모델 파라미터를 상기 분석 모델에 대한 입력으로서 정의하는 동작- 상기 제1 모델 파라미터는 적어도 상기 제1 시각적 맵 아이템이 상기 가상 디스플레이 공간에서 렌더링되는 위치에 영향을 미침 -과,
    상기 컴퓨터 시스템이, 상기 분석 모델의 출력으로서 상기 복수의 모델 파라미터 중 적어도 제2 모델 파라미터를 구해야(solve) 하는 것으로 판정하는 동작- 상기 제2 모델 파라미터는 적어도 상기 제2 시각적 맵 아이템이 상기 가상 디스플레이 공간에서 렌더링되는 위치에 영향을 미침 -과,
    상기 컴퓨터 시스템이, 제약 해결기(constraints solver)를 실행하여 상기 제2 모델 파라미터의 구해진 값에 대한 적어도 하나의 제약을 결정하는 것을 포함하여, 상기 제1 모델 파라미터에 공급된 상기 입력 데이터의 하나 이상의 값 및 상기 분석 관계들에 기초하여 상기 제2 모델 파라미터를 구하는 것을 포함하는 상기 복수의 모델 파라미터를 구하는 동작- 상기 적어도 하나의 제약은 상기 제1 시각적 맵 아이템에 대한 상기 제2 시각적 맵 아이템의 위치를 제한하는 상기 제2 시각적 맵 아이템의 하나 이상의 속성에 기초함 -과,
    상기 컴퓨터 시스템이 적어도 상기 제1 및 제2 모델 파라미터를 대응하는 맵 뷰 컴포넌트들에 결합시키는 동작- 각 맵 뷰 컴포넌트는 상기 시각적 맵 아이템들 중 하나 이상이 어떻게 렌더링되는지와 어디에 렌더링되는지에 영향을 미치고, 상기 결합시키는 동작은 상기 제1 모델 파라미터를 상기 제1 시각적 맵 아이템에 대응하는 제1 맵 뷰 컴포넌트에 결합시키는 것과, 상기 제2 모델 파라미터를 상기 제2 시각적 맵 아이템에 대응하는 제2 맵 뷰 컴포넌트에 결합시키는 것을 포함함 -과,
    상기 컴퓨터 시스템이 상기 제1 및 제2 맵 뷰 컴포넌트 및 상기 제1 및 제2 모델 파라미터에 기초하여 상기 제1 시각적 맵 아이템을 상기 가상 디스플레이 공간의 제1 위치에 렌더링하고 상기 제2 시각적 맵 아이템을 상기 가상 디스플레이 공간 내에서 상기 제1 위치와 다른 제2 위치에 렌더링함으로써 상기 시각적 맵 아이템들의 제1 뷰 컴포지션(first view composition)을 생성하는 동작과,
    상기 제1 모델 파라미터가 상기 분석 모델의 출력이 되고 상기 제2 모델 파라미터가 상기 분석 모델의 입력이 되도록 상기 복수의 모델 파라미터의 상기 결합을 변경하는 사용자 입력을 수신하는 동작과,
    상기 컴퓨터 시스템이, 상기 제2 모델 파라미터에 대한 입력 값을 제공하고 상기 가상 디스플레이 공간 내에서의 상기 제2 시각적 맵 아이템의 위치를 상기 제2 위치와 다른 제3 위치로 변경시키는 사용자 입력을, 상기 가상 디스플레이 공간에서의 상기 제2 시각적 맵 아이템의 시각적 조작을 통해 수신하는 동작과,
    상기 컴퓨터 시스템이 상기 사용자 입력으로부터 수신된 상기 제2 모델 파라미터에 대한 상기 입력 값 및 상기 분석 관계들에 기초하여 상기 제1 모델 파라미터에 대한 복수의 값을 계산하는 동작- 상기 제1 모델 파라미터에 대한 상기 복수의 값은 상기 제1 시각적 맵 아이템에 대한 상기 제2 시각적 맵 아이템의 위치를 제한하는 상기 적어도 하나의 제약을 준수함 -과,
    상기 컴퓨터 시스템이 상기 시각적 맵 아이템들의 제2 뷰 컴포지션을 생성하는 동작- 상기 제2 뷰 컴포지션을 생성하는 동작은 상기 제3 위치에 상기 제2 시각적 맵 아이템을 렌더링하는 것과 상기 제1 모델 파라미터에 대한 상기 계산된 복수의 값에 기초하여 상기 제1 시각적 맵 아이템의 복수의 가능한 위치를 나타내는 것을 포함함 -
    을 포함하는 상호작용식 맵 뷰 구축 방법.
  2. 제1항에 있어서,
    상기 복수의 모델 파라미터의 아이덴티티(identity) 및 상기 복수의 모델 파라미터 사이의 상기 분석 관계들은 선언적으로(declaratively) 정의될 수 있는
    상호작용식 맵 뷰 구축 방법.
  3. 제2항에 있어서,
    상기 복수의 모델 파라미터 사이의 상기 분석 관계들은 적어도 하나의 방정식을 포함하는 표현(expression)을 포함하는
    상호작용식 맵 뷰 구축 방법.
  4. 제2항에 있어서,
    상기 복수의 모델 파라미터 사이의 상기 분석 관계들은 적어도 하나의 규칙을 포함하는 표현을 포함하는
    상호작용식 맵 뷰 구축 방법.
  5. 제2항에 있어서,
    상기 복수의 모델 파라미터 사이의 상기 분석 관계들은 적어도 하나의 제약(constraint)을 포함하는 표현을 포함하는
    상호작용식 맵 뷰 구축 방법.
  6. 제1항에 있어서,
    입력인 모델 파라미터들의 아이덴티티 및 출력인 모델 파라미터들의 아이덴티티는 하나의 해결 반복(solve iteration)에서 다음 해결 반복으로 변경될 수 있는
    상호작용식 맵 뷰 구축 방법.
  7. 제1항에 있어서,
    상기 복수의 모델 파라미터를 구하는 동작은 상기 컴퓨터 시스템이 복수의 이종 해결기(heterogenic solver)의 해결 연산들을 조정하는(coordinating) 동작을 포함하는
    상호작용식 맵 뷰 구축 방법.
  8. 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행되는 경우 상기 컴퓨팅 시스템으로 하여금 방법을 수행하게 하는 하나 이상의 컴퓨터 실행 가능 명령어(들)가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    맵 뷰에 대응하는 가상 디스플레이 공간에 어떤 시각적 맵 아이템들이 디스플레이되는지에 대해, 및 상기 시각적 맵 아이템들이 렌더링되는 경우 상기 가상 디스플레이 공간에서 상기 시각적 맵 아이템들이 서로에 대해 어떻게 디스플레이되는지 및 어디에 디스플레이되는지에 대해 적어도 총체적으로(collectively) 영향을 미치는 입력 데이터에 액세스하는 동작- 상기 시각적 맵 아이템들은 적어도 제1 시각적 맵 아이템 및 제2 시각적 맵 아이템을 포함하고, 상기 가상 디스플레이 공간 내에서의 상기 제2 시각적 맵 아이템의 위치는 상기 가상 디스플레이 공간 내에서의 상기 제1 시각적 맵 아이템의 위치에 의해 제약을 받음 -과,
    상기 맵 뷰에 대응하는 분석 모델을 식별하는 동작- 상기 분석 모델은 상기 시각적 맵 아이템들의 렌더링에 관련된 복수의 모델 파라미터 간의 분석 관계들을 정의함 -과,
    상기 입력 데이터를 상기 복수의 모델 파라미터 중 적어도 제1 모델 파라미터에 결합(binding)시킴으로써 상기 제1 모델 파라미터를 상기 분석 모델에 대한 입력으로서 정의하는 동작- 상기 제1 모델 파라미터는 적어도 상기 제1 시각적 맵 아이템이 상기 가상 디스플레이 공간에서 렌더링되는 위치에 영향을 미침 -과,
    상기 분석 모델의 출력으로서 상기 복수의 모델 파라미터 중 적어도 제2 모델 파라미터를 구해야(solve) 하는 것으로 판정하는 동작- 상기 제2 모델 파라미터는 적어도 상기 제2 시각적 맵 아이템이 상기 가상 디스플레이 공간에서 렌더링되는 위치에 영향을 미침 -과,
    제약 해결기를 실행하여 상기 제2 모델 파라미터의 구해진 값에 대한 적어도 하나의 제약을 결정하는 것을 포함하여, 상기 제1 모델 파라미터에 공급된 상기 입력 데이터의 하나 이상의 값 및 상기 분석 관계들에 기초하여 상기 제2 모델 파라미터를 구하는 것을 포함하는 상기 복수의 모델 파라미터를 구하는 동작- 상기 적어도 하나의 제약은 상기 제1 시각적 맵 아이템에 대한 상기 제2 시각적 맵 아이템의 위치를 제한하는 상기 제2 시각적 맵 아이템의 하나 이상의 속성에 기초함 -과,
    적어도 상기 제1 및 제2 모델 파라미터를 대응하는 맵 뷰 컴포넌트들에 결합시키는 동작- 각 맵 뷰 컴포넌트는 상기 시각적 맵 아이템들 중 하나 이상이 어떻게 렌더링되는지에 영향을 미치고, 상기 결합시키는 동작은 상기 제1 모델 파라미터를 상기 제1 시각적 맵 아이템에 대응하는 제1 맵 뷰 컴포넌트에 결합시키는 것과, 상기 제2 모델 파라미터를 상기 제2 시각적 맵 아이템에 대응하는 제2 맵 뷰 컴포넌트에 결합시키는 것을 포함함 -과,
    상기 제1 및 제2 맵 뷰 컴포넌트 및 상기 제1 및 제2 모델 파라미터에 기초하여 상기 제1 시각적 맵 아이템을 상기 가상 디스플레이 공간의 제1 위치에 렌더링하고 상기 제2 시각적 맵 아이템을 상기 가상 디스플레이 공간 내에서 상기 제1 위치와 다른 제2 위치에 렌더링함으로써 상기 시각적 맵 아이템들의 제1 뷰 컴포지션을 생성하는 동작과,
    상기 제1 모델 파라미터가 상기 분석 모델의 출력이 되고 상기 제2 모델 파라미터가 상기 분석 모델의 입력이 되도록 상기 복수의 모델 파라미터의 상기 결합을 반전시키는(invert) 동작과,
    상기 제2 모델 파라미터에 대한 입력 값을 제공하고 상기 가상 디스플레이 공간 내에서의 상기 제2 시각적 맵 아이템의 위치를 상기 제2 위치와 다른 제3 위치로 변경시키는 사용자 입력을, 상기 가상 디스플레이 공간에서의 상기 제2 시각적 맵 아이템의 시각적 조작을 통해 수신하는 동작과,
    상기 사용자 입력으로부터 수신된 상기 제2 모델 파라미터에 대한 상기 입력 값 및 상기 분석 관계들에 기초하여 상기 제1 모델 파라미터에 대한 복수의 값을 생성하는 동작- 상기 제1 모델 파라미터에 대한 상기 복수의 값은 상기 제1 시각적 맵 아이템에 대한 상기 제2 시각적 맵 아이템의 위치를 제한하는 상기 적어도 하나의 제약을 준수함 -과,
    상기 시각적 맵 아이템들의 제2 뷰 컴포지션을 생성하는 동작- 상기 제2 뷰 컴포지션을 생성하는 동작은 상기 제3 위치에 상기 제2 시각적 맵 아이템을 렌더링하는 것과 상기 제1 모델 파라미터에 대한 상기 생성된 복수의 값에 기초하여 상기 제1 시각적 맵 아이템의 복수의 가능한 위치를 나타내는 것을 포함함 -
    을 포함하는
    컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서,
    상기 맵 뷰는 도시(city)의 뷰인
    컴퓨터 판독가능 저장 매체.
  10. 제8항에 있어서,
    상기 맵 뷰는 지리적 위치의 뷰인
    컴퓨터 판독가능 저장 매체.
  11. 제8항에 있어서,
    상기 맵 뷰는 3차원 볼륨(volume)을 갖는
    컴퓨터 판독가능 저장 매체.
  12. 제11항에 있어서,
    상기 맵 뷰는 데카르트 좌표, 극좌표, 로그 좌표 및 임의의 수학적 방정식들을 통해 포착 또는 표현되는 방식으로 공간이 펼쳐질 수 있는 좌표계로 이루어지는 그룹으로부터 선택된 좌표계를 갖는
    컴퓨터 판독가능 저장 매체.
  13. 제8항에 있어서,
    상기 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행되는 경우 상기 하나 이상의 컴퓨터 실행가능 명령어(들)는 상기 컴퓨팅 시스템으로 하여금,
    시각적 아이템들의 합성 뷰의 구축을 주도하는(drive) 이종 데이터에 액세스하는 데이터 액세스 컴포넌트와,
    정규화된 형식으로(canonicalized format) 상기 이종 입력 데이터를 제시하는 데이터 정규화 컴포넌트와,
    상기 데이터 정규화 컴포넌트로부터의 상기 정규화된 데이터의 일부를 대응하는 맵 모델 파라미터들에 결합시키는 데이터 모델 결합 컴포넌트
    를 사용하게 하는,
    컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서,
    상기 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행되는 경우 상기 하나 이상의 컴퓨터 실행가능 명령어(들)는 상기 컴퓨팅 시스템으로 하여금,
    상기 시각적 맵 아이템들의 상기 합성 맵 뷰에 대한 사용자 조작에 응답하여 상기 시각적 맵 아이템들의 상기 합성 맵 뷰를 재생성하게 하는
    컴퓨터 판독가능 저장 매체.
  15. 제1항에 있어서,
    상기 컴퓨터 시스템이 상기 제1 뷰 컴포지션 및 상기 제2 뷰 컴포지션을 디스플레이하는 동작을 더 포함하되, 상기 시각적 맵 아이템들은 상기 적어도 두 개의 상이한 뷰 컴포지션에 걸쳐 이루어지는 적어도 하나의 파라미터의 대응하는 값들의 비교를 시각적으로 나타내는 적어도 하나의 비교 요소도 포함하고, 상기 적어도 하나의 비교 요소는 상기 적어도 두 개의 상이한 뷰 컴포지션 각각과 함께 디스플레이되는
    상호작용식 맵 뷰 구축 방법
  16. 제15항에 있어서,
    상기 적어도 두 개의 상이한 뷰 컴포지션은 동시에 디스플레이되는
    상호작용식 맵 뷰 구축 방법.
  17. 제1항에 있어서,
    상기 컴퓨터 시스템이, 상기 제2 모델 파라미터의 값을 최대화하도록 상기 제2 시각적 아이템을 선택적으로 이동시킬 것을 사용자에게 촉구하는 동작을 더 포함하는
    상호작용식 맵 뷰 구축 방법.
  18. 제1항에 있어서,
    상기 분석 관계들은 상기 복수의 모델 파라미터 간의 관계들을 정의하는 하나 이상의 방정식, 하나 이상의 규칙 및 하나 이상의 제약을 포함하는
    상호작용식 맵 뷰 구축 방법.
  19. 제18항에 있어서,
    상기 컴퓨터 시스템이 상기 제1 모델 파라미터에 공급된 상기 입력 데이터의 하나 이상의 값 및 상기 분석 관계들에 기초하여 상기 제2 모델 파라미터를 구하는 것을 포함하는 상기 복수의 모델 파라미터를 구하는 동작은,
    상기 제약 해결기를 실행하여 상기 제2 모델 파라미터의 구해진 값에 대한 적어도 하나의 제약을 결정하는 것, 및
    상기 결정된 적어도 하나의 제약에 기초하여, 방정식 해결기 및 규칙 해결기를 실행하여 상기 적어도 하나의 제약을 준수하는 상기 제2 모델 파라미터의 적어도 하나의 값을 결정하기 위해 상기 분석 관계들의 상기 하나 이상의 방정식 및 상기 하나 이상의 규칙을 구하는 것
    을 순서대로 수행하는 동작을 포함하는
    상호작용식 맵 뷰 구축 방법.
  20. 제18항에 있어서,
    상기 컴퓨터 시스템이 상기 제1 모델 파라미터에 공급된 상기 입력 데이터의 하나 이상의 값 및 상기 분석 관계들에 기초하여 상기 제2 모델 파라미터를 구하는 것을 포함하는 상기 복수의 모델 파라미터를 구하는 동작은 상기 제2 모델 파라미터에 대한 상기 적어도 하나의 제약을 준수하는 상기 제2 모델 파라미터의 적어도 하나의 값을 결정하기 위해,
    상기 제약 해결기를 실행하여 상기 제2 모델 파라미터의 구해진 값에 대한 적어도 하나의 제약을 결정하는 것,
    상기 결정된 적어도 하나의 제약에 기초하여, 방정식 해결기를 실행하여 상기 분석 관계들의 하나 이상의 방정식을 구하는 것, 및
    상기 결정된 적어도 하나의 제약 및 상기 구해진 하나 이상의 방정식에 기초하여, 규칙 해결기를 실행하여 상기 분석 관계들의 상기 하나 이상의 규칙을 구하는 것
    을 순서대로 수행하는 동작을 포함하는
    상호작용식 맵 뷰 구축 방법.
  21. 제1항에 있어서,
    상기 제2 시각적 맵 아이템의 하나 이상의 속성에 기초한 상기 적어도 하나의 제약은 상기 제2 시각적 맵 아이템의 구역 지정 제한을 포함하는
    상호작용식 맵 뷰 구축 방법.
  22. 제1항에 있어서,
    상기 제2 시각적 맵 아이템은 주택 요소를 포함하고, 상기 제2 시각적 맵 아이템의 하나 이상의 속성에 기초한 상기 적어도 하나의 제약은 구역 지정에 기초한 상기 제1 시각적 맵 아이템에 대한 상기 주택 요소의 배치에 대한 제한을 포함하는
    상호작용식 맵 뷰 구축 방법.
  23. 컴퓨터 시스템으로서,
    하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에서 실행되는 경우, 복수의 시각적 맵 아이템을 포함하는 상호작용식 맵 뷰(interactive map view)를 분석적으로 구축하기 위한 방법을 구현하는 컴퓨터 실행가능 명령어들이 저장된 하나 이상의 컴퓨터 저장 장치를 포함하되,
    상기 방법은,
    맵 뷰에 대응하는 가상 디스플레이 공간에 어떤 시각적 맵 아이템들이 디스플레이되는지에 대해, 및 상기 시각적 맵 아이템들이 렌더링되는 경우 상기 가상 디스플레이 공간에서 상기 시각적 맵 아이템들이 서로에 대해 어떻게 디스플레이되는지 및 어디에 디스플레이되는지에 대해 적어도 총체적으로(collectively) 영향을 미치는 입력 데이터에 액세스하는 동작- 상기 시각적 맵 아이템들은 적어도 제1 시각적 맵 아이템 및 제2 시각적 맵 아이템을 포함하고, 상기 가상 디스플레이 공간 내에서의 상기 제2 시각적 맵 아이템의 위치는 상기 가상 디스플레이 공간 내에서의 상기 제1 시각적 맵 아이템의 위치에 의해 제약을 받음 -과,
    상기 맵 뷰에 대응하는 분석 모델을 식별하는 동작- 상기 분석 모델은 상기 시각적 맵 아이템들의 렌더링에 관련된 복수의 모델 파라미터 간의 분석 관계들을 정의함 -과,
    상기 입력 데이터를 상기 복수의 모델 파라미터 중 적어도 제1 모델 파라미터에 결합(binding)시킴으로써 상기 제1 모델 파라미터를 상기 분석 모델에 대한 입력으로서 정의하는 동작- 상기 제1 모델 파라미터는 적어도 상기 제1 시각적 맵 아이템이 상기 가상 디스플레이 공간에서 렌더링되는 위치에 영향을 미침 -과,
    상기 분석 모델의 출력으로서 상기 복수의 모델 파라미터 중 적어도 제2 모델 파라미터를 구해야(solve) 하는 것으로 판정하는 동작- 상기 제2 모델 파라미터는 적어도 상기 제2 시각적 맵 아이템이 상기 가상 디스플레이 공간에서 렌더링되는 위치에 영향을 미침 -과,
    제약 해결기(constraints solver)를 실행하여 상기 제2 모델 파라미터의 구해진 값에 대한 적어도 하나의 제약을 결정하는 것을 포함하여, 상기 제1 모델 파라미터에 공급된 상기 입력 데이터의 하나 이상의 값 및 상기 분석 관계들에 기초하여 상기 제2 모델 파라미터를 구하는 것을 포함하는 상기 복수의 모델 파라미터를 구하는 동작- 상기 적어도 하나의 제약은 상기 제1 시각적 맵 아이템에 대한 상기 제2 시각적 맵 아이템의 위치를 제한하는 상기 제2 시각적 맵 아이템의 하나 이상의 속성에 기초함 -과,
    적어도 상기 제1 및 제2 모델 파라미터를 대응하는 맵 뷰 컴포넌트들에 결합시키는 동작- 각 맵 뷰 컴포넌트는 상기 시각적 맵 아이템들 중 하나 이상이 어떻게 렌더링되는지와 어디에 렌더링되는지에 영향을 미치고, 상기 결합시키는 동작은 상기 제1 모델 파라미터를 상기 제1 시각적 맵 아이템에 대응하는 제1 맵 뷰 컴포넌트에 결합시키는 것과, 상기 제2 모델 파라미터를 상기 제2 시각적 맵 아이템에 대응하는 제2 맵 뷰 컴포넌트에 결합시키는 것을 포함함 -과,
    상기 제1 및 제2 맵 뷰 컴포넌트 및 상기 제1 및 제2 모델 파라미터에 기초하여 상기 제1 시각적 맵 아이템을 상기 가상 디스플레이 공간의 제1 위치에 렌더링하고 상기 제2 시각적 맵 아이템을 상기 가상 디스플레이 공간 내에서 상기 제1 위치와 다른 제2 위치에 렌더링함으로써 상기 시각적 맵 아이템들의 제1 뷰 컴포지션을 생성하는 동작과,
    상기 제1 모델 파라미터가 상기 분석 모델의 출력이 되고 상기 제2 모델 파라미터가 상기 분석 모델의 입력이 되도록 상기 복수의 모델 파라미터의 상기 결합을 변경하는 사용자 입력을 수신하는 동작과,
    상기 제2 모델 파라미터에 대한 입력 값을 제공하고 상기 가상 디스플레이 공간 내에서의 상기 제2 시각적 맵 아이템의 위치를 상기 제2 위치와 다른 제3 위치로 변경시키는 사용자 입력을, 상기 가상 디스플레이 공간에서의 상기 제2 시각적 맵 아이템의 시각적 조작을 통해 수신하는 동작과,
    상기 사용자 입력으로부터 수신된 상기 제2 모델 파라미터에 대한 상기 입력 값 및 상기 분석 관계들에 기초하여 상기 제1 모델 파라미터에 대한 복수의 값을 계산하는 동작- 상기 제1 모델 파라미터에 대한 상기 복수의 값은 상기 제1 시각적 맵 아이템에 대한 상기 제2 시각적 맵 아이템의 위치를 제한하는 상기 적어도 하나의 제약을 준수함 -과,
    상기 시각적 맵 아이템들의 제2 뷰 컴포지션을 생성하는 동작- 상기 제2 뷰 컴포지션을 생성하는 동작은 상기 제3 위치에 상기 제2 시각적 맵 아이템을 렌더링하는 것과 상기 제1 모델 파라미터에 대한 상기 계산된 복수의 값에 기초하여 상기 제1 시각적 맵 아이템의 복수의 가능한 위치를 나타내는 것을 포함함 -
    을 포함하는, 컴퓨터 시스템.
KR1020107028988A 2008-06-27 2009-06-25 분석적 맵 모델 KR101568893B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/163,863 US8255192B2 (en) 2008-06-27 2008-06-27 Analytical map models
US12/163,863 2008-06-27

Publications (2)

Publication Number Publication Date
KR20110040776A KR20110040776A (ko) 2011-04-20
KR101568893B1 true KR101568893B1 (ko) 2015-11-12

Family

ID=41445312

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107028988A KR101568893B1 (ko) 2008-06-27 2009-06-25 분석적 맵 모델

Country Status (7)

Country Link
US (1) US8255192B2 (ko)
EP (1) EP2316085A4 (ko)
KR (1) KR101568893B1 (ko)
CN (1) CN102077202B (ko)
BR (1) BRPI0914955A2 (ko)
RU (1) RU2497188C2 (ko)
WO (1) WO2009158536A2 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8411085B2 (en) 2008-06-27 2013-04-02 Microsoft Corporation Constructing view compositions for domain-specific environments
US8620635B2 (en) 2008-06-27 2013-12-31 Microsoft Corporation Composition of analytics models
US8117145B2 (en) 2008-06-27 2012-02-14 Microsoft Corporation Analytical model solver framework
US8155931B2 (en) * 2008-11-26 2012-04-10 Microsoft Corporation Use of taxonomized analytics reference model
US8103608B2 (en) * 2008-11-26 2012-01-24 Microsoft Corporation Reference model for data-driven analytics
US8190406B2 (en) * 2008-11-26 2012-05-29 Microsoft Corporation Hybrid solver for data-driven analytics
US8145615B2 (en) * 2008-11-26 2012-03-27 Microsoft Corporation Search and exploration using analytics reference model
US8314793B2 (en) 2008-12-24 2012-11-20 Microsoft Corporation Implied analytical reasoning and computation
US8504568B2 (en) 2009-01-08 2013-08-06 Fluid Operations Gmbh Collaborative workbench for managing data from heterogeneous sources
US8531451B2 (en) 2009-06-19 2013-09-10 Microsoft Corporation Data-driven visualization transformation
US8493406B2 (en) 2009-06-19 2013-07-23 Microsoft Corporation Creating new charts and data visualizations
US8259134B2 (en) * 2009-06-19 2012-09-04 Microsoft Corporation Data-driven model implemented with spreadsheets
US8788574B2 (en) 2009-06-19 2014-07-22 Microsoft Corporation Data-driven visualization of pseudo-infinite scenes
US9330503B2 (en) 2009-06-19 2016-05-03 Microsoft Technology Licensing, Llc Presaging and surfacing interactivity within data visualizations
US8692826B2 (en) 2009-06-19 2014-04-08 Brian C. Beckman Solver-based visualization framework
US8866818B2 (en) 2009-06-19 2014-10-21 Microsoft Corporation Composing shapes and data series in geometries
US8407177B2 (en) * 2009-06-22 2013-03-26 Integrated Training Solutions, Inc. System and associated method for determining and applying sociocultural characteristics
US8352397B2 (en) 2009-09-10 2013-01-08 Microsoft Corporation Dependency graph in data-driven model
US8700592B2 (en) 2010-04-09 2014-04-15 Microsoft Corporation Shopping search engines
US9785987B2 (en) 2010-04-22 2017-10-10 Microsoft Technology Licensing, Llc User interface for information presentation system
US9043296B2 (en) 2010-07-30 2015-05-26 Microsoft Technology Licensing, Llc System of providing suggestions based on accessible and contextual information
RU2522869C2 (ru) * 2012-11-07 2014-07-20 Федеральное государственное бюджетное учреждение науки Институт радиотехники и электроники им. В.А. Котельникова Российской академии наук Способ распознавания и классификации формы объектов в лабиринтных доменных структурах
US20140310619A1 (en) * 2013-04-12 2014-10-16 Microsoft Corporation Signal capture controls in recalculation user interface
US20140306964A1 (en) * 2013-04-12 2014-10-16 Microsoft Corporation Incremental compiling of a declarative program
US20150082224A1 (en) * 2013-09-13 2015-03-19 MoreStream Development LLC Computer graphical user interface system, and method for project mapping
RU2608671C2 (ru) 2014-03-24 2017-01-23 Общество С Ограниченной Ответственностью "Яндекс" Способ (варианты), система и носитель информации для отображения фрагмента интерактивной карты с помощью пользовательского интерфейса клиентского устройства
CN104615539A (zh) * 2015-02-09 2015-05-13 大唐联仪科技有限公司 一种测试参数的处理方法和系统
KR102048648B1 (ko) * 2015-10-30 2019-11-25 콘비다 와이어리스, 엘엘씨 시맨틱 IoT에 대한 Restful 오퍼레이션들
WO2017097103A1 (en) * 2015-12-11 2017-06-15 Huawei Technologies Co., Ltd. Recommendation system, apparatus and method thereof to guide self-service analytic
US10838600B2 (en) * 2018-02-12 2020-11-17 Wayfair Llc Systems and methods for providing an extended reality interface
RU2681361C1 (ru) * 2018-04-18 2019-03-06 Федеральное государственное казенное военное образовательное учреждение высшего образования Академия Федеральной службы охраны Российской Федерации Система формирования пользовательского интерфейса для ввода, отображения и модификации векторных пространственных данных
RU2019126966A (ru) * 2019-11-12 2021-05-12 Общество с ограниченной ответственностью "Иммерсия Ск" Модуль автоматической генерации расстановки элементов интерьера
CN112464149A (zh) * 2020-12-15 2021-03-09 北京百奥智汇科技有限公司 数据的概率密度分布的确定方法、装置、设备和介质

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481741A (en) * 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing attribute nodes in a graphical data flow environment
US5602564A (en) * 1991-11-14 1997-02-11 Hitachi, Ltd. Graphic data processing system
US5528735A (en) * 1993-03-23 1996-06-18 Silicon Graphics Inc. Method and apparatus for displaying data within a three-dimensional information landscape
US5555354A (en) * 1993-03-23 1996-09-10 Silicon Graphics Inc. Method and apparatus for navigation within three-dimensional information landscape
US5537618A (en) 1993-12-23 1996-07-16 Diacom Technologies, Inc. Method and apparatus for implementing user feedback
JP2837815B2 (ja) * 1994-02-03 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション 対話型ルール・ベース・コンピュータ・システム
US5469538A (en) * 1994-03-02 1995-11-21 Mathsoft, Inc. Mathematical document editor and method performing live symbolic calculations for use with an electronic book
US5818737A (en) * 1994-08-04 1998-10-06 City Of Scottsdale Method for guiding development of muncipality
US6085978A (en) * 1994-08-17 2000-07-11 Metrologic Instruments, Inc. Holographic laser scanners of modular construction and method and apparatus for designing and manufacturing the same
US6535210B1 (en) * 1995-06-07 2003-03-18 Geovector Corp. Vision system computer modeling apparatus including interaction with real scenes with respect to perspective and spatial relationship as measured in real-time
US7216116B1 (en) * 1996-05-06 2007-05-08 Spotfire Ab Data analysis system with automated query and visualization environment setup
US6021403A (en) * 1996-07-19 2000-02-01 Microsoft Corporation Intelligent user assistance facility
US6208985B1 (en) * 1997-07-09 2001-03-27 Caseventure Llc Data refinery: a direct manipulation user interface for data querying with integrated qualitative and quantitative graphical representations of query construction and query result presentation
US6222533B1 (en) * 1997-08-25 2001-04-24 I2 Technologies, Inc. System and process having a universal adapter framework and providing a global user interface and global messaging bus
US6175954B1 (en) * 1997-10-30 2001-01-16 Fuji Xerox Co., Ltd. Computer programming using tangible user interface where physical icons (phicons) indicate: beginning and end of statements and program constructs; statements generated with re-programmable phicons and stored
US6063126A (en) * 1997-12-04 2000-05-16 Autodesk, Inc. Modeling system having constraint solvers
US6003040A (en) * 1998-01-23 1999-12-14 Mital; Vijay Apparatus and method for storing, navigating among and adding links between data items in computer databases
US6385563B1 (en) * 1998-11-10 2002-05-07 Autodesk, Inc. Reusable design model and apparatus
US6289299B1 (en) * 1999-02-17 2001-09-11 Westinghouse Savannah River Company Systems and methods for interactive virtual reality process control and simulation
US6842175B1 (en) * 1999-04-22 2005-01-11 Fraunhofer Usa, Inc. Tools for interacting with virtual environments
US6823299B1 (en) * 1999-07-09 2004-11-23 Autodesk, Inc. Modeling objects, systems, and simulations by establishing relationships in an event-driven graph in a computer implemented graphics system
EP1069534A3 (en) 1999-07-12 2002-08-28 Styleclick.Com Method and apparatus for the visualization and updating of three-dimensional scenes
US7181438B1 (en) * 1999-07-21 2007-02-20 Alberti Anemometer, Llc Database access system
DE19958277A1 (de) * 1999-12-03 2001-06-28 Ruediger Friederich Abdeckvorrichtung für ein Behältnis
US6868525B1 (en) * 2000-02-01 2005-03-15 Alberti Anemometer Llc Computer graphic display visualization system and method
US6484164B1 (en) * 2000-03-29 2002-11-19 Koninklijke Philips Electronics N.V. Data search user interface with ergonomic mechanism for user profile definition and manipulation
US7039569B1 (en) * 2000-06-09 2006-05-02 Haws Richard R Automatic adaptive dimensioning for CAD software
US7219307B2 (en) * 2000-09-22 2007-05-15 Jpmorgan Chase Bank Methods for graphically representing interactions among entities
US7055107B1 (en) * 2000-09-22 2006-05-30 Wireless Valley Communications, Inc. Method and system for automated selection of optimal communication network equipment model, position, and configuration
US6906712B2 (en) * 2000-11-30 2005-06-14 Solidworks Corporation Automated three-dimensional alternative position viewer
AU2002252222A1 (en) * 2001-03-08 2002-09-24 Richard M. Adler System for analyzing strategic business decisions
US6912515B2 (en) * 2001-06-04 2005-06-28 Xerox Corporation Method and system for algorithm synthesis in problem solving
US6856980B2 (en) * 2001-06-25 2005-02-15 Exigen Group Hybrid use of rule and constraint engines
CA2352844C (en) * 2001-07-10 2009-11-17 Geojet Information Solutions Inc. 3-d map data visualization
US7165105B2 (en) * 2001-07-16 2007-01-16 Netgenesis Corporation System and method for logical view analysis and visualization of user behavior in a distributed computer network
CA2462165A1 (en) * 2001-10-11 2003-04-17 Visual Sciences, Llc System, method, and computer program product for processing and visualization of information
US6922681B2 (en) * 2001-12-20 2005-07-26 Xerox Corporation Problem partitioning method and system
US20040246252A1 (en) * 2002-01-14 2004-12-09 Morrow Jesse James Method and apparatus for visualizing data
US7047168B2 (en) * 2002-01-16 2006-05-16 The Regents Of The University Of Michigan Method and system for providing constraint-based guidance to a designer in a collaborative design environment
JP3788378B2 (ja) * 2002-03-27 2006-06-21 ソニー株式会社 3次元モデル生成システム及び方法、並びにコンピュータ・プログラム
CA2479818A1 (en) * 2002-04-10 2003-10-23 Transtech Pharma, Inc. System and method for integrated computer-aided molecular discovery
US7574652B2 (en) * 2002-06-20 2009-08-11 Canon Kabushiki Kaisha Methods for interactively defining transforms and for generating queries by manipulating existing query data
CN1159668C (zh) * 2002-08-08 2004-07-28 上海交通大学 过程冶金中计算流体力学的数据可视化方法
US7334222B2 (en) * 2002-09-11 2008-02-19 International Business Machines Corporation Methods and apparatus for dependency-based impact simulation and vulnerability analysis
US20040075697A1 (en) * 2002-10-16 2004-04-22 Maudlin Matthew Eric Apparatus, system, method, and program for using GIS data
US20040167870A1 (en) * 2002-12-06 2004-08-26 Attensity Corporation Systems and methods for providing a mixed data integration service
US20040154000A1 (en) * 2003-02-03 2004-08-05 Kasra Kasravi System and method for semantic software analysis
US7634478B2 (en) * 2003-12-02 2009-12-15 Microsoft Corporation Metadata driven intelligent data navigation
US7089221B2 (en) * 2003-06-24 2006-08-08 Palo Alto Research Center Incorporated Feedback control of problem solving
US7089220B2 (en) * 2003-06-24 2006-08-08 Palo Alto Research Center Incorporated Complexity-directed cooperative problem solving
US7139764B2 (en) * 2003-06-25 2006-11-21 Lee Shih-Jong J Dynamic learning and knowledge representation for data mining
JP4447865B2 (ja) * 2003-08-01 2010-04-07 ソニー株式会社 地図表示システム、地図データ加工装置、地図表示装置及び地図表示方法
US7765175B2 (en) * 2003-09-18 2010-07-27 Optimum Power Technology, L.P. Optimization expert system
RU35894U1 (ru) * 2003-10-07 2004-02-10 Закрытое акционерное общество "Гранит - 7" Устройство для обнаружения подвижного источника экологического загрязнения акватории
US7277572B2 (en) 2003-10-10 2007-10-02 Macpearl Design Llc Three-dimensional interior design system
US20050091584A1 (en) * 2003-10-23 2005-04-28 Microsoft Corporation Methods for applying styles to visual aspects of user interface elements
US20050131659A1 (en) * 2003-12-16 2005-06-16 Mei Hsaio L.S. Systems and methods for 3D modeling and asset management
US20050131657A1 (en) * 2003-12-16 2005-06-16 Sean Mei Hsaio L. Systems and methods for 3D modeling and creation of a digital asset library
US20060106793A1 (en) * 2003-12-29 2006-05-18 Ping Liang Internet and computer information retrieval and mining with intelligent conceptual filtering, visualization and automation
US20050210054A1 (en) * 2004-03-22 2005-09-22 Michael Harris Information management system
US7865301B2 (en) * 2004-03-23 2011-01-04 Google Inc. Secondary map in digital mapping system
US7272817B1 (en) * 2004-04-15 2007-09-18 Bank Of America Corporation Method and apparatus for modeling a business process to facilitate evaluation of driving metrics
US7428504B2 (en) * 2004-07-20 2008-09-23 Visure Corporation Method and system for organizing and disseminating information on products featured in entertainment productions
US20060117303A1 (en) * 2004-11-24 2006-06-01 Gizinski Gerard H Method of simplifying & automating enhanced optimized decision making under uncertainty
CA2500573A1 (en) * 2005-03-14 2006-09-14 Oculus Info Inc. Advances in nspace - system and method for information analysis
US7593013B2 (en) * 2005-03-11 2009-09-22 University Of Utah Research Foundation Systems and methods for displaying and querying heterogeneous sets of data
US20060271581A1 (en) * 2005-05-12 2006-11-30 International Business Machines Corporation Simulation of computing system solutions based on customer data using a solution builder wizard environment
US8626440B2 (en) * 2005-04-18 2014-01-07 Navteq B.V. Data-driven 3D traffic views with the view based on user-selected start and end geographical locations
US7587376B2 (en) * 2005-05-26 2009-09-08 International Business Machines Corporation Reformulation of constraint satisfaction problems for stochastic search
US7849048B2 (en) * 2005-07-05 2010-12-07 Clarabridge, Inc. System and method of making unstructured data available to structured data analysis tools
US7577918B2 (en) * 2005-07-15 2009-08-18 Microsoft Corporation Visual expression of a state of an application window
US7587636B2 (en) * 2005-08-04 2009-09-08 Microsoft Corporation Unit test generalization
US7365311B1 (en) * 2005-09-08 2008-04-29 The Mathworks, Inc. Alignment of mass spectrometry data
RU2288509C1 (ru) * 2005-10-14 2006-11-27 Общество с ограниченной ответственностью "АЛЬТОНИКА" (ООО "АЛЬТОНИКА") Способ мониторинга, сопровождения и управления наземными транспортными средствами
US20070141541A1 (en) * 2005-12-13 2007-06-21 Posit Science Corporation Assessment in cognitive training exercises
US20070168454A1 (en) * 2006-01-19 2007-07-19 International Business Machines Corporation System and method for host-to-host communication
US20070277111A1 (en) * 2006-02-01 2007-11-29 Wright State University Graphical user interface using perception-action icons and a method thereof
US7415444B2 (en) * 2006-05-18 2008-08-19 International Business Machines Corporation Determining compliance rates for probabilistic requests
CA2549536C (en) * 2006-06-06 2012-12-04 University Of Regina Method and apparatus for construction and use of concept knowledge base
US7596534B2 (en) * 2006-06-15 2009-09-29 Microsoft Corporation Computer implemented methods for solving difference and non-difference linear constraints
US7925982B2 (en) * 2006-09-01 2011-04-12 Cheryl Parker System and method of overlaying and integrating data with geographic mapping applications
US20080062167A1 (en) 2006-09-13 2008-03-13 International Design And Construction Online, Inc. Computer-based system and method for providing situational awareness for a structure using three-dimensional modeling
US7566340B2 (en) * 2006-12-04 2009-07-28 Implicitcare, Llc Surgical threading device and method for using same
US7555478B2 (en) * 2006-12-05 2009-06-30 Yahoo! Inc. Search results presented as visually illustrative concepts
US8620635B2 (en) * 2008-06-27 2013-12-31 Microsoft Corporation Composition of analytics models
US8411085B2 (en) * 2008-06-27 2013-04-02 Microsoft Corporation Constructing view compositions for domain-specific environments
US8117145B2 (en) * 2008-06-27 2012-02-14 Microsoft Corporation Analytical model solver framework
US20090322739A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Visual Interactions with Analytics
US8145615B2 (en) * 2008-11-26 2012-03-27 Microsoft Corporation Search and exploration using analytics reference model
US8103608B2 (en) * 2008-11-26 2012-01-24 Microsoft Corporation Reference model for data-driven analytics
US8155931B2 (en) 2008-11-26 2012-04-10 Microsoft Corporation Use of taxonomized analytics reference model
US8190406B2 (en) * 2008-11-26 2012-05-29 Microsoft Corporation Hybrid solver for data-driven analytics

Also Published As

Publication number Publication date
US20090326872A1 (en) 2009-12-31
EP2316085A4 (en) 2013-11-20
CN102077202B (zh) 2014-12-10
WO2009158536A2 (en) 2009-12-30
CN102077202A (zh) 2011-05-25
BRPI0914955A2 (pt) 2015-10-20
US8255192B2 (en) 2012-08-28
WO2009158536A3 (en) 2010-04-08
RU2010153303A (ru) 2012-06-27
EP2316085A2 (en) 2011-05-04
KR20110040776A (ko) 2011-04-20
RU2497188C2 (ru) 2013-10-27

Similar Documents

Publication Publication Date Title
KR101568893B1 (ko) 분석적 맵 모델
US8190406B2 (en) Hybrid solver for data-driven analytics
US8620635B2 (en) Composition of analytics models
US8411085B2 (en) Constructing view compositions for domain-specific environments
US8117145B2 (en) Analytical model solver framework
US8103608B2 (en) Reference model for data-driven analytics
US20090322739A1 (en) Visual Interactions with Analytics
US8155931B2 (en) Use of taxonomized analytics reference model
KR101627887B1 (ko) 해결기-기반 시각화 프레임워크
US9342904B2 (en) Composing shapes and data series in geometries
US8145615B2 (en) Search and exploration using analytics reference model
US8314793B2 (en) Implied analytical reasoning and computation
US8352397B2 (en) Dependency graph in data-driven model
US8531451B2 (en) Data-driven visualization transformation
US9330503B2 (en) Presaging and surfacing interactivity within data visualizations
US8493406B2 (en) Creating new charts and data visualizations
US20110246549A1 (en) Adaptive distribution of the processing of highly interactive applications
US20100325564A1 (en) Charts in virtual environments
US20100325196A1 (en) Data-driven visualization of pseudo-infinite scenes

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 4