KR101597383B1 - 멀티 터치 객체 관성 시뮬레이션 - Google Patents

멀티 터치 객체 관성 시뮬레이션 Download PDF

Info

Publication number
KR101597383B1
KR101597383B1 KR1020117009026A KR20117009026A KR101597383B1 KR 101597383 B1 KR101597383 B1 KR 101597383B1 KR 1020117009026 A KR1020117009026 A KR 1020117009026A KR 20117009026 A KR20117009026 A KR 20117009026A KR 101597383 B1 KR101597383 B1 KR 101597383B1
Authority
KR
South Korea
Prior art keywords
application
application program
user
inertial
touch
Prior art date
Application number
KR1020117009026A
Other languages
English (en)
Other versions
KR20110074990A (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
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20110074990A publication Critical patent/KR20110074990A/ko
Application granted granted Critical
Publication of KR101597383B1 publication Critical patent/KR101597383B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0412Digitisers structurally integrated in a display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/041Indexing scheme relating to G06F3/041 - G06F3/045
    • G06F2203/04104Multi-touch detection in digitiser, i.e. details about the simultaneous detection of a plurality of touching locations, e.g. multiple fingers or pen and finger
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04806Zoom, i.e. interaction techniques or interactors for controlling the zooming operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04808Several contacts: gestures triggering a specific function, e.g. scrolling, zooming, right-click, when the user establishes several contacts with the surface simultaneously; e.g. using several fingers or a combination of fingers and pen

Abstract

관성 시스템은 응용 프로그램이 응용 프로그램 객체의 실세계 거동을 시뮬레이트하기 위해 다양한 멀티 터치 하드웨어 장치로부터 수신되는 입력을 확장하기 위한 통상의 플랫폼 및 응용 프로그래밍 인터페이스(API)를 제공한다. 자연스럽게 이동하기 위해, 응용 프로그램 객체는 탄성 및 감속 등의 물리적 특성을 나타내야만 한다. 사용자가 객체로부터 모든 접촉을 제거할 때, 관성 시스템은, 사용자가 여전히 터치로 객체를 이동시키고 있는 것처럼 응용 프로그램이 이벤트를 처리할 수 있도록, 부가의 조작 이벤트를 응용 프로그램에게 제공한다. 관성 시스템은 객체의 거동의 시뮬레이션에 기초하여 이벤트를 발생한다. 사용자가 객체를 다른 객체 안으로 이동시키는 경우, 관성 시스템은 객체의 경계 특성을 시뮬레이트한다. 따라서, 관성 시스템은 멀티 터치 하드웨어를 사용하여 조작되는 응용 프로그램 객체에 대한 보다 실제적인 이동을 제공하고, API는 응용 프로그램들에 걸친 조작에 일관성있는 느낌을 제공한다.

Description

멀티 터치 객체 관성 시뮬레이션{MULTI-TOUCH OBJECT INERTIA SIMULATION}
태블릿 PC 또는 펜 컴퓨터는 사용자가, 키보드 또는 마우스 대신에, 스타일러스, 디지털 펜 또는 손가락 끝으로 컴퓨터를 작동시킬 수 있게 하는 터치 스크린 또는 그래픽 태블릿/스크린 하이브리드 기술을 구비한 노트북 또는 슬레이트 형상의 모바일 컴퓨터이다. 그리기 및 필기가, 특히 컴퓨터에 익숙하지 않은 사람들에게, 키보드 및 마우스보다 훨씬 더 친숙한 형태의 입력이기 때문에, 태블릿 PC는 보다 자연스런 형태의 입력을 제공한다. 신체적으로 타이핑을 할 수 없는 사람들이 태블릿 PC의 추가 기능을 이용하여 전자 세계와 상호작용할 수 있기 때문에, 태블릿 PC는 또한 접근성이 더 나을 수 있다
멀티 터치(multi-touch 또는 multitouch)는 컴퓨터 사용자가 다수의 손가락 또는 입력 장치(예를 들어, 스타일러스)를 사용하여 그래픽 응용 프로그램을 제어할 수 있게 하는 일련의 상호작용 기법을 말한다. 멀티 터치 구현예는 보통 터치 하드웨어(예를 들어, 스크린, 테이블, 벽 등) 및 다수의 동시적인 터치 포인트를 인식하는 소프트웨어를 포함한다. 멀티 터치는 한번에 하나의 터치 포인트만을 인식하는 종래의 터치 스크린(예를 들어, 컴퓨터 터치 패드, ATM, 쇼핑 키오스크)과 대조를 이루고 있다. 멀티 터치 하드웨어는 열, 손가락 압력, 고속 캡처 카메라, 적외선 광, 광학 캡처, 조정된 전자기 유도, 초음파 수신기, 트랜스듀서 마이크, 레이저 거리 측정기, 음영 캡처 및 기타 메커니즘을 사용하여 터치를 감지할 수 있다. 멀티 터치 인터페이스에 대한 많은 응용 프로그램이 존재하고, 응용 프로그램 디자이너 및 사용자는 훨씬 더 많은 것을 제안하고 있다. 일부 사용자는 개인주의적이다(예를 들어, Microsoft Surface, Apple iPhone, HTC Diamond). 새 입력 방법으로서, 멀티 터치는 새로운 사용자 경험 패러다임의 가능성을 제공한다.
응용 프로그램 소프트웨어가 멀티 터치 하드웨어로부터 정보를 수신하는 인터페이스가 없는 경우, 응용 프로그램은 멀티 터치 하드웨어를 사용할 수 없다. 안타깝게도, 각각의 멀티 터치 하드웨어 장치는 그 자신의 독점적 인터페이스를 포함하며, 응용 프로그램 제작자는 하드웨어 장치에서 동작하는 소프트웨어를 작성하기 위해 그 하드웨어 장치에 대해 구체적으로 알아야만 한다. 예를 들어, 멀티 터치 하드웨어 공급자는 커널 모드 드라이버 및 사용자 모드 응용 프로그램 인터페이스를 제공할 수 있으며, 이 인터페이스를 통해 사용자 모드 소프트웨어 응용 프로그램은 멀티 터치 하드웨어와 통신을 하여 터치 정보를 수신할 수 있다. 응용 프로그램 제작자는 사용자 모드 응용 프로그램 인터페이스와 통신을 하는 소프트웨어를 작성하지만, 응용 프로그램 제작자의 소프트웨어는 멀티 터치 하드웨어에서만 동작한다. 응용 프로그램 제작자가 컴퓨터 사용자의 장치에서 올바르게 동작하는 다른 버전의 소프트웨어를 제조하지 않는 한, 다른 멀티 터치 하드웨어 장치를 갖는 컴퓨터 사용자는 응용 프로그램 제작자의 소프트웨어를 사용할 수 없다. 이것은 응용 프로그램 제작자에 대한 아주 제한된 잠재 시장을 생성하며, 멀티 터치 상호작용을 지원하는 응용 프로그램을 작성하려는 동기를 감소시키고, 가장 많은 수의 응용 프로그램이 사용될 수 있는 가장 인기있는 장치의 가격을 높게 유지시킨다.
다른 문제점은 응용 프로그램이 멀티 터치 하드웨어로부터 수신된 터치 입력에 기초하여 사용자의 의도를 판정하는 것이 어렵다는 것이다. 터치 입력은 임의의 주어진 때에 하드웨어가 터치 입력을 감지하는 좌표의 목록으로서 수신될 수 있다. 각각의 응용 프로그램은 좌표를 해석하고 사용자의 의도를 판정하는 소프트웨어를 포함해야만 한다. 또한, 사용자의 의도는 수신된 실제 터치 입력에만 국한되지 않을 수 있다. 사용자는 가상 객체가 실제 세계에서처럼 거동할 것으로 예상할 수 있다. 예를 들어, 사용자는 자신의 손가락으로 제스처를 함으로써 책상의 한쪽으로부터 다른쪽으로 파일을 "던질" 수 있을 것으로 예상할 수도 있다. 이러한 유형의 이동이 사용자가 자신의 손가락을 스크린의 한쪽으로부터 다른쪽으로 계속 끌고 갈 것으로 예상하는 현재의 멀티 터치 응용 프로그램에서는 지원되지 않는다. 응용 프로그램이 이러한 유형의 이동에 대한 지원을 제공하더라도, 다른 응용 프로그램은 그것으로부터 이득을 볼 수 없고, 따라서 응용 프로그램 제작자는 자신의 응용 프로그램에서 동일한 기능을 제공하기 위해 제1 응용 프로그램 제작자의 작업을 반복해야만 할 것이다.
관성 시스템은 응용 프로그램이 객체의 실세계 거동을 시뮬레이트하기 위해 다양한 멀티 터치 하드웨어 장치로부터 수신되는 입력을 확장하기 위한 통상의 플랫폼 및 응용 프로그래밍 인터페이스(API)를 제공한다. 응용 프로그램에 의해 수신되는 조작은 단지 멀티 터치 하드웨어와의 접촉의 이동에 기초한 객체의 이동을 나타낸다. 그러나, 자연스럽게 이동하기 위해, 객체는 또한 탄성 및 감속과 같은 물리적 특성도 나타내야만 한다. 사용자가 객체로부터 모든 접촉을 제거할 때, 관성 시스템은, 사용자가 여전히 터치로 객체를 이동시키고 있는 것처럼 응용 프로그램이 이벤트를 처리할 수 있도록, 부가의 조작 이벤트를 응용 프로그램에게 제공한다. 그러나, 관성 시스템은 객체의 거동의 시뮬레이션에 기초하여 실제로 이벤트를 발생한다. 사용자가 객체를 다른 객체 안으로 이동시키는 경우, 관성 시스템은 객체의 경계 특성에 기초하여 조작 이벤트를 송신한다. 따라서, 관성 시스템은 사용자가 멀티 터치 하드웨어를 사용하여 조작하는 응용 프로그램 객체에 대한 보다 현실적인 이동을 제공하고, API는 응용 프로그램들에 걸친 조작에 일관성있는 느낌을 제공한다.
이 요약은 이하에서 상세한 설명에 더 기술되는 일련의 개념을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 주요 특징 또는 필수적인 특징을 명시하기 위한 것이 아니며, 청구된 발명 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다.
도 1은 일 실시예에서, 관성 시스템의 컴포넌트를 나타낸 블록도이다.
도 2는 일 실시예에서, 관성 시스템의 전형적인 운영 환경 및 컴포넌트들 간의 데이터의 흐름을 나타낸 데이터 흐름도이다.
도 3은 일 실시예에서, 사용자 터치에 의해 조작되는 응용 프로그램 객체를 나타낸 디스플레이도이다.
도 4는 일 실시예에서, 조작 이벤트를 처리하기 위해 관성 시스템을 사용하는 멀티 터치 응용 프로그램의 입력 루프 처리를 나타낸 흐름도이다.
도 5는 일 실시예에서, 시스템이 터치 입력을 수신할 때 관성 시스템의 처리를 나타낸 흐름도이다.
도 6은 일 실시예에서, 관성 이벤트를 처리하기 위해 관성 시스템을 사용하는 멀티 터치 응용 프로그램의 처리를 나타낸 흐름도이다.
도 7은 일 실시예에서, 관성 처리 시스템이 시뮬레이션 컴포넌트의 처리를 나타낸 흐름도이다.
관성 시스템은 응용 프로그램이 객체의 실세계 거동을 시뮬레이트하기 위해 다양한 멀티 터치 하드웨어 장치로부터 수신되는 입력을 확장하기 위한 통상의 플랫폼 및 API를 제공한다. 예를 들어, 사용자가 실세계 객체를 미는 것을 중단할 때, 실세계 객체는 전형적으로 이동을 중단하지 않고 어떤 관성을 나타내며 마찰로 인해 최종적으로 멈출 때까지 계속 이동한다. 일부 실시예에서, 터치 입력은 먼저 하나 이상의 접촉의 이동을 조작으로서 해석하는 프로세스를 거친다. 조작은 개개의 터치 입력보다 사용자 의도에 보다 직접적으로 매핑되고, 다중 터치 접촉을 사용하여 객체의 기본 변환에 대한 지원을 추가한다. 응용 프로그램은 다수의 객체(예를 들어, 사진)를 동시에 회전, 크기 조정, 및 이동시키는 것을 지원하기 위해 조작을 사용할 수 있다. 조작은 회전, 스케일링(예를 들어, 줌) 및 이동(예를 들어, 패닝) 정보를 포함하는 2차원(2D) 아핀 변환으로서 기술될 수 있다.
멀티 터치 하드웨어의 각각의 터치를 접촉(contact)이라고 한다. 예를 들어, 사용자가 자신의 손가락을 멀티 터치 하드웨어에 놓고, 자신의 손가락을 이리 저리 이동시키며, 자신의 손가락을 들어올릴 때, 그 일련의 이벤트는 하나의 접촉이다. 예를 들어, 사용자가 2개의 접촉을 서로 더 가까와지게 또는 더 멀리 떨어지도록 이동시키는 경우, 시스템은 사용자가 객체를 스케일링(예를 들어, 줌인 또는 줌아웃)하는 것으로 판정할 수 있다. 다른 예로서, 사용자가 다수의 접촉을 원형 움직임으로 이동하는 경우, 시스템은 이 이동을 객체의 회전으로 해석할 수 있다. 각각의 응용 프로그램은 다르게 관련성 있는 객체를 정의할 수 있고, 따라서 시스템의 인스턴스(조작 프로세서라고 함)를 사용자가 응용 프로그램 내에서 터치 입력을 사용하여 조작할 수 있는 각각의 객체에 연결시키는 것은 응용 프로그램의 몫이다. 예를 들어, 사진 브라우징 응용 프로그램은 조작 프로세서를 각각의 디스플레이된 사진에 연결시킬 수 있고, 따라서 사용자는 사진을 이리 저리 이동시키고, 사진을 스케일링하며, 사진을 회전시키는 등을 할 수 있다.
응용 프로그램에 의해 처리되는 조작은 단지 접촉의 이동에 기초한 객체의 이동을 나타낸다. 그러나, 자연스럽게 이동하기 위해, 객체는 또한 탄성 및 감속 등의 물리적 특성도 나타내야만 한다. 사용자가 객체로부터 모든 접촉을 제거할 때, 관성 시스템은, 사용자가 여전히 터치로 객체를 이동시키고 있는 것처럼 응용 프로그램이 이벤트를 처리할 수 있도록, 부가의 조작 이벤트를 응용 프로그램에게 제공한다. 그러나, 관성 시스템은 객체의 거동의 시뮬레이션에 기초하여 실제로 이벤트를 발생한다. 예를 들어, 객체가 특정 방향으로 속도를 가지고 있는 동안 사용자가 접촉을 중단하는 경우, 관성 시스템은 객체가 그 방향으로 이동하고 있고 객체가 감속할 때 시간이 지남에 따라 느려진다는 것을 나타내는 이벤트를 계속하여 송신한다. 사용자가 객체를 다른 객체, 예컨대 스크린의 가장자리 안으로 이동시키는 경우, 관성 시스템은 객체의 경계 특성에 기초하여 조작 이벤트를 송신한다. 예를 들어, 응용 프로그램 제작자가 2개의 객체를 탄성 있는 것으로 정의하는 경우, 사용자가 객체를 서로 안으로 이동시킬 때 2개의 객체는 서로에 대해 되튈 수 있다. 따라서, 관성 시스템은 사용자가 멀티 터치 하드웨어를 사용하여 조작하는 응용 프로그램 객체에 대한 보다 실제적인 이동을 제공하고, API는 응용 프로그램들에 걸친 조작에 일관성있는 느낌을 제공한다.
도 1은 일 실시예에서, 관성 시스템의 컴포넌트를 나타낸 블록도이다. 관성 시스템(100)은 하드웨어 인터페이스(110), 하나 이상의 조작 프로세서(120), 입력 변환 컴포넌트(130), 시뮬레이션 컴포넌트(140), 및 응용 프로그램 인터페이스(150)를 포함한다. 이들 컴포넌트 각각에 대해 본 명세서에서 더 상세히 기술한다.
하드웨어 인터페이스(110)는 하드웨어와 통신을 하여 터치 접촉 및 이동을 수신한다. 하드웨어 인터페이스(110)는 터치 입력 정보를 제공하기 위해 함께 동작하는 몇개의 하위 컴포넌트를 포함할 수 있다. 예를 들어, 운영 체제는 멀티 터치 하드웨어 제조업체에 대한 공통 드라이버 모델을 제공하여 제조업체의 특정 하드웨어에 대한 터치 정보를 제공할 수 있다. 운영 체제는 이 모델을 통해 수신된 터치 정보를 창 메시지(예를 들어, 본 명세서에 기술된 WM_TOUCH)로 변환하고 이들 메시지를 응용 프로그램에 전달할 수 있다. 따라서, 하드웨어 인터페이스(110)는 하드웨어, 하드웨어 드라이버, 및 운영 체제 계층의 조정을 필요로 할 수 있다. 그 결과 특정의 접촉(예를 들어, 손가락의 터치) 및 시간의 경과에 따른 접촉의 좌표를 식별하는 일련의 메시지가 관성 시스템으로 보내진다. 예를 들어, 운영 체제는 멀티 터치 하드웨어에 대한 새 접촉이 있을 때의 메시지, 접촉이 이동할 때마다의 메시지, 및 멀티 터치 하드웨어로부터 접촉이 떨어질 때의 메시지를 제공할 수 있다.
하나 이상의 조작 프로세서(120)는 입력 변환 컴포넌트(130)를 사용하여 특정의 응용 프로그램 객체와 연관된 각각의 접촉의 이동을 해석한다. 조작 프로세서(120)는 사용자가 다수의 접촉을 사용하여 단일 동작을 수행하는 것으로 판정할 수 있다. 예를 들어, 사용자는 한 손의 5개 손가락 전부로 사진을 터치하고 자신의 손을 비틀어 사진을 회전시키고자 하는 의도를 나타낼 수 있다. 조작 프로세서(120)는 5개의 개별 접촉(손가락마다 하나씩) 및 사용자가 손을 회전시킴에 따른 각각의 접촉의 좌표 변화를 수신한다. 조작 프로세서(120)는 각각의 접촉이 동일한 객체를 잡고 동일한 회전을 수행하는 것으로 판정한다. 시스템은 사용자가 객체를 회전시켰다는 것을 응용 프로그램에게 알려줄 것이지만, 응용 프로그램은 사용자가 회전을 수행하기 위해 2개, 5개 또는 임의의 특정 수의 손가락 또는 다른 접촉을 사용했는지는 무시할 수 있다. 이것은 응용 프로그램의 제작을 크게 간소화시키는데, 그 이유는 응용 프로그램 제작자가 응용 프로그램과 관련된 그 유형의 조작을 처리하고, 멀티 터치 하드웨어로부터 수신된 각각의 하위 레벨 터치 입력의 의미를 해석하기 위해, 이를 관성 시스템에 넘길 수 있기 때문이다.
조작 프로세서(120)는 입력 변환 컴포넌트(130)를 사용하여, 단독으로도 전체적으로도, 다양한 접촉의 수신된 이동의 의미에 관한 판정을 한다. 예를 들어, 사용자가 2개의 대응하는 입력 접촉을 생성하는 2개의 손가락으로 사진을 조작하고 있는 경우, 조작 프로세서(120)는 입력 변환 컴포넌트(130)를 사용하여 2개의 접촉 간의 상대적 이동의 의미를 판정한다. 2개의 접촉이 멀어지게 이동하는 경우, 입력 변환 컴포넌트(130)는 사용자가 객체의 크기를 변경하기 위해 객체를 스케일링하는 것으로 판정할 수 있다. 2개의 접촉이 회전하는 경우, 입력 변환 컴포넌트(130)는 사용자가 객체를 회전시키는 것으로 판정할 수 있다. 2개의 접촉이 둘다 특정의 방향으로 슬라이딩하는 경우, 입력 변환 컴포넌트(130)는 사용자가 객체를 새 위치로 패닝하는 것으로 판정할 수 있다. 각각의 유형의 이동이 개별적으로 논의되어 있지만, 사용자가 3가지 유형의 이동 전부를 동시에 행할 수 있고 입력 변환 프로세서가 전체적인 변환을 응용 프로그램에 보고할 수 있다는 것에 유의해야 한다. 예를 들어, 사용자는 한번의 움직임으로 객체의 회전, 스케일링 및 패닝 모두를 할 수 있다.
시뮬레이션 컴포넌트(140)는, 사용자가 객체를 터치하는 것을 중단한 후에, 객체에 대해 정의된 초기화 매개변수 및 제약조건에 기초하여 응용 프로그램 객체의 계속된 이동을 시뮬레이트한다. 응용 프로그램은 객체와 연관된 조작 프로세서(120)의 최종 상태로 시뮬레이션 컴포넌트(140)를 초기화할 수 있다. 응용 프로그램은 또한 객체의 다양한 특성, 예컨대 객체의 경계가 어떻게 거동해야 하는지를 정의할 수 있다. 시뮬레이션 컴포넌트(140)는 물리학에 기초한 기법을 사용하여 사용자가 객체를 놓고 나서 일정 기간 동안 객체의 거동을 시뮬레이트한다. 예를 들어, 시뮬레이션 컴포넌트(140)는 사용자가 객체를 이동시키고 있는 동안 응용 프로그램에 의해 수신되는 조작 이벤트와 동일한 형태로 계속하여 통지를 발생하여 응용 프로그램으로 보낼 수 있다. 응용 프로그램은 이어서 어느 동작(사용자 또는 물리적)이 객체를 이동시켰는지에 관심을 갖기 보다는 객체의 이동에 반응하는 것에 집중할 수 있다. 당업자라면 가상 객체의 등가의 실제 거동을 소프트웨어로 시뮬레이트하는 많은 공지의 기법을 잘 알 것이다.
응용 프로그램 인터페이스(150)는 응용 프로그램과 통신하여, 정보를 수신하고 조작 변환을 응용 프로그램에게 제공한다. 응용 프로그램 인터페이스(150)는 응용 프로그램으로부터 초기화 정보를 수신한다. 초기화 정보는 특정의 객체에 대해 응용 프로그램 객체가 어느 유형의 변환을 지원하는지 및 사용자가 더 이상 객체를 이동시키지 않을 때 시뮬레이션 컴포넌트(140)에 대한 관련 조작 프로세서는 물론 초기화 데이터를 명시할 수 있다. 예를 들어, 일부 응용 프로그램 객체가 스케일링은 지원하지만 회전을 지원하지 않을 수도 있다. 초기화 정보는 또한 객체의 피벗 지점을 명시할 수 있다. 관성 시스템은 응용 프로그램 인터페이스를 통해 조작 변환을 응용 프로그램에게 제공한다. 예를 들어, 관성 시스템이 시스템에 의해 인식된 변환(예를 들어, 회전)으로서 해석되는 하위 레벨 터치 입력를 수신할 때, 시스템은 조작에 관해 응용 프로그램에게 통지할 이벤트를 발생한다. 응용 프로그램은 조작 변환을 처리하고 변환에 기초하여 객체를 수정한다. 예를 들어, 사용자가 객체를 회전시키는 경우, 응용 프로그램은 다음에 객체를 디스플레이할 때 사용하기 위해 객체의 새 방향을 저장할 수 있다. 다른 예로서, 사용자가 객체를 놓은 후에도 시뮬레이션 컴포넌트(140)의 계산에 기초하여 객체가 계속 회전하는 경우, 응용 프로그램은 객체의 새 방향을 저장할 수 있다.
시스템이 구현되어 있는 컴퓨팅 장치는 중앙 처리 장치, 메모리, 입력 장치(예를 들어, 키보드 및 포인팅 장치), 출력 장치(예를 들어, 디스플레이 장치), 및 저장 장치(예를 들어, 디스크 드라이브)를 포함할 수 있다. 메모리 및 저장 장치는 시스템을 구현하는 컴퓨터 실행가능 명령어로 인코딩될 수 있는 컴퓨터 판독가능 매체이며, 이는 명령어를 포함하는 컴퓨터 판독가능 매체를 의미한다. 또한, 데이터 구조 및 메시지 구조는 데이터 전송 매체, 예컨대 통신 링크 상의 신호를 통해 저장되거나 전송될 수 있다. 인터넷, LAN(local area network), WAN(wide area network), 포인트-투-포인트 전화 접속 연결(point-to-point dial-up connection), 휴대폰 네트워크 등과 같은 다양한 통신 링크가 사용될 수 있다.
시스템의 실시예는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램가능한 가전제품, 디지털 카메라, 네트워크 PC, 미니컴퓨터, 메인 프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등을 포함하는 다양한 운영 환경에서 구현될 수 있다. 컴퓨터 시스템은 휴대폰, PDA(personal digital assistant), 스마트폰, 퍼스널 컴퓨터, 프로그램가능한 가전제품, 디지털 카메라, 기타 등등일 수 있다.
시스템은 일반적으로 하나 이상의 컴퓨터 또는 기타 장치에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능이 다양한 실시예에서 원하는 바에 따라 결합되거나 분산되어 있을 수 있다.
도 2는 일 실시예에서, 관성 시스템의 전형적인 운영 환경 및 컴포넌트들 간의 데이터의 흐름을 나타낸 데이터 흐름도이다. 멀티 터치 하드웨어 장치는 하드웨어 인터페이스를 통해 입력(210)을 생성한다. 예를 들어, 하드웨어는 하드웨어 제조업체에 의해 제공되는 소프트웨어 드라이버를 통해 입력(210)을 운영 체제로 송신할 수 있다. 하드웨어 인터페이스는 입력 이벤트(220)를 응용 프로그램(230)에게 제공한다. 예를 들어, 응용 프로그램은 응용 프로그램(230)이 멀티 터치 사용자 입력을 지원한다는 것을 운영 체제에게 알려줄 수 있고 멀티 터치 사용자 입력에 관계된 메시지를 수신하기 위해 등록을 할 수 있다. 응용 프로그램(230)은 하위 레벨 터치 입력 정보를 입력 변화(240)로서 수신하고 입력 변화(240)를 조작 시스템(250)으로 전달한다. 예를 들어, 입력 변화(240)는 각각의 접촉의 현재 위치 및 기타 이동 특성을 나타내는 일련의 좌표를 사용하여 하드웨어와의 하나 이상의 터치 접촉의 각각의 이동을 나타낼 수 있다. 조작 시스템(250)은 입력 변화(240)을 해석하고 사용자가 디스플레이된 객체에 대해 수행하고 있는 상위 레벨 조작을 나타내는 하나 이상의 조작 이벤트(260)를 응용 프로그램(230)에게 통지한다. 예를 들어, 접촉의 이동이 사용자가 객체를 회전시키고자 한다는 것을 나타내는 경우, 조작 이벤트(260)는 회전의 각도를 나타낸다.
사용자가 객체를 이동을 끝냈을 때(예를 들어, 응용 프로그램이 객체를 터치하는 각각의 접촉이 터치 하드웨어로부터 제거되었다는 통지를 수신할 때), 응용 프로그램(230)은 초기화 정보(270)를 관성 시스템(280)으로 송신한다. 관성 시스템(280)은 객체의 다음 위치를 결정하고, 사용자가 객체를 이동시킬 때 조작 시스템(250)이 제공했던 조작 이벤트(260)와 유사한 관성 이벤트(290)를 제공한다. 응용 프로그램(230)은 또한 관성 시스템(280)을 주기적으로 호출하여 객체의 다음 위치를 관성 이벤트(290)를 통해 제공하기 위해 구동 타이머를 제공한다. 응용 프로그램(230)은 조작 이벤트와 유사한 방식으로 관성 이벤트를 처리한다.
도면에서 응용 프로그램이 먼저 터치 입력을 수신하고 터치 입력을 조작 시스템 및 관성으로 전달하는 것으로 나타내고 있지만, 일부 실시예에서, 이들 시스템은 하드웨어 인터페이스로부터 직접 터치 입력을 수신하고, 터치 입력을 해석하며, 해석된 조작 이벤트를 응용 프로그램에게 제공한다. 마찬가지로, 응용 프로그램은, 사용자가 터치로 객체를 이동시키는 것을 중단한 후에, 별도의 관성 시스템(280)이 관성 이벤트를 제공한다는 것을 모르고 있을 수 있지만, 오히려 사용자가 객체를 이동시키는 동안과 그 후에 관성에 기초하여 객체가 이동하고 있을 때, 한 인터페이스로부터 이벤트를 수신할 수 있다. 이것은 유사한 결과 기능을 제공하지만 응용 프로그램에 입력의 처리에 대한 제어를 덜 제공하는 대안의 아키텍처를 나타낸다. 예를 들어, 응용 프로그램은 시스템이 개개의 조작 프로세서를 연결시키는 개개의 응용 프로그램 객체를 정의할 수 없을 수도 있다. 본 명세서에 기술된 RTS 플러그 인은 시스템에 대한 이 대안의 아키텍처의 하나의 예이다.
도 3은 일 실시예에서, 사용자 터치에 의해 조작되는 응용 프로그램 객체를 나타낸 디스플레이도이다. 응용 프로그램은 많은 이러한 객체에 대한 터치 입력의 디스플레이 및 수신을 동시에 수행할 수 있다. 예를 들어, 운영 체제 셸 응용 프로그램은 사용자의 컴퓨터 바탕 화면에 저장되는 하나 이상의 문서 객체를 디스플레이할 수 있다. 디스플레이(310)에서, 문서 객체(320)는 사용자가 터치를 사용하여 휴지통(330)으로 끌어가고자 하는 사용자의 바탕 화면 상의 문서를 나타낸다. 사용자는 문서 객체(320)의 제스처 동작을 수행하며, 그 결과 시스템은 제1 조작 위치(340), 제2 조작 위치(350), 및 제3 조작 위치(360)를 처리한다. 사용자가 처음으로 하나 이상의 손가락(즉, 접촉)으로 문서 객체(320)를 터치할 때 응용 프로그램은 제1 조작 위치(340)를 수신한다. 사용자가 스크린에 걸쳐 자신의 손가락을 슬라이딩할 때, 응용 프로그램은 제2 조작 위치(350)를 수신한다. 사용자가 스크린으로부터 자신의 손가락을 들어올릴 때, 응용 프로그램은 제3 조작 위치를 수신한다. 화살표(365)는 문서 객체(320)의 이동의 벡터를 나타낸다.
관성이 없다면, 문서 객체(320)는 제3 조작 위치(360)에서 멈출 것이며, 이는 사용자가 의도한 것이 아닐 것이다. 관성 시스템은 사용자가 문서 객체(320)를 놓을 때의 문서 객체(320)의 속도에 기초하여 사용자가 여전히 터치하고 문서 객체(320)를 이동시키고 있는 것처럼 부가의 조작 위치를 응용 프로그램에게 제공한다. 응용 프로그램이 관성 시스템을 초기화하고 처음으로 관성 시스템의 처리 기능을 호출할 때, 응용 프로그램은 제1 관성 기반 조작 위치(370)를 수신한다. 응용 프로그램이 계속하여 관성 시스템의 처리 기능을 호출할 때, 응용 프로그램은 제2 관성 기반 조작 위치(380)를 수신한다. 문서 객체(320)의 최종 조작 위치(380)가 휴지통(330) 상부이기 때문에, 응용 프로그램은 [예를 들어, 휴지통(330)에 문서 객체(320)를 놓는 것으로] 2개의 객체 간의 접촉을 처리한다. 예시된 예에서, 관성 시스템이 문서 객체(320)의 이동을 감소시키지만, 문서 객체(320)는 시작에서 사용자가 문서 객체(320)를 이동시키는 높은 초기 속도에 기초하여 여전히 디스플레이(310)에 걸쳐 상당한 거리를 이동할 수 있다.
도 4는 일 실시예에서, 조작 이벤트를 처리하기 위해 관성 시스템을 사용하는 멀티 터치 응용 프로그램의 입력 루프 처리를 나타낸 흐름도이다. 블록(410)에서, 응용 프로그램은 하위 레벨 터치 입력을 수신한다. 예를 들어, 운영 체제 또는 관성 시스템의 인스턴스는 멀티 터치 하드웨어로부터 터치 접촉 정보를 수신하고 터치 접촉 정보를 응용 프로그램으로 전달한다. 블록(420)에서, 응용 프로그램은 입력이 적용되는 객체를 식별한다. 예를 들어, 응용 프로그램은 수신된 입력의 좌표를 응용 프로그램에 의해 디스플레이되는 각각의 응용 프로그램 객체의 좌표와 비교함으로써 수신된 입력의 좌표를 히트 테스트할 수 있다. 터치 입력이 디스플레이된 응용 프로그램 객체의 경계 내에 있는 경우, 응용 프로그램은 터치 입력이 그 객체에 적용되는 것으로 판정한다. 블록(430)에서, 응용 프로그램은 관성 시스템을 호출하기 위해 수신된 터치 입력 및 식별된 응용 프로그램 객체에 관한 정보를 조작 API로 송신한다(도 5 참조). 예를 들어, 응용 프로그램은 각각의 응용 프로그램 객체에 대한 숫자 식별자를 생성하고 터치 입력이 그 객체에 대응할 때마다 숫자 식별자를 관성 시스템으로 전달할 수 있다.
블록(440)에서, 응용 프로그램은 식별된 응용 프로그램 객체의 하나 이상의 조작을 나타내는 조작 이벤트를 관성 시스템으로부터 수신한다. 예를 들어, 응용 프로그램은 응용 프로그램 객체의 2D 아핀 변환을 나타내는 이벤트를 수신할 수 있다. 설명의 편의상, 블록(440)이 블록(430) 이후에 직렬로 나타내어져 있다는 것에 유의한다. 실제로, 관성 시스템이 응용 프로그램에게 조작 이벤트를 통지하기 전에, 응용 프로그램은 많은 터치 입력 이벤트를 수신할 수 있다. 터치 입력 이벤트와 조작 이벤트 간의 일대일 매핑이 꼭 있는 것은 아니다. 조작 이벤트가 하위 레벨 터치 입력의 상위 레벨 해석을 나타내기 때문에, 다수의 터치 입력은 하나의 조작 이벤트를 구성할 수 있다. 블록(450)에서, 응용 프로그램은 수신된 조작 이벤트를 처리한다. 예를 들어, 수신된 조작 이벤트가 회전인 경우, 응용 프로그램은 스크린 상에서 응용 프로그램 객체를 회전시키고 응용 프로그램 객체가 다시 디스플레이될 때 사용하기 위해 응용 프로그램 객체 새 위치를 저장할 수 있다. 관성 시스템은 응용 프로그램이 특정의 멀티 터치 하드웨어 장치에 특유한 단계를 수행하지 않아도 되게 하거나 심지어 어느 하드웨어 장치가 멀티 터치 입력을 제공하고 있는지를 알지 않아도 되도록 한다. 또한, 관성 시스템은 응용 프로그램이 개개의 접촉 이동을 처리하지 않아도 되게 하고 응용 프로그램이 응용 프로그램 객체 레벨에서 변환을 처리하는 것에 집중할 수 있도록 한다.
블록(460)에서, 응용 프로그램은 그 다음 터치 입력을 기다린다. 예를 들어, 응용 프로그램은 그 다음 메시지가 응용 프로그램의 메시지 큐에 전달되기를 기다리는 운영 체제 제공 메시지 API, 예컨대 Microsoft Windows 상의 GetMessage를 호출한다. 결정 블록(470)에서, 응용 프로그램이 그 다음 터치 입력을 수신하는 경우, 응용 프로그램은 블록(410)으로 루프하여 입력을 처리하고, 그렇지 않은 경우, 응용 프로그램은 블록(460)으로 루프하여 장래의 입력을 계속 기다린다. 응용 프로그램이 닫힐 때, 응용 프로그램은 입력 루프를 빠져 나간다(도시 생략).
도 5는 일 실시예에서, 시스템이 터치 입력을 수신할 때 관성 시스템의 처리를 나타낸 흐름도이다. 블록(505)에서, 시스템은 터치 입력을, 터치 입력과 연관되어 있는 응용 프로그램 객체를 식별하는 정보와 함께, 수신한다. 예를 들어, 터치 입력은 하나 이상의 터치 접촉의 좌표 또는 기타 위치 정보를 포함할 수 있고, 응용 프로그램 객체 정보는 응용 프로그램이 멀티 터치 하드웨어 상에서 터치 입력이 놓여 있는 특정의 디스플레이된 객체에 할당한 식별자를 포함할 수 있다. 블록(510)에서, 시스템은 응용 프로그램 객체와 연관된 조작 프로세서를 식별한다. 결정 블록(520)에서, 시스템이 조작 프로세서를 응용 프로그램 객체와 아직 연관시키지 않은 경우, 시스템은 블록(530)에서 계속되고, 그렇지 않은 경우, 시스템은 블록(540)에서 계속된다. 블록(530)에서, 시스템은 조작 프로세서를 생성하고 이를 응용 프로그램 객체와 연관시키며, 이어서 블록(540)에서 계속된다.
결정 블록(540)에서, 수신된 터치 입력이 응용 프로그램이 새 접촉을 수신했다는 것(예를 들어, 터치 다운 이벤트)을 나타내는 경우, 시스템은 블록(550)에서 계속되고, 그렇지 않은 경우, 시스템은 블록(560)에서 계속된다. 예를 들어, 사용자는 손가락을 온스크린 객체와 처음으로 접촉시킬 수 있거나, 다른 손가락(즉, 접촉)을 이전에 터치된 객체 상에 놓을 수 있다. 블록(550)에서, 시스템은 조작 프로세서와 연관된 접촉의 목록에 새 접촉을 추가하고, 이어서 블록(560)에서 계속된다. 결정 블록(560)에서, 수신된 터치 입력이 응용 프로그램이 터치 접촉이 제거되었다는 통지(예를 들어, 터치 업 이벤트)를 수신했다고 나타내는 경우, 시스템은 블록(570)에서 계속되고, 그렇지 않은 경우, 시스템은 블록(580)에서 계속된다. 예를 들어, 사용자는 하나 이상의 손가락을 이전에 터치된 객체로부터 들어올릴 수 있다. 블록(570)에서, 시스템은 조작 프로세서와 연관된 접촉의 목록으로부터 접촉을 제거하고, 이어서 블록(580)에서 계속된다. 블록(580)에서, 시스템은 터치 입력을 처리하여 터치 입력이 나타내는 임의의 조작을 판정한다. 예를 들어, 터치 이동은 회전 또는 이동 조작을 나타낼 수 있는 반면, 터치 접촉 제거는 조작의 완료를 나타낼 수 있다. 블록(590)에서, 시스템은 조작을 나타내는 변환 정보를 응용 프로그램으로 송신하기 위해 조작 이벤트를 발생한다. 예를 들어, 시스템은 객체의 회전 각도를 응용 프로그램에게 제공할 수 있다. 블록(590) 이후에서, 이들 단계가 종료된다.
도 6은 일 실시예에서, 관성 이벤트를 처리하기 위해 관성 시스템을 사용하는 멀티 터치 응용 프로그램의 처리를 나타낸 흐름도이다. 블록(610)에서, 응용 프로그램은 사용자가 객체를 놓은 것으로 판정한다. 예를 들어, 도 4의 블록(450)에서의 조작 이벤트의 처리 이후에, 응용 프로그램은 조작이 완료되었거나 사용자가 응용 프로그램 객체를 터치하는 모든 접촉을 중단했다는 표시를 수신할 수 있다. 블록(620)에서, 응용 프로그램은 관성 시스템을 초기화한다. 예를 들어, 응용 프로그램은 객체의 이동 및 기타 초기화 정보를 처리하는 조작 프로세서로 참조를 전달할 수 있다. 블록(630)에서, 응용 프로그램은 관성 시스템의 관성 처리 기간을 구동하게 될 타이머를 설정한다. 예를 들어, 응용 프로그램은 객체의 그 다음 이동 증분을 처리하기 위해 100 밀리초마다 실행될 타이머를 설정할 수 있다. 블록(640)에서, 응용 프로그램은 관성 시스템의 처리 함수를 호출한다(도 7 참조). 예를 들어, 관성 시스템은 마지막 시뮬레이션 기간 이후의 기간에 대한 시뮬레이션을 수행할 시간이라고 관성 시스템에 알려주기 위해 응용 프로그램이 호출하는 "Process" 함수를 제공할 수 있다.
블록(650)에서, 응용 프로그램은 시뮬레이트된 관성에 기초한 객체의 조작(예를 들어, 회전, 이동 및/또는 스케일링)을 나타내는 하나 이상의 관성 이벤트를 수신한다. 예를 들어, 객체가 특정의 방향으로 이동하고 있는 경우, 응용 프로그램은 그 방향으로의 이동 조작을 나타내는 관성 이벤트를 수신할 수 있다. 다른 예로서, 사용자가 객체를 놓았을 때 객체가 확장하고 있는 경우, 응용 프로그램은 스케일링 조작을 나타내는 관성 이벤트를 수신할 수 있다. 설명의 편의상, 블록(650)이 블록(640) 이후에 직렬로 나타내어져 있다는 것에 유의한다. 실제로, 관성 시스템이 응용 프로그램에게 관성 이벤트를 통지하기 전에, 응용 프로그램은 관성 처리 함수를 여러번 호출할 수 있다. 처리 함수에 대한 호출과 관성 이벤트의 일대일 매핑이 꼭 있는 것은 아니다. 한편, 관성 시스템은 처리 함수에 대한 한번의 호출 이후에 다수의 관성 이벤트를 응용 프로그램에 통지할 수 있다.
블록(660)에서, 응용 프로그램은 특정의 응용 프로그램의 컨텍스트(context) 내의 조작의 의미(예를 들어, 효과)에 기초하여 수신된 관성 이벤트를 처리한다. 예를 들어, 수신된 관성 이벤트가 회전인 경우, 응용 프로그램은 스크린 상에서 응용 프로그램 객체를 회전시키고 응용 프로그램이 응용 프로그램 객체를 다시 디스플레이할 때 사용하기 위해 응용 프로그램 객체 새 위치를 저장할 수 있다. 결정 블록(670)에서, 관성 이벤트이 완료된 경우, 이들 단계가 종료되고, 그렇지 않은 경우, 시스템은 블록(680)에서 계속된다. 관성 시스템은 특정의 시뮬레이트된 조작이 완료되었다는 것을, 프로세스 함수로부터의 반환 값으로서 또는 응용 프로그램에게 제공되는 통지를 통해[예를 들어, COM(Component Object Model) 이벤트 인터페이스를 통해], 응용 프로그램에게 알려줄 수 있다. 블록(680)에서, 응용 프로그램은 타이머의 그 다음 실행을 기다리고, 이어서 블록(640)으로 루프하여 관성 시스템 처리 함수를 호출한다.
도 7은 일 실시예에서, 관성 처리 시스템이 시뮬레이션 컴포넌트의 처리를 나타낸 흐름도이다. 블록(710)에서, 컴포넌트는 초기 시뮬레이션 매개변수를 수신한다. 예를 들어, 사용자가 객체를 터치하는 것을 중단할 때, 응용 프로그램 또는 조작 프로세서는 응용 프로그램 객체의 최종 상태를 제공할 수 있다. 블록(720)에서, 컴포넌트는 매개변수에 기초한 객체의 거동을 판정하기 위해 물리학에 기초한 계산을 수행하는 시뮬레이션 엔진을 초기화한다. 예를 들어, 시뮬레이션 엔진은 사용자 터치 입력에 의해 움직이게 설정된 응용 프로그램 객체에 대한 실제 감속 또는 탄성 거동을 제공할 수 있다. 블록(730)에서, 컴포넌트는 응용 프로그램으로부터 프로세스 호출을 수신한다. 응용 프로그램 또는 기타 컴포넌트는 시뮬레이션을 진행시키기 위해 규칙적인 간격으로 처리 함수를 반복하여 호출함으로써 시뮬레이션 프로세스를 구동한다. 시뮬레이션 컴포넌트는 또한 내부적으로 타이머를 생성할 수 있다.
블록(740)에서, 컴포넌트는 초기 매개변수, 임의의 이전 처리, 및 마지막 프로세스 호출 이후에 경과된 시간에 기초하여 객체의 이동을 시뮬레이트한다. 프로세스 호출은 또한 응용 프로그램이 시뮬레이션에게 사용하기를 원하는 시간을 나타내는 타임스탬프를 제공할 수 있다. 이것은 응용 프로그램이 실시간 이외의 방식으로(예를 들어, 응용 프로그램 테스트 또는 디버깅을 위해) 응용 프로그램 거동을 시뮬레이트할 수 있게 한다. 결정 블록(750)에서, 이동이 완료되면, 컴포넌트는 블록(760)에서 계속되고, 그렇지 않은 경우, 컴포넌트는 블록(770)에서 계속된다. 컴포넌트는 객체가 여전히 이동하고 있는지 또는 객체 이동이 특정 임계값 아래로 떨어졌는지 등의 인자들에 기초하여 이동이 완료된 것으로 판정할 수 있다. 블록(760)에서, 컴포넌트는 그 다음 관성 이벤트 시에 완료 플래그를 설정한다. 블록(770)에서, 컴포넌트는 현재 이동을 나타내는 변환 정보를 (예를 들어, 조작으로서) 응용 프로그램으로 송신하기 위해 관성 이벤트를 발생한다. 예를 들어, 시스템은 객체의 회전 각도를 응용 프로그램에게 제공할 수 있다. 블록(770) 이후에서, 이들 단계가 종료된다.
일부 실시예에서, 관성 시스템은 응용 프로그램으로부터 객체 제약조건을 수신한다. 예를 들어, 응용 프로그램은 객체의 탄성, (객체가 어떻게 감속되는지를 결정하는) 마찰 계수, 객체의 경계 특성 등을 정의할 수 있다. 예를 들어, 응용 프로그램 제작자는 사용자가 이동시킬 수 있는 강성 객체 및 탄성 있는 응용 프로그램 창 가장자리를 정의할 수 있으며, 따라서 창 가장자리로 이동된 객체는, 사용자가 그 객체를 놓을 때, 창 가장자리로부터 튀어나간다.
일부 실시예에서, 관성 시스템은 사용자가 터치 입력으로 객체를 조작하고 있을 때 객체의 이동을 추적하는 조작 시스템으로부터 초기 객체 상태 정보를 수신한다. 예를 들어, 조작 시스템은 각각의 객체의 현재 위치, 객체의 과거 이동, 객체의 선속도 및 각속도 등을 추적할 수 있다. 응용 프로그램 제작자는 관성 시스템을 초기화하기 위해 조작의 출력을 관성 시스템에 제공할 수 있고, 따라서 관성 시스템은 객체의 과거 이동을 매끄럽게 계속할 수 있고 객체의 적절한 물리학 및 특성에 기초하여 객체의 속도를 줄인다.
일부 실시예에서, 관성 시스템은 응용 프로그램으로부터 객체의 이동에 관한 제한을 수신한다. 예를 들어, 응용 프로그램 제작자는 사용자가 객체를 놓은 경우 객체가 이동할 수 있는 거리에 관한 상한을 정의할 수 있다. 다른 예로서, 응용 프로그램은 사용자가 객체를 놓은 경우 객체가 얼마나 이동할 수 있는지에 관한 상한을 정의할 수 있다. 이들 및 기타 한계는 응용 프로그램 제작자가 관성 시스템을, 응용 프로그램에 의해 조작되는 객체의 유형에 적합하고 응용 프로그램에서의 사용자 경험을 향상시키도록, 조정할 수 있게 한다.
일부 실시예에서, 관성 시스템은, 이동이 소정의 임계값 미만인 경우, 객체에 대한 부가의 이동을 제공하지 않는다. 임계값은 응용 프로그램에 의해 구성가능할 수 있다. 예를 들어, 관성 시스템은 특정의 객체 선속도 또는 각속도를 가질 수 있으며, 그 미만에서 시스템은 사용자가 객체를 놓은 후에 객체의 이동을 계속하지 않을 것이다. 사용자가 객체를 놓았을 때 객체가 아주 빠르게 이동하지 않는 경우, 사용자는 객체가 계속 이동하지 않고 그대로 있을 것으로 예상할 수 있다. 임계값은 관성 시스템의 응용 프로그램 또는 제작자가 양호한 사용자 경험을 제공하는 조작 이후의 이동의 레벨을 결정할 수 있게 한다.
일부 실시예에서, 관성 시스템은 응용 프로그램으로부터 점증적으로 이동을 시뮬레이트하라는 지시를 수신한다. 예를 들어, 관성 시스템은 관성 시스템에게 전체적인 시뮬레이션의 일부분을 수행하라고 지시하기 위해 응용 프로그램이 호출하는 "Process" 또는 "DoWork" 함수를 제공할 수 있다. 관성 시스템으로 하여금 자연적인 타임라인을 따라 시간의 경과에 따른 이동을 시뮬레이트하게 하기 위해, 관성 시스템은 응용 프로그램이 타이머를 설정하거나 다른 방식으로 주기적으로 함수를 호출할 것으로 예상할 수 있다. 응용 프로그램은 응용 프로그램이 함수를 호출하는 횟수를 변화시킴으로써 관성 시스템에 의해 제공되는 조작 이벤트의 특성에 영향을 줄 수 있다. 다른 실시예에서, 각각의 객체가 (예를 들어, 감속 또는 기타 시뮬레이트된 힘으로 인해) 이동을 중단할 때까지 관성 시스템은 규칙적으로 조작 이벤트를 제공하기 위해 내부 타이머를 사용한다.
일부 실시예에서, 관성 시스템은 메시지 기반 운영 체제의 일부이며, 이 시스템은 운영 체제가 하드웨어로부터 수신하는 터치 입력에 관계된 메시지를 수신한다. 예를 들어, 마우스 메시지에 대한 WM_MOUSEMOVE와 유사한 패러다임을 사용하여, 장래의 버전의 Microsoft Windows는 멀티 터치 하드웨어로부터 수신된 하위 레벨 터치 이동 정보를 포함하는 WM_TOUCH 메시지를 제공할 수 있다. 운영 체제는 또한 WM_TOUCHDOWN(멀티 터치 하드웨어와 새 접촉이 행해질 때), WM_TOUCHMOVE(기존의 접촉이 이동할 때), 및 WM_TOUCHUP(멀티 터치 하드웨어로부터 접촉이 떨어질 때)와 같은 세분화된 메시지를 제공할 수 있다. WM_TOUCH 관련 메시지를 수신하는 응용 프로그램은 관성 시스템을 호출하고 해석 및 처리를 위해 메시지를 관성 시스템으로 전달할 수 있다. 이어서, 응용 프로그램은 수신된 하위 레벨 터치 이동 정보에 기초하여 사용자에 의해 의도된 조작에 대한 관성 시스템의 해석을 나타내는 상위 레벨 이벤트를 수신한다.
일부 실시예에서, 관성 시스템은 특수 하드웨어, 예컨대 실시간 스타일러스로부터 하위 레벨 터치 이동 정보를 수신한다. 예를 들어, 마이크로소프트 태블릿 PC SDK(Software Development Kit)는 응용 프로그램 제작자가 후크로 확장할 수 있는 실시간 스타일러스(real-time stylus, RTS) 컴포넌트를 제공한다. RTS 후크는 RTS 하드웨어로부터 입력을 수신하고, 수신된 입력에 대해 처리를 수행할 수 있다. 관성 시스템은, 본 명세서에 기술된 바와 같이 RTS 및 기타 입력을 자동으로 처리하여 응용 프로그램 객체를 조작하기 위해, 응용 프로그램이 RTS 컴포넌트에 삽입할 수 있는 후크를 제공할 수 있다. RTS 후크는 관성 시스템이 입력을 수신하는 다른 방식을 제공하지만, 관성 시스템은 입력을 해석하고 입력에 의해 암시되는 조작을 나타내는 이벤트를 발생하여 응용 프로그램으로 보내며, 이에 대해서는 앞서 기술하였다. 사용자는 스타일러스와 터치 입력의 조합을 사용할 수 있다. 예를 들어, 사용자는 스타일러스로 객체를 그릴 수 있고 이어서 자신의 손가락을 사용하여 객체를 회전시킬 수 있다.
일부 실시예에서, 관성 시스템은 통상의 사용자 인터페이스를 제공하기 위해 응용 프로그램이 호출할 수 있는 통상의 컨트롤의 일부이다. Microsoft Windows는 목록, 트리, 단추 등을 디스플레이하는 통상의 컨트롤을 제공한다. 마찬가지로, 관성 시스템은 본 명세서에 기술된 방식으로 응용 프로그램 객체를 조작하는 멀티 터치 기반 컨트롤을 제공할 수 있다. 예를 들어, 시스템은 사용자가 하나 이상의 객체를 디스플레이하고 객체를 조작할 수 있게 하는 분산 컨트롤(scatter control)을 제공할 수 있다. 분산 컨트롤은 하위 레벨 터치 입력을 처리하는 것 및 입력을 특정의 응용 프로그램 객체와 연관시키는 것을 처리하고, 응용 프로그램은 컨트롤로부터 이벤트를 수신하여 응용 프로그램 객체의 조작을 처리한다. 예를 들어, 컨트롤이 사용자가 객체를 크기 조정한 것으로 나타내는 경우, 응용 프로그램은 객체의 새 크기를 저장할 수 있다.
일부 실시예에서, 관성 시스템은 본 명세서에 기술된 처리를 3차원으로 수행한다. 본 명세서에서 2차원 멀티 터치 하드웨어가 기술되어 있지만, 당업자라면, 좌표 이동을 3차원으로 제공하는 하드웨어가 사용가능한 경우, 본 명세서에 기술된 시스템의 처리가 3차원(3D) 조작에도 똑같이 적용될 수 있다는 것을 잘 알 것이다. 예를 들어, 압력을 검출하거나 카메라를 사용하여 사용자의 손가락의 3D 이동을 검출하는 하드웨어는 이동의 좌표를 3차원으로 관성 시스템에게 제공할 수 있으며, 관성 시스템은 이어서 다수의 3D 방향에서의 객체의 조작(예를 들어, 회전, 스케일링 및 이동)을 나타내는 3D 변환을 생성할 수 있다.
이하의 표는 객체의 사용자 터치 기반 이동에 따라 관성 기반 이동을 응용 프로그램 객체에게 제공하기 위해 관성 시스템이 응용 프로그램에게 제공하는 하나의 API를 정의한다.
속성:
BoundaryBottom 대상 객체가 스크린의 하부 쪽으로 얼마나 이동할 수 있는지를 제한함.
BoundaryLeft 대상 객체가 스크린의 좌측으로 얼마나 이동할 수 있는지를 제한함.
BoundaryRight 대상 객체가 스크린의 우측으로 얼마나 이동할 수 있는지를 제한함.
BoundaryTop 대상 객체가 스크린의 상부 쪽으로 얼마나 이동할 수 있는지를 제한함.
DesiredAngularDeceleration 대상 객체가 회전을 중단하게 될 원하는 속도를 지정함(단위: 라디안/밀리초).
DesiredDecleration 이동 동작이 감속하게 되는 원하는 속도를 지정함.
DesiredDisplacement 객체가 이동하게 될 원하는 거리를 지정함.
DesiredExpansion 객체의 평균 반경의 원하는 변화를 지정함.
Desired ExpansionDeceleration 객체가 확장을 중단하게 되는 속도를 지정함.
ElasticMarginBottom 대상 객체를 되튀게 하는 하부 영역을 지정함.
ElasticMarginLeft 대상 객체를 되튀게 하는 최좌측 영역을 지정함.
ElasticMarginRight 대상 객체를 되튀게 하는 최우측 영역을 지정함.
InitialAngularVelocity 이동이 시작할 때 대상의 회전을 지정함.
InitialOriginX 대상 객체의 수평 위치를 지정하는 속성을 받거나 출력함. 이 속성은 관성을 가지는 대상에 대한 시작 수평 위치를 지정함.
InitialOriginY 대상 객체의 수직 위치를 지정하는 속성을 받거나 출력함. 이 속성은 관성을 가지는 대상에 대한 시작 수직 위치를 지정함.
InitialRadius 객체가 변경되기 전에 대상의 가장자리로부터 그의 중심까지의 거리를 지정함.
InitialTimestamp 관성을 가지는 대상 객체에 대한 시작 타임스탬프를 지정함.
InitialVelocityX 수평축에서의 대상 객체의 초기 이동을 지정함.
InitialVelocityY 수직축에서의 대상 객체의 초기 이동을 지정함.
메서드:
HRESULT Reset(); 프로세서를 초기 타임스탬프로 초기화함.
HRESULT Process( [out] BOOL* completed ); 주어진 틱(tick)에 대한 계산을 수행하고, 외삽이 완료되었는지 여부에 따라 Delta 또는 Completed 이벤트를 발생할 수 있음. 이전의 틱에서 외삽이 종료된 경우, 이 메서드는 무연산(no-op)임.
HRESULT ProcessTime( [in] DWORD timestamp, [out] BOOL* completed ); 주어진 틱(tick)에 대한 계산을 수행하고, 외삽이 완료되었는지 여부에 따라 Delta 또는 Completed 이벤트를 발생할 수 있음. 이전의 틱에서 외삽이 종료된 경우, 이 메서드는 무연산(no-op)임.
HRESULT Complete(); Completed 이벤트를 발생함.
HRESULT CompleteTime( [in] DWORD timestamp ); 주어진 틱을 처리하고 Completed 이벤트를 발생함.
이벤트:
HRESULT ManipulationStarted(
[in] FLOAT x,
[in] FLOAT y
);
조작이 시작할 때에 대한 이벤트를 처리함.
HRESULT ManipulationDelta(
[in] FLOAT x,
[in] FLOAT y,
[in] FLOAT translationDeltaX,
[in] FLOAT translationDeltaY,
[in] FLOAT scaleDelta,
[in] FLOAT expansionDelta,
[in] FLOAT rotationDelta,
[in] FLOAT cumulativeTranslationX,
[in] FLOAT cumulativeTranslationY,
[in] FLOAT cumulativeScale,
[in] FLOAT cumulativeExpansion,
[in] FLOAT cumulativeRotation
);
조작된 객체가 변할 때 일어나는 이벤트를 처리함.
HRESULT ManipulationCompleted(
[in] FLOAT x,
[in] FLOAT y,
[in] FLOAT cumulativeTranslationX,
[in] FLOAT cumulativeTranslationY,
[in] FLOAT cumulativeScale,
[in] FLOAT cumulativeExpansion,
[in] FLOAT cumulativeRotation
);
조작이 종료할 때 이벤트를 처리함.
이상의 표에서, 관성 시스템은 응용 프로그램이 사용자 이동에 기초하여 이전에 이벤트를 수신하였던 동일한 인터페이스 상에서 열거된 이벤트를 제공할 수 있다.
이상의 내용으로부터, 관성 시스템의 특정 실시예가 예시를 위해 본 명세서에 기술되어 있지만, 본 발명의 사상 및 범위를 벗어나지 않고 다양한 수정이 행해질 수 있다는 것을 잘 알 것이다. 예를 들어, 본 시스템이 멀티 터치 조작과 관련하여 기술되어 있지만, 본 시스템은 다른 상황, 예컨대 시뮬레이션이 흔히 사용되는 게임 및 기타 영역에서 사용될 수 있는 관성의 시뮬레이션을 제공한다. 그에 따라, 본 발명은 첨부된 특허청구범위에 의하지 않고는 제한되지 않는다.

Claims (20)

  1. 터치 감지 입력 표면과 디스플레이를 포함하는 컴퓨팅 장치 상에서, 상기 터치 감지 표면을 통해 멀티 터치 입력을 사용하여 조작되는 객체의 실제 이동을 상기 디스플레이 상에 제공하기 위해 수행되는 방법으로서,
    멀티 터치 입력 장치로부터의 하나 이상의 접촉을 제거함으로써 사용자가 상기 컴퓨팅 장치 상에서 실행되는 응용 프로그램의 응용 프로그램 객체를 놓았음(release)을 판정하는 단계- 상기 응용 프로그램 객체는 상기 디스플레이 상에 디스플레이됨 -;
    상기 판정하는 단계 이후에, 현재 관성 처리 기간 동안 상기 응용 프로그램 객체의 이동의 시뮬레이션을 처리하기 위해 상기 컴퓨팅 장치 상에서 실행되는 관성 API(application programming interface)를 호출하는 단계- 상기 관성 API는 상기 컴퓨팅 장치 상에서 임의의 응용 프로그램에 의해 호출가능한 응용 프로그램 독립적인 플랫폼을 제공하고, 상기 관성 API는 상기 응용 프로그램 객체의 유형에 무관하게 관성의 객체 이동을 시뮬레이팅함 -;
    상기 응용 프로그램에 의해, 상기 판정하는 단계 이후 상기 관성 API에 의해 생성된 관성 이벤트를 수신하는 단계- 상기 관성 이벤트는 시뮬레이트된 관성에 기초하여 상기 객체의 조작을 기술함 -; 및
    상기 응용 프로그램 객체를 수정하고 그에 따라 상기 응용 프로그램 객체를 상기 디스플레이 상에 디스플레이함으로써 상기 응용 프로그램의 컨텍스트(context) 내의 조작 효과에 기초하여 상기 수신된 관성 이벤트를 처리하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 사용자가 상기 객체를 놓았음을 판정하는 단계 후에, 상기 사용자가 상기 객체를 놓기 전에 상기 객체의 이동을 처리하던 조작 프로세서에게 참조를 전달함으로써 관성 시스템을 초기화하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 사용자가 상기 객체를 놓았음을 판정하는 단계 후에, 상기 사용자가 상기 객체를 놓았을 때의 상기 객체의 상태를 기술하는 하나 이상의 매개변수를 전달함으로써 관성 시스템을 초기화하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 관성 이벤트를 수신하는 단계는 상기 응용 프로그램 객체의 2D 아핀 변환(affine transform)을 기술하는 정보를 수신하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 관성 이벤트에 의해 기술된 조작은 회전 조작, 이동(translation) 조작 및 스케일링 조작 중 적어도 하나를 포함하는 방법.
  6. 제1항에 있어서,
    상기 수신된 관성 이벤트는 회전이고, 상기 수신된 관성 이벤트를 처리하는 단계는 디스플레이 상에서 상기 응용 프로그램 객체를 회전시키는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 관성 처리 기간의 길이를 결정하는 타이머를 설정하는 단계를 더 포함하고, 상기 응용 프로그램은 상기 타이머의 각각의 실행 시에 상기 관성 API를 호출하는 방법.
  8. 제7항에 있어서,
    상기 시뮬레이션이 완료되었다는 표시(indication)를 상기 관성 API로부터 수신하는 단계, 및
    상기 표시가 수신될 때 상기 타이머를 만료시키는 단계
    를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 관성 이벤트를 수신하는 단계는 COM 이벤트 인터페이스를 통해 통지를 수신하는 단계를 포함하는 방법.
  10. 터치 감지 입력 표면을 통한 멀티 터치 입력에 의해 이전에 이동된 응용 프로그램 객체의 이동을 디스플레이 상에서 소정의 방법을 통해 시뮬레이팅하도록 상기 디스플레이 및 상기 터치 감지 입력 표면을 포함하는 컴퓨팅 장치를 제어하는 명령어들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체로서,
    상기 응용 프로그램 객체는 상기 컴퓨팅 장치 상에서 실행되는 응용 프로그램의 일부이고,
    상기 방법은,
    상기 터치 감지 입력 표면과의 접촉 중단에 의한 상기 응용 프로그램 객체의 사용자 놓음(user release)에 대응하는 상기 응용 프로그램 객체의 상태를 제공하는 하나 이상의 초기 시뮬레이션 매개변수를 수신하는 단계;
    상기 초기 시뮬레이션 매개변수에 기초하여 상기 응용 프로그램 객체의 관성을 시뮬레이팅하기 위한 계산을 수행하는 시뮬레이션 엔진을 초기화하는 단계;
    현재 시뮬레이션 기간의 표시(indication)를 수신하는 단계;
    상기 시뮬레이션 엔진에 의해, 초기 매개변수, 상기 시뮬레이션 엔진에 의한 임의의 이전 관성 시뮬레이팅, 및 임의의 이전 시뮬레이션 기간 이후에 경과된 시간에 기초하여 상기 응용 프로그램 객체의 관성 이동을 시뮬레이팅하는 단계; 및
    상기 응용 프로그램 객체의 현재 이동을 기술하는 변환 정보를 상기 응용 프로그램으로 전송하기 위한 관성 이벤트를 발생시키는 단계- 상기 응용 프로그램 객체는 상기 변환 정보에 따라 상기 디스플레이 상에 디스플레이됨 -
    를 포함하는 컴퓨터 판독가능 저장 매체.
  11. 제10항에 있어서,
    상기 시뮬레이션 엔진은, 상기 사용자가 상기 객체를 터치한 것에 의해 상기 응용 프로그램 객체가 움직이기 시작한 후에, 상기 응용 프로그램 객체에 대한 실제 감속 거동(realistic deceleration behavior)을 시뮬레이팅하는
    컴퓨터 판독가능 저장 매체.
  12. 제10항에 있어서,
    상기 시뮬레이션 엔진은, 상기 응용 프로그램 객체가 디스플레이 상에서 다른 요소와 중첩할 때, 상기 응용 프로그램 객체에 대한 실제 탄성 거동(realistic elasticity behavior)을 시뮬레이팅하는
    컴퓨터 판독가능 저장 매체.
  13. 제10항에 있어서,
    상기 현재 시뮬레이션 기간의 표시를 수신하는 단계는 상기 응용 프로그램으로부터 시뮬레이션 처리 함수에 대한 호출을 수신하는 단계를 포함하는
    컴퓨터 판독가능 저장 매체.
  14. 제10항에 있어서,
    상기 방법은 상기 시뮬레이션이 완료되었는지를 판정하고, 상기 시뮬레이션이 완료된 경우, 상기 시뮬레이션이 완료되었다는 것을 상기 응용 프로그램에게 알려주는 단계를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  15. 멀티 터치 하드웨어로부터의 터치 입력을 처리하는 컴퓨터 장치로서,
    멀티 터치 입력 장치로부터 임의의 응용 프로그램에 대한 하위 레벨 입력을 수신하고, 상기 하위 레벨 입력을 상기 임의의 응용 프로그램에 의해 수신되는 조작들(manipulations)로 변환하는 모듈- 상기 조작들 중 적어도 일부는 제각기의 복수의 상기 하위 레벨 입력에 기초하고, 상기 조작들은 2차원 아핀 변환을 포함함 -; 및
    디스플레이 상에 디스플레이되는 그래픽 객체를 포함하는 응용 프로그램- 상기 그래픽 객체는, 상기 그래픽 객체로 향한 대응 하위 레벨 입력이 상기 모듈에 의해 수신되고 상기 그래픽 객체를 디스플레이하기 위해 상기 응용 프로그램이 사용하는 상기 모듈에 의해 생성된 대응 조작들을 상기 응용 프로그램이 수신하도록, 상기 멀티 터치 입력 장치와 접촉하는 사용자와 상호작용되고, 상기 사용자가 상기 멀티 터치 입력 장치와의 접촉을 중단하는 경우, 상기 모듈은 상기 객체의 감소하는 관성을 시뮬레이팅함으로써 상기 그래픽 객체에 대한 조작들을 계속 생성함 -
    을 포함하는 컴퓨팅 장치.
  16. 제15항에 있어서,
    상기 사용자가 상기 멀티 터치 입력 장치와의 접촉을 중단하기 전에 상기 모듈은 상기 객체의 상태에 따라 상기 감소하는 관성을 시뮬레이팅하는
    컴퓨팅 장치.
  17. 제16항에 있어서,
    상기 상태는 상기 응용 프로그램 객체의 속도 및 방향을 포함하는
    컴퓨팅 장치.
  18. 제15항에 있어서,
    상기 하위 레벨 입력은 상기 사용자가 상기 멀티 터치 입력 장치와 접촉하는 위치를 포함하는
    컴퓨팅 장치.
  19. 제15항에 있어서,
    상기 모듈은 상기 응용 프로그램으로 하여금 상기 그래픽 객체가 정지하였다는 통지를 수신하게 하는
    컴퓨팅 장치.
  20. 제15항에 있어서,
    상기 사용자가 상기 멀티 터치 입력 장치와의 접촉을 중단하기 이전 및 이후의 상기 조작들은 상기 응용 프로그램에 대해 동일한 통신 채널 및 동일한 포맷을 갖는
    컴퓨팅 장치.
KR1020117009026A 2008-10-26 2009-10-16 멀티 터치 객체 관성 시뮬레이션 KR101597383B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/258,439 2008-10-26
US12/258,439 US8477103B2 (en) 2008-10-26 2008-10-26 Multi-touch object inertia simulation

Publications (2)

Publication Number Publication Date
KR20110074990A KR20110074990A (ko) 2011-07-05
KR101597383B1 true KR101597383B1 (ko) 2016-02-24

Family

ID=42117010

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117009026A KR101597383B1 (ko) 2008-10-26 2009-10-16 멀티 터치 객체 관성 시뮬레이션

Country Status (11)

Country Link
US (5) US8477103B2 (ko)
EP (1) EP2342638B1 (ko)
JP (1) JP5475792B2 (ko)
KR (1) KR101597383B1 (ko)
CN (1) CN102197377B (ko)
AR (1) AR073981A1 (ko)
BR (1) BRPI0919074A2 (ko)
ES (1) ES2771356T3 (ko)
RU (1) RU2534486C2 (ko)
TW (1) TWI494795B (ko)
WO (1) WO2010048051A2 (ko)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225231B2 (en) 2005-08-30 2012-07-17 Microsoft Corporation Aggregation of PC settings
US20100107100A1 (en) 2008-10-23 2010-04-29 Schneekloth Jason S Mobile Device Style Abstraction
US8411046B2 (en) 2008-10-23 2013-04-02 Microsoft Corporation Column organization of content
US8466879B2 (en) 2008-10-26 2013-06-18 Microsoft Corporation Multi-touch manipulation of application objects
US8477103B2 (en) * 2008-10-26 2013-07-02 Microsoft Corporation Multi-touch object inertia simulation
KR101513019B1 (ko) * 2008-10-27 2015-04-17 엘지전자 주식회사 휴대 단말기 및 그 동작방법
US8238876B2 (en) 2009-03-30 2012-08-07 Microsoft Corporation Notifications
US8175653B2 (en) 2009-03-30 2012-05-08 Microsoft Corporation Chromeless user interface
US8836648B2 (en) 2009-05-27 2014-09-16 Microsoft Corporation Touch pull-in gesture
US8514188B2 (en) * 2009-12-30 2013-08-20 Microsoft Corporation Hand posture mode constraints on touch input
JPWO2011152224A1 (ja) * 2010-06-01 2013-07-25 日本電気株式会社 端末、処理選択方法、制御プログラムおよび記録媒体
JP2012003508A (ja) * 2010-06-16 2012-01-05 Toshiba Corp 情報処理装置、方法及びプログラム
CN102314297B (zh) 2010-07-07 2016-04-13 腾讯科技(深圳)有限公司 一种窗口对象惯性移动方法及实现装置
KR101780020B1 (ko) * 2010-09-02 2017-09-19 삼성전자주식회사 인터페이스 방법 및 장치
US9110564B2 (en) * 2010-11-05 2015-08-18 Lg Electronics Inc. Mobile terminal, method for controlling mobile terminal, and method for displaying image of mobile terminal
KR101189630B1 (ko) 2010-12-03 2012-10-12 한국기술교육대학교 산학협력단 멀티터치를 이용한 오브젝트 제어장치 및 그 방법
US8982045B2 (en) 2010-12-17 2015-03-17 Microsoft Corporation Using movement of a computing device to enhance interpretation of input events produced when interacting with the computing device
US8660978B2 (en) 2010-12-17 2014-02-25 Microsoft Corporation Detecting and responding to unintentional contact with a computing device
US8988398B2 (en) 2011-02-11 2015-03-24 Microsoft Corporation Multi-touch input device with orientation sensing
US8994646B2 (en) 2010-12-17 2015-03-31 Microsoft Corporation Detecting gestures involving intentional movement of a computing device
US9244545B2 (en) 2010-12-17 2016-01-26 Microsoft Technology Licensing, Llc Touch and stylus discrimination and rejection for contact sensitive computing devices
US20120159395A1 (en) 2010-12-20 2012-06-21 Microsoft Corporation Application-launching interface for multiple modes
US20120159383A1 (en) 2010-12-20 2012-06-21 Microsoft Corporation Customization of an immersive environment
US8689123B2 (en) 2010-12-23 2014-04-01 Microsoft Corporation Application reporting in an application-selectable user interface
US8612874B2 (en) 2010-12-23 2013-12-17 Microsoft Corporation Presenting an application change through a tile
US9423951B2 (en) * 2010-12-31 2016-08-23 Microsoft Technology Licensing, Llc Content-based snap point
US8988087B2 (en) 2011-01-24 2015-03-24 Microsoft Technology Licensing, Llc Touchscreen testing
US9965094B2 (en) 2011-01-24 2018-05-08 Microsoft Technology Licensing, Llc Contact geometry tests
US9201520B2 (en) 2011-02-11 2015-12-01 Microsoft Technology Licensing, Llc Motion and context sharing for pen-based computing inputs
US8982061B2 (en) 2011-02-12 2015-03-17 Microsoft Technology Licensing, Llc Angular contact geometry
US9542092B2 (en) 2011-02-12 2017-01-10 Microsoft Technology Licensing, Llc Prediction-based touch contact tracking
US8773377B2 (en) 2011-03-04 2014-07-08 Microsoft Corporation Multi-pass touch contact tracking
TWI483171B (zh) * 2011-03-10 2015-05-01 Chi Mei Comm Systems Inc 檔案管理系統及方法
US9383917B2 (en) 2011-03-28 2016-07-05 Microsoft Technology Licensing, Llc Predictive tiling
JP5743198B2 (ja) * 2011-04-28 2015-07-01 株式会社ワコム マルチタッチ・マルチユーザ検出装置
US8893033B2 (en) 2011-05-27 2014-11-18 Microsoft Corporation Application notifications
US9104440B2 (en) 2011-05-27 2015-08-11 Microsoft Technology Licensing, Llc Multi-application environment
US9158445B2 (en) 2011-05-27 2015-10-13 Microsoft Technology Licensing, Llc Managing an immersive interface in a multi-application immersive environment
US20120304132A1 (en) 2011-05-27 2012-11-29 Chaitanya Dev Sareen Switching back to a previously-interacted-with application
US9658766B2 (en) 2011-05-27 2017-05-23 Microsoft Technology Licensing, Llc Edge gesture
US9104307B2 (en) 2011-05-27 2015-08-11 Microsoft Technology Licensing, Llc Multi-application environment
US8913019B2 (en) 2011-07-14 2014-12-16 Microsoft Corporation Multi-finger detection and component resolution
US8687023B2 (en) 2011-08-02 2014-04-01 Microsoft Corporation Cross-slide gesture to select and rearrange
US20130057587A1 (en) 2011-09-01 2013-03-07 Microsoft Corporation Arranging tiles
US8922575B2 (en) 2011-09-09 2014-12-30 Microsoft Corporation Tile cache
US10353566B2 (en) 2011-09-09 2019-07-16 Microsoft Technology Licensing, Llc Semantic zoom animations
US9557909B2 (en) 2011-09-09 2017-01-31 Microsoft Technology Licensing, Llc Semantic zoom linguistic helpers
US9378389B2 (en) 2011-09-09 2016-06-28 Microsoft Technology Licensing, Llc Shared item account selection
US8933952B2 (en) 2011-09-10 2015-01-13 Microsoft Corporation Pre-rendering new content for an application-selectable user interface
US9146670B2 (en) 2011-09-10 2015-09-29 Microsoft Technology Licensing, Llc Progressively indicating new content in an application-selectable user interface
US9244802B2 (en) 2011-09-10 2016-01-26 Microsoft Technology Licensing, Llc Resource user interface
TWI456449B (zh) * 2011-10-14 2014-10-11 Acer Inc 具有多個觸控介面的電子裝置以及利用多個觸控介面操控三維影像之方法
US9658715B2 (en) 2011-10-20 2017-05-23 Microsoft Technology Licensing, Llc Display mapping modes for multi-pointer indirect input devices
US9274642B2 (en) 2011-10-20 2016-03-01 Microsoft Technology Licensing, Llc Acceleration-based interaction for multi-pointer indirect input devices
KR101858608B1 (ko) * 2011-10-28 2018-05-17 엘지전자 주식회사 이동 단말기 및 이동 단말기의 제어 방법
JP5833906B2 (ja) * 2011-12-13 2015-12-16 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理システムおよび情報処理方法
US9372612B2 (en) 2011-10-31 2016-06-21 Microsoft Technology Licensing, Llc Exposing inertial snap points
US9785281B2 (en) 2011-11-09 2017-10-10 Microsoft Technology Licensing, Llc. Acoustic touch sensitive testing
JP2013105395A (ja) * 2011-11-15 2013-05-30 Sony Corp 情報処理装置及び方法、並びにプログラム
US9389679B2 (en) * 2011-11-30 2016-07-12 Microsoft Technology Licensing, Llc Application programming interface for a multi-pointer indirect touch input device
US9223472B2 (en) 2011-12-22 2015-12-29 Microsoft Technology Licensing, Llc Closing applications
US10872454B2 (en) 2012-01-06 2020-12-22 Microsoft Technology Licensing, Llc Panning animations
US8914254B2 (en) 2012-01-31 2014-12-16 Microsoft Corporation Latency measurement
US8902181B2 (en) 2012-02-07 2014-12-02 Microsoft Corporation Multi-touch-movement gestures for tablet computing devices
US9128605B2 (en) 2012-02-16 2015-09-08 Microsoft Technology Licensing, Llc Thumbnail-image selection of applications
US9977876B2 (en) 2012-02-24 2018-05-22 Perkinelmer Informatics, Inc. Systems, methods, and apparatus for drawing chemical structures using touch and gestures
CA3092122C (en) * 2012-02-24 2021-11-30 Perkinelmer Informatics, Inc. Systems, methods, and apparatus for drawing chemical structures using touch and gestures
CN102662586B (zh) * 2012-03-31 2015-11-25 北京奇虎科技有限公司 一种基于用户界面的操作触发方法、装置及终端设备
TWI476706B (zh) 2012-04-30 2015-03-11 Pixart Imaging Inc 偵測物件移動輸出命令的方法及其系統
CN103389815B (zh) * 2012-05-08 2016-08-03 原相科技股份有限公司 侦测物件移动输出命令的方法及其系统
US9317147B2 (en) 2012-10-24 2016-04-19 Microsoft Technology Licensing, Llc. Input testing tool
DE102013000272A1 (de) * 2013-01-09 2014-07-10 Daimler Ag Verfahren zum Bewegen eines auf einer Anzeigevorrichtung eines Fahrzeugs dargestellten Bildinhalts, Bedien- und Anzeigevorrichtung für ein Fahrzeug und Computerprogrammprodukt
US20140282279A1 (en) * 2013-03-14 2014-09-18 Cirque Corporation Input interaction on a touch sensor combining touch and hover actions
US9450952B2 (en) 2013-05-29 2016-09-20 Microsoft Technology Licensing, Llc Live tiles without application-code execution
JP5983499B2 (ja) * 2013-03-29 2016-08-31 ソニー株式会社 表示制御装置、表示制御方法、およびプログラム
FI20135508L (fi) * 2013-05-14 2014-11-15 Rovio Entertainment Ltd Kehittynyt kosketuskäyttöliittymä
CN104182116A (zh) * 2013-05-23 2014-12-03 中兴通讯股份有限公司 视图处理方法和视图处理终端
CN104346083A (zh) * 2013-07-25 2015-02-11 富泰华工业(深圳)有限公司 滑动触摸操作的显示控制系统及方法
US9575639B2 (en) * 2014-02-27 2017-02-21 Ab Initio Technology Llc Compound controls
WO2015149347A1 (en) 2014-04-04 2015-10-08 Microsoft Technology Licensing, Llc Expandable application representation
CN105378582B (zh) 2014-04-10 2019-07-23 微软技术许可有限责任公司 计算设备的可折叠壳盖
WO2015154276A1 (en) 2014-04-10 2015-10-15 Microsoft Technology Licensing, Llc Slider cover for computing device
US9870083B2 (en) 2014-06-12 2018-01-16 Microsoft Technology Licensing, Llc Multi-device multi-user sensor correlation for pen and computing device interaction
US9727161B2 (en) 2014-06-12 2017-08-08 Microsoft Technology Licensing, Llc Sensor correlation for pen and touch-sensitive computing device interaction
US9977566B2 (en) * 2014-06-24 2018-05-22 Google Llc Computerized systems and methods for rendering an animation of an object in response to user input
US10592080B2 (en) 2014-07-31 2020-03-17 Microsoft Technology Licensing, Llc Assisted presentation of application windows
US10254942B2 (en) 2014-07-31 2019-04-09 Microsoft Technology Licensing, Llc Adaptive sizing and positioning of application windows
US10678412B2 (en) 2014-07-31 2020-06-09 Microsoft Technology Licensing, Llc Dynamic joint dividers for application windows
US10642365B2 (en) * 2014-09-09 2020-05-05 Microsoft Technology Licensing, Llc Parametric inertia and APIs
CN106662891B (zh) 2014-10-30 2019-10-11 微软技术许可有限责任公司 多配置输入设备
US10089291B2 (en) 2015-02-27 2018-10-02 Microsoft Technology Licensing, Llc Ink stroke editing and manipulation
US9950542B2 (en) 2015-03-12 2018-04-24 Microsoft Technology Licensing, Llc Processing digital ink input subject to monitoring and intervention by an application program
US10514803B2 (en) 2016-03-06 2019-12-24 Microsoft Technology Licensing, Llc Pen in field force sensing calibration
US10254857B2 (en) 2016-03-06 2019-04-09 Microsoft Technology Licensing, Llc Soft touch detection of a stylus
CN117435095A (zh) * 2016-03-28 2024-01-23 苹果公司 对另一电子设备的多功能设备控制
US11150798B2 (en) 2016-03-28 2021-10-19 Apple Inc. Multifunction device control of another electronic device
CN108803926A (zh) * 2018-05-29 2018-11-13 广东工业大学 一种基于触摸点的位移矢量和方向矢量的控制方法
EP3614244B1 (en) * 2018-06-29 2023-07-12 Shenzhen Goodix Technology Co., Ltd. Touch screen adjustment method, touch chip and electronic terminal

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008508601A (ja) 2004-07-30 2008-03-21 アップル インコーポレイテッド タッチ・センシティブ入力デバイスのためのジェスチャ
JP2008516335A (ja) 2004-10-08 2008-05-15 タイコ・エレクトロニクス・コーポレイション タッチスクリーンイベントをアプリケーションフォーマットデータに変換するための方法およびシステム

Family Cites Families (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5153577A (en) * 1986-04-28 1992-10-06 Xerox Corporation Mapping character color attributes into grey pixel patterns
US5261098A (en) 1991-08-28 1993-11-09 Sun Microsystems, Inc. Method and apparatus for deriving object type and obtaining object type attribute values
JP2827612B2 (ja) * 1991-10-07 1998-11-25 富士通株式会社 タッチパネル装置およびタッチパネル装置におけるオブジェクトの表示方法。
US7345675B1 (en) 1991-10-07 2008-03-18 Fujitsu Limited Apparatus for manipulating an object displayed on a display device by using a touch screen
US5875108A (en) 1991-12-23 1999-02-23 Hoffberg; Steven M. Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US5475803A (en) 1992-07-10 1995-12-12 Lsi Logic Corporation Method for 2-D affine transformation of images
JP3244798B2 (ja) 1992-09-08 2002-01-07 株式会社東芝 動画像処理装置
US5563632A (en) 1993-04-30 1996-10-08 Microtouch Systems, Inc. Method of and apparatus for the elimination of the effects of internal interference in force measurement systems, including touch - input computer and related displays employing touch force location measurement techniques
US5553224A (en) 1993-08-04 1996-09-03 Xerox Corporation Method for dynamically maintaining multiple structural interpretations in graphics system
US5621434A (en) 1993-08-11 1997-04-15 Object Technology Licensing Corp. Cursor manipulation system and method
US5650941A (en) * 1994-09-07 1997-07-22 Intel Corporation Computer architecture for creating and manipulating displayable objects
US5495566A (en) 1994-11-22 1996-02-27 Microsoft Corporation Scrolling contents of a window
US5692143A (en) 1994-12-30 1997-11-25 International Business Machines Corporation Method and system for recalling desktop states in a data processing system
DE59509004D1 (de) 1995-03-10 2001-03-08 Heidenhain Gmbh Dr Johannes Mehrkoordinaten-Tastkopf mit gleichen Auslenkungen
US5691898A (en) 1995-09-27 1997-11-25 Immersion Human Interface Corp. Safe and low cost computer peripherals with force feedback for consumer applications
US5798769A (en) 1996-08-15 1998-08-25 Xerox Corporation Method and apparatus for maintaining links between graphic objects in a free-form graphics display system
US5790114A (en) 1996-10-04 1998-08-04 Microtouch Systems, Inc. Electronic whiteboard with multi-functional user interface
US6636197B1 (en) * 1996-11-26 2003-10-21 Immersion Corporation Haptic feedback effects for control, knobs and other interface devices
US6195628B1 (en) * 1997-03-13 2001-02-27 International Business Machines Corporation Waveform manipulation in time warp simulation
US6005551A (en) * 1997-04-25 1999-12-21 Microsoft Corporation Offline force effect rendering
US6052735A (en) * 1997-10-24 2000-04-18 Microsoft Corporation Electronic mail object synchronization between a desktop computer and mobile device
US7840912B2 (en) 2006-01-30 2010-11-23 Apple Inc. Multi-touch gesture dictionary
US8479122B2 (en) 2004-07-30 2013-07-02 Apple Inc. Gestures for touch sensitive input devices
US20070177804A1 (en) * 2006-01-30 2007-08-02 Apple Computer, Inc. Multi-touch gesture dictionary
KR100595924B1 (ko) * 1998-01-26 2006-07-05 웨인 웨스터만 수동 입력 통합 방법 및 장치
US6529210B1 (en) 1998-04-08 2003-03-04 Altor Systems, Inc. Indirect object manipulation in a simulation
JP2000089913A (ja) 1998-09-08 2000-03-31 Gunze Ltd タッチパネル入力座標変換装置
US6154210A (en) 1998-11-25 2000-11-28 Flashpoint Technology, Inc. Method and system for implementing button interface compatibility in touch-screen equipped digital imaging device
US7469381B2 (en) * 2007-01-07 2008-12-23 Apple Inc. List scrolling and document translation, scaling, and rotation on a touch-screen display
US6597378B1 (en) * 2000-01-18 2003-07-22 Seiko Epson Corporation Display device, portable information processing apparatus, information storage medium, and electronic apparatus
US6822635B2 (en) 2000-01-19 2004-11-23 Immersion Corporation Haptic interface for laptop computers and other portable devices
GB0008537D0 (en) 2000-04-06 2000-05-24 Ananova Ltd Character animation
US6590568B1 (en) 2000-11-20 2003-07-08 Nokia Corporation Touch screen drag and drop input technique
US7039234B2 (en) 2001-07-19 2006-05-02 Microsoft Corporation Electronic ink as a software object
US7038670B2 (en) 2002-08-16 2006-05-02 Sipix Imaging, Inc. Electrophoretic display with dual mode switching
US20030225890A1 (en) 2002-06-03 2003-12-04 Dunstan Robert A. State token for thin client devices
US11275405B2 (en) * 2005-03-04 2022-03-15 Apple Inc. Multi-functional hand-held device
US7027054B1 (en) * 2002-08-14 2006-04-11 Avaworks, Incorporated Do-it-yourself photo realistic talking head creation system and method
US7103852B2 (en) 2003-03-10 2006-09-05 International Business Machines Corporation Dynamic resizing of clickable areas of touch screen applications
US7884804B2 (en) * 2003-04-30 2011-02-08 Microsoft Corporation Keyboard with input-sensitive display device
US7324121B2 (en) * 2003-07-21 2008-01-29 Autodesk, Inc. Adaptive manipulators
JP3968717B2 (ja) 2003-09-25 2007-08-29 松下電工株式会社 照明器具
US7302650B1 (en) 2003-10-31 2007-11-27 Microsoft Corporation Intuitive tools for manipulating objects in a display
US7495659B2 (en) 2003-11-25 2009-02-24 Apple Inc. Touch pad for handheld device
US7167162B2 (en) 2003-12-12 2007-01-23 Avago Technologies Ecbu Ip (Singapore) Pte. Ltd. Apparatus and method for controlling a screen pointer
US7826641B2 (en) * 2004-01-30 2010-11-02 Electronic Scripting Products, Inc. Apparatus and method for determining an absolute pose of a manipulated object in a real three-dimensional environment with invariant features
US7961909B2 (en) * 2006-03-08 2011-06-14 Electronic Scripting Products, Inc. Computer interface employing a manipulated object with absolute pose detection component and a display
US7345681B2 (en) * 2004-02-17 2008-03-18 Microsoft Corporation Pen data capture and injection
FR2866726B1 (fr) 2004-02-23 2006-05-26 Jazzmutant Controleur par manipulation d'objets virtuels sur un ecran tactile multi-contact
US8023466B2 (en) 2004-06-22 2011-09-20 Jianglei Ma Soft handoff in OFDMA system
US7519223B2 (en) 2004-06-28 2009-04-14 Microsoft Corporation Recognizing gestures and using gestures for interacting with software applications
US7653883B2 (en) * 2004-07-30 2010-01-26 Apple Inc. Proximity detector in handheld device
US8381135B2 (en) 2004-07-30 2013-02-19 Apple Inc. Proximity detector in handheld device
US7724242B2 (en) * 2004-08-06 2010-05-25 Touchtable, Inc. Touch driven method and apparatus to integrate and display multiple image layers forming alternate depictions of same subject matter
US7728821B2 (en) 2004-08-06 2010-06-01 Touchtable, Inc. Touch detecting interactive display
US7434173B2 (en) 2004-08-30 2008-10-07 Microsoft Corporation Scrolling web pages using direct interaction
US7208730B2 (en) 2004-10-14 2007-04-24 International Business Machines Corporation Programmable molecular manipulating devices
US7683883B2 (en) * 2004-11-02 2010-03-23 Pierre Touma 3D mouse and game controller based on spherical coordinates system and system for use
US7711681B2 (en) 2004-11-05 2010-05-04 Accenture Global Services Gmbh System for distributed information presentation and interaction
US7574593B2 (en) 2004-12-03 2009-08-11 Hewlett-Packard Development Company, L.P. Persistent memory manipulation using EFI
DE102004060405A1 (de) 2004-12-14 2006-07-06 Voith Paper Patent Gmbh Verfahren und Vorrichtung zum Beladen von in einer Suspension enthaltenen Fasern oder enthaltenem Zellstoff mit einem Füllstoff
CN100374998C (zh) * 2005-03-01 2008-03-12 联想(北京)有限公司 一种触控式信息输入装置及方法
US7499058B2 (en) 2005-04-22 2009-03-03 Microsoft Corporation Programmatical access to handwritten electronic ink in a tree-based rendering environment
US7928959B1 (en) * 2005-05-05 2011-04-19 Imi Innovations Inc. System and method for multiple independent computer inputs using unique device and source identification systems
US20060250352A1 (en) 2005-05-05 2006-11-09 Mice Technoligies, Inc. System and method for improved cursor functionality
KR100811160B1 (ko) * 2005-06-02 2008-03-07 삼성전자주식회사 사용자명령을 3차원적으로 입력가능한 전자장치
US8085318B2 (en) 2005-10-11 2011-12-27 Apple Inc. Real-time image capture and manipulation based on streaming data
US20060292531A1 (en) 2005-06-22 2006-12-28 Gibson Kenneth H Method for developing cognitive skills
US7463263B2 (en) 2005-07-15 2008-12-09 Sap Portals Israel Ltd. Declarative specification of model visualizations
US20110157196A1 (en) * 2005-08-16 2011-06-30 Exent Technologies, Ltd. Remote gaming features
US8098885B2 (en) * 2005-11-02 2012-01-17 Microsoft Corporation Robust online face tracking
US8355410B2 (en) * 2007-08-17 2013-01-15 At&T Intellectual Property I, L.P. Location-based mobile gaming application and method for implementing the same using a scalable tiered geocast protocol
US7958456B2 (en) 2005-12-23 2011-06-07 Apple Inc. Scrolling list with floating adjacent index symbols
US7509588B2 (en) 2005-12-30 2009-03-24 Apple Inc. Portable electronic device with interface reconfiguration mode
US7812826B2 (en) * 2005-12-30 2010-10-12 Apple Inc. Portable electronic device with multi-touch input
EP1977334A4 (en) 2006-01-25 2011-01-12 Greystripe Inc SYSTEM AND METHOD FOR MANAGING CONTENT IN PRE-EXISTING MOBILE APPLICATIONS
US8681098B2 (en) 2008-04-24 2014-03-25 Oblong Industries, Inc. Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes
US8334841B2 (en) 2006-03-13 2012-12-18 Navisense Virtual user interface method and system thereof
US9395905B2 (en) 2006-04-05 2016-07-19 Synaptics Incorporated Graphical scroll wheel
US9063647B2 (en) 2006-05-12 2015-06-23 Microsoft Technology Licensing, Llc Multi-touch uses, gestures, and implementation
WO2008005102A2 (en) 2006-05-13 2008-01-10 Sap Ag Consistent set of interfaces derived from a business object model
KR100866484B1 (ko) 2006-05-17 2008-11-03 삼성전자주식회사 다접점 터치 센서를 이용한 손가락의 이동 감지 장치 및방법
US8169421B2 (en) * 2006-06-19 2012-05-01 Cypress Semiconductor Corporation Apparatus and method for detecting a touch-sensor pad gesture
US8269725B2 (en) * 2006-06-28 2012-09-18 Microsoft Corporation Input simulation system for touch based devices
US20120208639A1 (en) * 2006-07-14 2012-08-16 Ailive Inc. Remote control with motion sensitive devices
US9007299B2 (en) * 2006-07-14 2015-04-14 Ailive Inc. Motion control used as controlling device
US20080030486A1 (en) 2006-08-04 2008-02-07 Quiteso Technologies, Llc Multi-functional pen input device
US8106856B2 (en) 2006-09-06 2012-01-31 Apple Inc. Portable electronic device for photo management
US8564544B2 (en) 2006-09-06 2013-10-22 Apple Inc. Touch screen device, method, and graphical user interface for customizing display of content category icons
KR100774927B1 (ko) * 2006-09-27 2007-11-09 엘지전자 주식회사 이동통신 단말기, 메뉴 및 아이템 선택방법
US8147316B2 (en) * 2006-10-10 2012-04-03 Wms Gaming, Inc. Multi-player, multi-touch table for use in wagering game systems
US20080122878A1 (en) 2006-11-24 2008-05-29 Keefe Gary W Apparatus and method for publishing computer-readable media
US8970501B2 (en) 2007-01-03 2015-03-03 Apple Inc. Proximity and multi-touch sensor detection and demodulation
US9311528B2 (en) * 2007-01-03 2016-04-12 Apple Inc. Gesture learning
US7907125B2 (en) 2007-01-05 2011-03-15 Microsoft Corporation Recognizing multiple input point gestures
US7956847B2 (en) * 2007-01-05 2011-06-07 Apple Inc. Gestures for controlling, manipulating, and editing of media files using touch sensitive devices
US8970503B2 (en) * 2007-01-05 2015-03-03 Apple Inc. Gestures for devices having one or more touch sensitive surfaces
US7924271B2 (en) 2007-01-05 2011-04-12 Apple Inc. Detecting gestures on multi-event sensitive devices
US7877707B2 (en) * 2007-01-06 2011-01-25 Apple Inc. Detecting and interpreting real-world and security gestures on touch and hover sensitive devices
US8656311B1 (en) 2007-01-07 2014-02-18 Apple Inc. Method and apparatus for compositing various types of content
US7844915B2 (en) 2007-01-07 2010-11-30 Apple Inc. Application programming interfaces for scrolling operations
US20080168402A1 (en) 2007-01-07 2008-07-10 Christopher Blumenberg Application Programming Interfaces for Gesture Operations
US7872652B2 (en) 2007-01-07 2011-01-18 Apple Inc. Application programming interfaces for synchronization
US7903115B2 (en) 2007-01-07 2011-03-08 Apple Inc. Animations
US20080168478A1 (en) 2007-01-07 2008-07-10 Andrew Platzer Application Programming Interfaces for Scrolling
US8368653B2 (en) * 2007-01-31 2013-02-05 Perceptive Pixel, Inc. Methods of interfacing with multi-point input devices and multi-point input systems employing interfacing techniques
KR101426718B1 (ko) 2007-02-15 2014-08-05 삼성전자주식회사 휴대단말기에서 터치 이벤트에 따른 정보 표시 장치 및방법
US8436815B2 (en) 2007-05-25 2013-05-07 Microsoft Corporation Selective enabling of multi-input controls
US8059101B2 (en) 2007-06-22 2011-11-15 Apple Inc. Swipe gestures for touch screen keyboards
US8194117B2 (en) * 2007-08-08 2012-06-05 Qnx Software Systems Limited Video phone system
US20110210931A1 (en) 2007-08-19 2011-09-01 Ringbow Ltd. Finger-worn device and interaction methods and communication methods
US20090079745A1 (en) * 2007-09-24 2009-03-26 Wey Fun System and method for intuitive interactive navigational control in virtual environments
US20090121903A1 (en) 2007-11-12 2009-05-14 Microsoft Corporation User interface with physics engine for natural gestural control
US9857872B2 (en) 2007-12-31 2018-01-02 Apple Inc. Multi-touch display screen with localized tactile feedback
WO2009093241A2 (en) * 2008-01-23 2009-07-30 N-Trig Ltd. Graphical object manipulation with a touch sensitive screen
US20090273560A1 (en) * 2008-02-04 2009-11-05 Massachusetts Institute Of Technology Sensor-based distributed tangible user interface
US20090207175A1 (en) * 2008-02-15 2009-08-20 Apple Inc. Animation Using Animation Effect and Trigger Element
US20090213083A1 (en) * 2008-02-26 2009-08-27 Apple Inc. Simulation of multi-point gestures with a single pointing device
US8797271B2 (en) 2008-02-27 2014-08-05 Microsoft Corporation Input aggregation for a multi-touch device
US8766925B2 (en) * 2008-02-28 2014-07-01 New York University Method and apparatus for providing input to a processor, and a sensor pad
US8416196B2 (en) 2008-03-04 2013-04-09 Apple Inc. Touch event model programming interface
US8717305B2 (en) * 2008-03-04 2014-05-06 Apple Inc. Touch event model for web pages
US8552299B2 (en) * 2008-03-05 2013-10-08 The Board Of Trustees Of The University Of Illinois Stretchable and foldable electronic devices
US20100149073A1 (en) * 2008-11-02 2010-06-17 David Chaum Near to Eye Display System and Appliance
RU2008113045A (ru) * 2008-04-07 2008-08-20 Александр Виль мович Казакевич (RU) Способ ввода информации с компактной сенсорной панели (варианты)
US8375336B2 (en) 2008-05-23 2013-02-12 Microsoft Corporation Panning content utilizing a drag operation
US8154524B2 (en) * 2008-06-24 2012-04-10 Microsoft Corporation Physics simulation-based interaction for surface computing
US8333655B2 (en) * 2008-07-11 2012-12-18 Wms Gaming Inc. Methods of receiving electronic wagers in a wagering game via a handheld electronic wager input device
US20100214243A1 (en) * 2008-07-15 2010-08-26 Immersion Corporation Systems and Methods For Interpreting Physical Interactions With A Graphical User Interface
US8390577B2 (en) 2008-07-25 2013-03-05 Intuilab Continuous recognition of multi-touch gestures
US8142283B2 (en) 2008-08-20 2012-03-27 Cfph, Llc Game of chance processing apparatus
US8749495B2 (en) 2008-09-24 2014-06-10 Immersion Corporation Multiple actuation handheld device
US8810522B2 (en) * 2008-09-29 2014-08-19 Smart Technologies Ulc Method for selecting and manipulating a graphical object in an interactive input system, and interactive input system executing the method
US8466879B2 (en) 2008-10-26 2013-06-18 Microsoft Corporation Multi-touch manipulation of application objects
US8477103B2 (en) 2008-10-26 2013-07-02 Microsoft Corporation Multi-touch object inertia simulation
WO2010062481A1 (en) * 2008-11-02 2010-06-03 David Chaum Near to eye display system and appliance
US8419661B2 (en) * 2008-11-14 2013-04-16 University Of Southern California Upper limb measurement and rehabilitation method and system
US8866699B2 (en) * 2008-12-02 2014-10-21 Fuji Xerox Co., Ltd. Systems and methods for interacting with mobile devices using external displays
WO2011003171A1 (en) * 2009-07-08 2011-01-13 Smart Technologies Ulc Three-dimensional widget manipulation on a multi-touch panel
US8819591B2 (en) * 2009-10-30 2014-08-26 Accuray Incorporated Treatment planning in a virtual environment
US8957918B2 (en) * 2009-11-03 2015-02-17 Qualcomm Incorporated Methods for implementing multi-touch gestures on a single-touch touch surface
US8232990B2 (en) 2010-01-05 2012-07-31 Apple Inc. Working with 3D objects
US8878787B2 (en) * 2010-08-13 2014-11-04 Fujitsu Limited Multi-touch user input based on multiple quick-point controllers
US20140096092A1 (en) * 2011-03-20 2014-04-03 William J. Johnson System and Method for Indirect Manipulation of User Interface Object(s)
US20130162519A1 (en) * 2011-12-23 2013-06-27 Sap Ag Cross-platform human input customization
US9311750B2 (en) * 2012-06-05 2016-04-12 Apple Inc. Rotation operations in a mapping application
US9189907B2 (en) 2013-08-28 2015-11-17 Chiu-Ming Chen Adjusting device for coin counting machine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008508601A (ja) 2004-07-30 2008-03-21 アップル インコーポレイテッド タッチ・センシティブ入力デバイスのためのジェスチャ
JP2008516335A (ja) 2004-10-08 2008-05-15 タイコ・エレクトロニクス・コーポレイション タッチスクリーンイベントをアプリケーションフォーマットデータに変換するための方法およびシステム

Also Published As

Publication number Publication date
US9189096B2 (en) 2015-11-17
KR20110074990A (ko) 2011-07-05
US10503395B2 (en) 2019-12-10
CN102197377A (zh) 2011-09-21
EP2342638A2 (en) 2011-07-13
TWI494795B (zh) 2015-08-01
US20180129410A1 (en) 2018-05-10
US20100103118A1 (en) 2010-04-29
WO2010048051A2 (en) 2010-04-29
EP2342638B1 (en) 2020-01-01
US9582140B2 (en) 2017-02-28
BRPI0919074A2 (pt) 2015-12-15
EP2342638A4 (en) 2017-03-15
CN102197377B (zh) 2014-10-22
AR073981A1 (es) 2010-12-15
JP5475792B2 (ja) 2014-04-16
RU2011116315A (ru) 2012-10-27
WO2010048051A3 (en) 2010-07-22
JP2012507077A (ja) 2012-03-22
US20130285961A1 (en) 2013-10-31
RU2534486C2 (ru) 2014-11-27
US20170168708A1 (en) 2017-06-15
US8477103B2 (en) 2013-07-02
US9898190B2 (en) 2018-02-20
TW201019176A (en) 2010-05-16
US20160034136A1 (en) 2016-02-04
ES2771356T3 (es) 2020-07-06

Similar Documents

Publication Publication Date Title
KR101597383B1 (ko) 멀티 터치 객체 관성 시뮬레이션
US10198101B2 (en) Multi-touch manipulation of application objects
US20200409544A1 (en) Displaying a three dimensional user interface
CA2771918C (en) Direct manipulation gestures
US20150186007A1 (en) Computer-Implemented Method For Designing a Three-Dimensional Modeled Object
Lee et al. Believable interaction with a quasi‐tangible tabletop interface
Sarkar et al. Virtual content suction user interface for android devices

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: 20190116

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 5