ES2771356T3 - Simulación de inercia de objetos multitáctiles - Google Patents
Simulación de inercia de objetos multitáctiles Download PDFInfo
- Publication number
- ES2771356T3 ES2771356T3 ES09822481T ES09822481T ES2771356T3 ES 2771356 T3 ES2771356 T3 ES 2771356T3 ES 09822481 T ES09822481 T ES 09822481T ES 09822481 T ES09822481 T ES 09822481T ES 2771356 T3 ES2771356 T3 ES 2771356T3
- Authority
- ES
- Spain
- Prior art keywords
- application
- inertia
- simulation
- user
- touch
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction 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/0488—Interaction 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/04883—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction 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/0488—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0412—Digitisers structurally integrated in a display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction 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/04812—Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction 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/04845—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction 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/04847—Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction 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/0486—Drag-and-drop
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/041—Indexing scheme relating to G06F3/041 - G06F3/045
- G06F2203/04104—Multi-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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/048—Indexing scheme relating to G06F3/048
- G06F2203/04806—Zoom, i.e. interaction techniques or interactors for controlling the zooming operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/048—Indexing scheme relating to G06F3/048
- G06F2203/04808—Several 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Position Input By Displaying (AREA)
- Processing Or Creating Images (AREA)
- Manipulator (AREA)
Abstract
Un procedimiento implementado por ordenador para proporcionar un movimiento realista de objetos manipulados mediante entrada multitáctil, comprendiendo el procedimiento las siguientes etapas realizadas por una aplicación: determinar (610) que un usuario ha liberado un objeto de aplicación definido por la aplicación eliminando uno o más contactos de un dispositivo de entrada multitáctil; invocar (640) una interfaz de programación de aplicaciones API de inercia para procesar una simulación de movimiento del objeto de aplicación durante un período de procesamiento de inercia actual, en el que la API de inercia proporciona una plataforma independiente de la aplicación para simular movimientos realistas independientes de un tipo de objeto de aplicación; recibir (650) un evento de inercia generado por la API de inercia que describe una manipulación del objeto basándose en la inercia simulada, en el que recibir el evento de inercia comprende recibir información que describe una transformación afín 2D del objeto de aplicación; y manejar (660) el evento de inercia recibido basándose en un efecto de la manipulación en un contexto de la aplicación modificando el objeto de aplicación, y comprendiendo además la API de inercia que recibe, desde la aplicación, una marca de tiempo que indica el tiempo que la aplicación desea que use la simulación.
Description
DESCRIPCIÓN
Simulación de inercia de objetos multitáctiles
Antecedentes
Un PC tipo tableta u ordenador con lápiz, es un ordenador portátil o móvil con forma de tableta táctil, equipado con una pantalla táctil o una tecnología híbrida de tableta/pantalla de gráficos que permite al usuario operar el ordenador con un lápiz óptico, un bolígrafo digital o con la punta del dedo en lugar de un teclado o ratón. Los PC tipo tableta ofrecen una forma de entrada más natural, puesto que dibujar y escribir son una forma de entrada mucho más familiar que un teclado y un ratón, especialmente para las personas que están comenzando a usar ordenadores. Los PC tipo tableta pueden también ser más accesibles porque aquellos que no pueden escribir físicamente pueden utilizar las características adicionales de un PC tipo tableta para poder interactuar con el mundo electrónico.
Multi-táctil (o multitáctil) denota un conjunto de técnicas de interacción que permiten a los usuarios de ordenadores controlar aplicaciones gráficas utilizando múltiples dedos o dispositivos de entrada (por ejemplo, lápiz óptico). Las implementaciones multitáctiles incluyen por lo general hardware táctil (por ejemplo, una pantalla, mesa, pared, etc.) y software que reconoce múltiples puntos táctiles simultáneos. Multitáctil contrasta con las pantallas táctiles tradicionales (por ejemplo, panel táctil del ordenador, cajero automático, quiosco de compras) que solo reconocen un punto táctil a la vez. El hardware multitáctil puede detectar toques utilizando calor, presión de los dedos, cámaras de captura de alta velocidad, luz infrarroja, captura óptica, inducción electromagnética sintonizada, receptores ultrasónicos, micrófonos transductores, telémetros láser, captura de sombras y otros mecanismos. Existen muchas aplicaciones para interfaces multitáctiles y los diseñadores y usuarios de aplicaciones proponen aún más. Algunos usos son individualistas (por ejemplo, Microsoft Surface, Apple iPhone, HTC Diamond). Como un nuevo procedimiento de entrada, multitáctil ofrece el potencial para nuevos paradigmas de experiencia de usuario.
Una aplicación no puede usar hardware multitáctil sin una interfaz para que el software de la aplicación reciba información del hardware multitáctil. Desafortunadamente, cada dispositivo de hardware multitáctil incluye su propia interfaz patentada y los autores de la aplicación deben tener un conocimiento específico de un dispositivo de hardware para escribir un software que funcione con el dispositivo. Por ejemplo, un proveedor de hardware multitáctil puede proporcionar un controlador en modo kernel y una interfaz de aplicación en modo usuario a través de la que las aplicaciones de software en modo usuario pueden comunicarse con el hardware multitáctil para recibir información táctil. El autor de una aplicación escribe el software que se comunica con la interfaz de la aplicación en modo de usuario, pero el software del autor de la aplicación solo funciona con ese hardware multitáctil. Un usuario del ordenador con un dispositivo de hardware multitáctil diferente no puede usar el software del autor de la aplicación a menos que el autor de la aplicación produzca una versión diferente del software que funcione correctamente con el dispositivo informático del usuario. Esto produce un mercado potencial muy limitado para los autores de aplicaciones, reduce el incentivo para escribir aplicaciones que admitan interacciones multitáctiles y mantiene el coste de los dispositivos más populares para los que hay mayor cantidad de aplicaciones disponibles.
Otro problema es la dificultad de las aplicaciones para determinar las intenciones de un usuario en función de la entrada táctil recibida del hardware multitáctil. La entrada táctil puede recibirse como una lista de coordenadas donde el hardware detecta la entrada táctil en cualquier momento dado. Cada aplicación debe incluir un software para interpretar las coordenadas y determinar la intención del usuario. Además, la intención del usuario puede extenderse más allá de la entrada táctil real recibida. El usuario puede esperar que los objetos virtuales se comporten como lo hacen en el mundo físico. Por ejemplo, un usuario puede esperar poder "arrojar" un archivo de un lado del escritorio a otro moviendo su dedo. Este tipo de movimiento no es compatible con las aplicaciones multitáctiles actuales, que esperarían que el usuario arrastre su dedo desde un lado de la pantalla hasta el otro. Incluso si una aplicación proporciona soporte para este tipo de movimiento, otras aplicaciones no podrían beneficiarse y, por lo tanto, los autores de la aplicación tendrían que repetir el trabajo del primer autor de la aplicación para ofrecer la misma funcionalidad en sus aplicaciones.
El documento WO 2006/020305 A2 desvela un procedimiento implementado por ordenador para proporcionar un movimiento realista de objetos manipulados usando entrada multitáctil, el procedimiento comprende las etapas de:
- determinar que un usuario ha soltado un objeto de aplicación eliminando uno o más contactos de un dispositivo de entrada multitáctil; y
- procesar una simulación de movimiento del objeto de aplicación durante un período de procesamiento de inercia actual, simulando así un movimiento realista independiente de un tipo de objeto de aplicación. Dicho documento desvela también la recepción de parámetros de simulación iniciales que proporcionan un último estado del objeto de aplicación cuando un usuario ha soltado el objeto de aplicación y un motor de simulación que realiza cálculos basándose en la física para determinar el comportamiento del objeto de aplicación basándose en los parámetros de simulación inicial. Además, desvela que la simulación del movimiento del objeto de aplicación con inercia incluye el movimiento del objeto correspondiente a una transformación afín 2D del objeto.
Dichas características se desvelan también en el documento US 2006/125799 A1.
El documento US 2008/168402 A1 desvela el uso de una API de interfaz de programación de aplicaciones en el mismo
contexto de movimiento de objetos GUI manipulados mediante entrada multitáctil. Desvela la invocación de una API para procesar un movimiento del objeto de aplicación, dicho movimiento corresponde a una transformación afín 2D del objeto de aplicación; dicha API procesa dicho movimiento independientemente de un tipo de objeto de aplicación.
Sumario
Un procedimiento implementado por ordenador, un sistema informático y un medio de almacenamiento legible por ordenador de acuerdo con la invención se establecen en las reivindicaciones 1, 6 y 10, respectivamente.
El sistema de inercia proporciona una plataforma común y una interfaz de programación de aplicaciones (API) para que las aplicaciones extiendan la entrada recibida de varios dispositivos de hardware multitáctiles para simular el comportamiento de los objetos en el mundo real. Las manipulaciones recibidas por la aplicación solo describen el movimiento de un objeto basándose en el movimiento de contactos con el hardware multitáctil. Sin embargo, para moverse de forma natural, los objetos deben exhibir también características físicas como la elasticidad y la desaceleración. Cuando un usuario levanta todos los contactos de un objeto, el sistema de inercia proporciona eventos de manipulación adicionales a la aplicación para que la aplicación pueda manejar los eventos como si el usuario todavía estuviera moviendo el objeto con el tacto. Sin embargo, el sistema de inercia en realidad genera los eventos basándose en una simulación del comportamiento de los objetos. Si el usuario mueve un objeto a otro objeto, el sistema de inercia envía eventos de manipulación basándose en las características límites de los objetos. Por lo tanto, el sistema de inercia proporciona un movimiento más realista para los objetos de aplicación que un usuario manipula utilizando el hardware multitáctil y la API proporciona una sensación consistente de las manipulaciones entre aplicaciones.
Este Sumario se proporciona para presentar una selección de conceptos de forma simplificada que se describen más adelante en la Descripción detallada. Este Sumario no tiene la intención de identificar características clave o características esenciales de la materia objeto reivindicada, ni pretende ser utilizado para limitar el alcance de la materia objeto reivindicada.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra los componentes del sistema de inercia, en una realización. La Figura 2 es un diagrama de flujo de datos que ilustra un entorno operativo convencional del sistema de inercia y el flujo de datos entre componentes, en una realización.
La Figura 3 es un diagrama de visualización que ilustra un objeto de aplicación manipulado por el tacto del usuario, en una realización. La Figura 4 es un diagrama de flujo que ilustra el procesamiento del bucle de entrada de una aplicación multitáctil que usa el sistema de inercia para manejar eventos de manipulación, en una realización. La Figura 5 es un diagrama de flujo que ilustra el procesamiento del sistema de inercia cuando el sistema recibe una entrada táctil, en una realización.
La Figura 6 es un diagrama de flujo que ilustra el procesamiento de una aplicación multitáctil que usa el sistema de inercia para procesar eventos de inercia, en una realización.
La Figura 7 es un diagrama de flujo que ilustra el procesamiento del componente de simulación del sistema de procesamiento de inercia, en una realización.
Descripción detallada
El sistema de inercia proporciona una plataforma y API común para que las aplicaciones extiendan la entrada recibida de varios dispositivos de hardware multitáctiles para simular el comportamiento de los objetos en el mundo real. Por ejemplo, los objetos del mundo real no suelen dejar de moverse cuando un usuario deja de empujarlos, sino que exhiben algo de inercia y continúan moviéndose hasta que la fricción los frena finalmente hasta detenerse. En algunas realizaciones, la entrada táctil pasa primero por un procedimiento para interpretar el movimiento de uno o más contactos como manipulaciones. Las manipulaciones se asignan más directamente a las intenciones del usuario que las entradas táctiles individuales y agregan soporte para la transformación básica de objetos utilizando múltiples contactos táctiles. Una aplicación puede utilizar manipulaciones para admitir el giro, el cambio de tamaño y la traslación de varios objetos (por ejemplo, fotos) al mismo tiempo. Las manipulaciones pueden describirse como transformaciones afines bidimensionales (2D) que contienen información de giro, escala (por ejemplo, zoom) y traslación (por ejemplo, panorámica).
Cada toque del hardware multitáctil se denomina contacto. Por ejemplo, cuando un usuario coloca su dedo en el hardware multitáctil, mueve su dedo y levanta el dedo, esa serie de eventos es un solo contacto. Por ejemplo, si el usuario mueve dos contactos más juntos o más separados, el sistema puede determinar que el usuario está escalando (por ejemplo, acercándose a o alejándose de) un objeto. Como otro ejemplo, si el usuario mueve múltiples contactos en un movimiento circular, entonces el sistema puede interpretar el movimiento como un giro de un objeto. Cada aplicación puede definir objetos que son relevantes de forma diferente, por lo que depende de la aplicación adjuntar una instancia del sistema (denominado procesador de manipulación) a cada objeto que un usuario puede manipular mediante la entrada táctil dentro de la aplicación. Por ejemplo, una aplicación de exploración de fotos puede adjuntar un procesador de manipulación a cada foto mostrada, de modo que el usuario pueda mover las fotos, escalarlas, girarlas, etc.
Las manipulaciones manejadas por la aplicación solo describen el movimiento de un objeto basándose en el movimiento de los contactos. Sin embargo, para moverse de forma natural, los objetos deben exhibir también características físicas como la elasticidad y la desaceleración. Cuando un usuario levanta todos los contactos de un objeto, el sistema de inercia proporciona eventos de manipulación adicionales a la aplicación para que la aplicación pueda manejar los eventos como si el usuario todavía estuviera moviendo el objeto con el tacto. Sin embargo, el sistema de inercia en realidad genera los eventos basándose en una simulación del comportamiento de los objetos. Por ejemplo, si el usuario ha levantado los contactos mientras el objeto tenía una velocidad en una dirección particular, entonces el sistema de inercia continúa enviando eventos que indican que el objeto se está moviendo en esa dirección, disminuyendo con el tiempo a medida que el objeto desacelera. Si el usuario mueve un objeto en otro objeto, como el borde de la pantalla, el sistema de inercia envía eventos de manipulación basándose en las características límites de los objetos. Por ejemplo, si el autor de una aplicación define dos objetos como elásticos, entonces los dos objetos pueden rebotar entre sí cuando un usuario mueve los objetos entre sí. Por lo tanto, el sistema de inercia proporciona un movimiento más realista para los objetos de aplicación que un usuario manipula utilizando el hardware multitáctil y la API proporciona una sensación consistente de las manipulaciones entre aplicaciones.
La Figura 1 es un diagrama de bloques que ilustra los componentes del sistema de inercia, en una realización. El sistema 100 de inercia incluye una interfaz 110 de hardware, uno o más procesadores 120 de manipulación, un componente 130 de transformación de entrada, un componente 140 de simulación y una interfaz 150 de aplicación. Cada uno de estos componentes se describe con más detalle en el presente documento.
La interfaz 110 de hardware se comunica con el hardware para recibir contactos y movimientos táctiles. La interfaz 110 de hardware puede incluir varios subcomponentes que trabajan juntos para proporcionar información de entrada táctil. Por ejemplo, el sistema operativo puede proporcionar un modelo de controlador común para los fabricantes de hardware multitáctil para proporcionar información táctil para su hardware particular. El sistema operativo puede traducir la información táctil recibida a través de este modelo en mensajes de ventana (por ejemplo, WM_TOUCH descrito en el presente documento) y pasar estos mensajes a la aplicación. Por lo tanto, la interfaz 110 de hardware puede implicar la coordinación del hardware, un controlador de hardware y una capa del sistema operativo. El resultado es una serie de mensajes al sistema de inercia que identifican un contacto particular (por ejemplo, el toque de un dedo) y las coordenadas del contacto a lo largo del tiempo. Por ejemplo, el sistema operativo puede proporcionar un mensaje cuando se establece un nuevo contacto en el hardware multitáctil, un mensaje cada vez que el contacto se mueve y un mensaje cuando el contacto se levanta del hardware multitáctil.
Uno o más procesadores 120 de manipulación usan el componente 130 de transformación de entrada para interpretar el movimiento de cada contacto asociado con un objeto de aplicación particular. El procesador 120 de manipulación puede determinar que un usuario está usando múltiples contactos para realizar una sola acción. Por ejemplo, un usuario podría tocar una foto con los cinco dedos de una mano y girar su mano para indicar una intención de girar la foto. El procesador 120 de manipulación recibe cinco contactos separados (uno para cada dedo) y el cambio en las coordenadas de cada contacto a medida que el usuario gira su mano. El procesador 120 de manipulación determina que cada contacto está agarrando el mismo objeto y realizando el mismo giro. El sistema informará a la aplicación que el usuario ha girado el objeto, pero la aplicación puede ignorar si el usuario usó dos, cinco o cualquier número particular de dedos u otros contactos para realizar el giro. Esto simplifica enormemente la creación de la aplicación porque el autor de la aplicación puede manejar esos tipos de manipulaciones que son relevantes para la aplicación y dejar que el sistema de inercia interprete el significado de cada entrada táctil de bajo nivel recibida del hardware multitáctil.
El procesador 120 de manipulación usa el componente 130 de transformación de entrada para hacer determinaciones sobre el significado de los movimientos recibidos de varios contactos, tanto solos como en concierto. Por ejemplo, si un usuario está manipulando una foto con dos dedos, lo que crea dos contactos de entrada correspondientes, entonces el procesador 120 de manipulación usa el componente 130 de transformación de entrada para determinar el significado de los movimientos relativos entre los dos contactos. Si los dos contactos se separan, entonces el componente 130 de transformación de entrada puede determinar que el usuario está escalando el objeto para cambiar el tamaño del objeto. Si los dos contactos giran, entonces el componente 130 de transformación de entrada puede determinar que el usuario está girando el objeto. Si los dos contactos se deslizan en una dirección particular, entonces el componente 130 de transformación de entrada puede determinar que el usuario está desplazando el objeto a una nueva ubicación. Aunque cada tipo de movimiento se describe por separado, tenga en cuenta que un usuario puede realizar los tres tipos de movimientos al mismo tiempo, y el procesador de transformación de entrada puede informar la transformación general a la aplicación. Por ejemplo, un usuario puede girar, escalar y desplazar un objeto todo en un solo movimiento.
El componente 140 de simulación simula el movimiento continuo de un objeto de aplicación después de que el usuario deja de tocar el objeto basándose en los parámetros de inicialización y en las restricciones definidas para el objeto. Una aplicación puede inicializar el componente 140 de simulación con el estado final del procesador 120 de manipulación asociado con el objeto. La aplicación puede definir también varias características del objeto, como el comportamiento de los límites del objeto. El componente 140 de simulación usa técnicas basándose en la física para simular el comportamiento del objeto durante un período después de que el usuario suelta el objeto. Por ejemplo, el componente 140 de simulación puede continuar activando notificaciones a la aplicación en la misma forma que los eventos de manipulación recibidos por la aplicación mientras el usuario estaba moviendo el objeto. La aplicación puede centrarse en reaccionar al movimiento del objeto en lugar de preocuparse por las acciones (físicas o de usuario) que causaron el movimiento del objeto. Los expertos en la materia reconocerán numerosas técnicas bien conocidas para
simular el comportamiento físico equivalente de los objetos virtuales en el software.
La interfaz 150 de aplicación se comunica con la aplicación para recibir información y proporcionar transformaciones de manipulación a la aplicación. La interfaz 150 de aplicación recibe información de inicialización de la aplicación. La información de inicialización puede especificar qué tipos de transformaciones admite el objeto de aplicación para un objeto particular y el procesador de manipulación asociado, así como los datos de inicialización para el componente 140 de simulación cuando el usuario ya no está moviendo el objeto. Por ejemplo, algunos objetos de aplicación pueden admitir escalado pero no giro. La información de inicialización puede especificar también un punto de pivote del objeto. El sistema de inercia proporciona transformaciones de manipulación a la aplicación a través de la interfaz de la aplicación. Por ejemplo, cuando el sistema de inercia recibe una entrada táctil de bajo nivel que el sistema interpreta como una transformación reconocida (por ejemplo, un giro), el sistema activa un evento para notificar a la aplicación sobre la manipulación. La aplicación procesa la transformación de manipulación para modificar el objeto en función de la transformación. Por ejemplo, si el usuario ha girado el objeto, entonces la aplicación puede almacenar la nueva orientación del objeto para usar la próxima vez que la aplicación muestre el objeto. Como otro ejemplo, si el objeto continúa girando después de que el usuario lo soltó basándose en los cálculos del componente 140 de simulación, entonces la aplicación puede almacenar la nueva orientación del objeto.
El dispositivo informático en el que se implementa el sistema puede incluir una unidad central de procesamiento, memoria, dispositivos de entrada (por ejemplo, teclado y apuntadores), dispositivos de salida (por ejemplo, dispositivos de visualización) y dispositivos de almacenamiento (por ejemplo, unidades de disco). Los dispositivos de memoria y almacenamiento son medios legibles por ordenador que pueden estar codificados con instrucciones ejecutables por ordenador que implementan el sistema, lo que significa un medio legible por ordenador que contiene las instrucciones. Además, las estructuras de datos y las estructuras de mensajes pueden almacenarse o transmitirse a través de un medio de transmisión de datos, como una señal en un enlace de comunicación. Se pueden utilizar varios enlaces de comunicación, como Internet, una red de área local, una red de área amplia, una conexión de acceso telefónico de punto a punto, una red de teléfono celular, etc.
Las realizaciones del sistema pueden implementarse en varios entornos operativos que incluyen ordenadores personales, ordenadores de servidor, dispositivos portátiles o de mano, sistemas multiprocesadores, sistemas basados en microprocesadores, electrónica de consumo programable, cámaras digitales, PC en red, miniordenadores, ordenadores centrales, entornos de computación distribuidos que incluyen cualquiera de los sistemas o dispositivos anteriores, y así sucesivamente. Los sistemas informáticos pueden ser teléfonos celulares, asistentes digitales personales, teléfonos inteligentes, ordenadores personales, productos electrónicos de consumo programables, cámaras digitales, etc.
El sistema puede describirse en el contexto general de instrucciones ejecutables por ordenador, tales como módulos de programa, ejecutados por uno o más ordenadores u otros dispositivos. En general, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc. que realizan tareas particulares o implementan tipos de datos abstractos particulares. Normalmente, la funcionalidad de los módulos de programa puede combinarse o distribuirse según se desee en diversas realizaciones.
La Figura 2 es un diagrama de flujo de datos que ilustra un entorno operativo convencional del sistema de inercia y el flujo de datos entre componentes, en una realización. Un dispositivo de hardware multitáctil produce entradas 210 a través de una interfaz de hardware. Por ejemplo, el hardware puede enviar las entradas 210 a un sistema operativo a través de un controlador de software proporcionado por el fabricante del hardware. La interfaz de hardware proporciona eventos 220 de entrada a una aplicación 230. Por ejemplo, una aplicación puede informar al sistema operativo que la aplicación 230 admite entrada de usuario multitáctil y registrarse para recibir mensajes relacionados con la entrada de usuario multitáctil. La aplicación 230 recibe información de entrada táctil de bajo nivel como cambios 240 de entrada y reenvía los cambios 240 de entrada a un sistema 250 de manipulación. Por ejemplo, los cambios 240 de entrada pueden describir cada movimiento de uno o más contactos táctiles con el hardware utilizando un conjunto de coordenadas que indican la posición actual de cada contacto y otras características de movimiento. El sistema 250 de manipulación interpreta los cambios 240 de entrada y notifica a la aplicación 230 el uno o más eventos 260 de manipulación que indican manipulaciones de nivel superior que el usuario está realizando en un objeto visualizado. Por ejemplo, si el movimiento de los contactos indica que el usuario tiene la intención de girar el objeto, los eventos 260 de manipulación indican un grado de giro.
Cuando el usuario termina de mover el objeto (por ejemplo, cuando la aplicación recibe una notificación de que cada contacto que toca un objeto se ha eliminado del hardware táctil), la aplicación 230 envía información 270 de inicialización al sistema 280 de inercia. El sistema 280 de inercia determina la siguiente posición del objeto y proporciona eventos 290 de inercia similares a los eventos 260 de manipulación que el sistema 250 de manipulación ha proporcionado cuando el usuario estaba moviendo el objeto. La aplicación 230 proporciona también un temporizador de activación para llamar periódicamente al sistema 280 de inercia para proporcionar la siguiente posición del objeto a través de los eventos 290 de inercia. La aplicación 230 procesa los eventos de inercia de manera similar a los eventos de manipulación.
Aunque el diagrama ilustra que la aplicación recibe primero la entrada táctil y pasa la entrada táctil al sistema de manipulación y la inercia, en algunas realizaciones, estos sistemas reciben entrada táctil directamente desde la interfaz
del hardware, interpretan la entrada táctil y proporcionan eventos de manipulación interpretados a la aplicación. Del mismo modo, la aplicación puede no saber que un sistema 280 de inercia separado proporciona eventos de inercia después de que un usuario deja de mover un objeto con el tacto, sino que puede recibir eventos de una interfaz durante el tiempo en que el usuario está moviendo el objeto y después cuando el objeto se está moviendo basándose en la inercia. Esto representa una arquitectura alternativa que proporciona una funcionalidad resultante similar pero le da a la aplicación menos control sobre el procesamiento de la entrada. Por ejemplo, la aplicación puede no ser capaz de definir objetos de aplicación individuales a los que el sistema conecta procesadores de manipulación individuales. El complemento RTS descrito aquí es un ejemplo de esta arquitectura alternativa para el sistema.
La Figura 3 es un diagrama de visualización que ilustra un objeto de aplicación manipulado por el tacto del usuario, en una realización. Una aplicación puede mostrar y recibir simultáneamente entradas táctiles para muchos de estos objetos. Por ejemplo, una aplicación de shell del sistema operativo puede mostrar uno o más objetos de documentos almacenados en el escritorio del ordenador del usuario. En la pantalla 310, el objeto 320 de documento representa un documento en el escritorio del usuario que el usuario desea arrastrar a la papelera 330 de reciclaje usando el tacto. El usuario realiza un movimiento de desplazamiento del objeto 320 de documento que da como resultado que el sistema procese una primera ubicación 340 de manipulación, una segunda ubicación 350 de manipulación y una tercera ubicación 360 de manipulación. La aplicación recibe la primera ubicación 340 de manipulación cuando el usuario toca inicialmente el objeto 320 de documento con uno o más dedos (es decir, contactos). La aplicación recibe la segunda ubicación 350 de manipulación cuando el usuario desliza sus dedos por la pantalla. La aplicación recibe la tercera ubicación de manipulación cuando el usuario levanta los dedos de la pantalla. Las flechas 365 representan los vectores del movimiento del objeto 320 de documento.
Sin inercia, el objeto 320 de documento se detendría en la tercera ubicación 360 de manipulación, que probablemente no sea lo que el usuario pretende. El sistema de inercia proporciona ubicaciones de manipulación adicionales a la aplicación como si el usuario todavía estuviera tocando y moviendo el objeto 320 de documento basándose en la velocidad 320 del objeto del documento cuando el usuario suelta el objeto 320 del documento. La aplicación recibe la primera ubicación de manipulación basándose en la inercia 370 cuando la aplicación inicializa el sistema de inercia y llama a la función de procesamiento del sistema de inercia por primera vez. La aplicación recibe la segunda ubicación de manipulación basándose en la inercia 380 a medida que la aplicación continúa llamando a la función de procesamiento del sistema de inercia. Debido a que la ubicación 380 de manipulación final del objeto 320 de documento está sobre la papelera 330 de reciclaje, la aplicación procesa el contacto entre los dos objetos (por ejemplo, colocando el objeto 320 de documento en la papelera 330 de reciclaje). En el ejemplo ilustrado, aunque el sistema de inercia desacelera el movimiento del objeto 320 de documento, el objeto 320 de documento todavía puede moverse una distancia considerable a través de la pantalla 310 en función de la alta velocidad inicial del movimiento del usuario del objeto 320 de documento al principio.
La Figura 4 es un diagrama de flujo que ilustra el procesamiento del bucle de entrada de una aplicación multitáctil que usa el sistema de inercia para manejar eventos de manipulación, en una realización. En el bloque 410, la aplicación recibe una entrada táctil de bajo nivel. Por ejemplo, un sistema operativo o instancia del sistema de inercia recibe información de contacto táctil del hardware multitáctil y reenvía la información de contacto táctil a la aplicación. En el bloque 420, la aplicación identifica el objeto al que se aplica la entrada. Por ejemplo, la aplicación puede probar las coordenadas de la entrada recibida comparando las coordenadas con las coordenadas de cada objeto de aplicación que se muestra en la aplicación. Si la entrada táctil está dentro de los límites de un objeto de aplicación visualizado, entonces la aplicación determina que la entrada táctil se aplica a ese objeto. En el bloque 430, la aplicación envía la entrada táctil recibida y la información sobre el objeto de aplicación identificado a una API de manipulación para invocar el sistema de inercia (véase Figura 5). Por ejemplo, la aplicación puede crear un identificador numérico para cada objeto de aplicación y pasar el identificador numérico al sistema de inercia cada vez que la entrada táctil corresponde a ese objeto.
En el bloque 440, la aplicación recibe un evento de manipulación del sistema de inercia que describe una o más manipulaciones del objeto de aplicación identificado. Por ejemplo, la aplicación puede recibir un evento que describe una transformación afín 2D del objeto de aplicación. Tenga en cuenta que el bloque 440 se ilustra en serie después del bloque 430 para simplificar la ilustración. En la práctica, la aplicación puede recibir muchos eventos de entrada táctil antes de que el sistema de inercia notifique a la aplicación con un evento de manipulación. No hay necesariamente un mapeo uno a uno de los eventos de entrada táctil a los eventos de manipulación. Debido a que los eventos de manipulación representan una interpretación de nivel superior de las entradas táctiles de bajo nivel, las entradas táctiles múltiples pueden formar un solo evento de manipulación. En el bloque 450, la aplicación maneja el evento de manipulación recibido. Por ejemplo, si el evento de manipulación recibido es una rotación, entonces la aplicación puede girar el objeto de aplicación en la pantalla y almacenar la nueva ubicación de los objetos de aplicación para su uso cuando el objeto de aplicación se muestre nuevamente. El sistema de inercia libera a la aplicación de realizar pasos específicos para un dispositivo de hardware multitáctil particular o incluso de saber qué dispositivo de hardware está proporcionando la entrada multitáctil. Además, el sistema de inercia libera a la aplicación del procesamiento del movimiento de contacto individual y permite que la aplicación se centre en el procesamiento de transformaciones a nivel del objeto de aplicación.
En el bloque 460, la aplicación espera la siguiente entrada táctil. Por ejemplo, la aplicación puede llamar a un API de mensaje proporcionado por el sistema operativo, como GetMessage en Microsoft Windows que espera a que se envíe
el siguiente mensaje a la cola de mensajes de la aplicación. En el bloque de decisión 470, si la aplicación recibe la siguiente entrada táctil, la aplicación realiza un bucle en el bloque 410 para procesar la entrada, de lo contrario, la aplicación realiza un bucle en el bloque 460 para continuar esperando una entrada adicional. Cuando la aplicación se cierra, la aplicación sale del bucle de entrada (no mostrado).
La Figura 5 es un diagrama de flujo que ilustra el procesamiento del sistema de inercia cuando el sistema recibe una entrada táctil, en una realización. En el bloque 505, el sistema recibe entrada táctil junto con información que identifica un objeto de aplicación con el que está asociada la entrada táctil. Por ejemplo, la entrada táctil puede incluir coordenadas u otra información de ubicación de uno o más contactos táctiles, y la información del objeto de aplicación puede incluir un identificador que la aplicación ha asignado a un objeto en particular en el que la entrada táctil está sobre el hardware multitáctil. En el bloque 510, el sistema identifica un procesador de manipulación asociado con el objeto de aplicación. En el bloque 520 de decisión, si el sistema no ha asociado previamente un procesador de manipulación con el objeto de aplicación, entonces el sistema continúa en el bloque 530, de lo contrario, el sistema continúa en el bloque 540. En el bloque 530, el sistema crea un procesador de manipulación y lo asocia con el objeto de aplicación, luego continúa en el bloque 540.
En el bloque 540 de decisión, si la entrada táctil recibida indica que la aplicación recibió un nuevo contacto (por ejemplo, un evento de contacto), entonces el sistema continúa en el bloque 550, de lo contrario, el sistema continúa en el bloque 560. Por ejemplo, un usuario puede hacer contacto inicial de un dedo con un objeto en pantalla o colocar otro dedo (es decir, contacto) en un objeto previamente tocado. En el bloque 550, el sistema agrega el nuevo contacto a la lista de contactos asociados con el procesador de manipulación, y luego continúa en el bloque 560. En el bloque 560 de decisión, si la entrada táctil recibida indica que la aplicación recibió notificación de que se eliminó un contacto táctil (por ejemplo, un evento de retoque), entonces el sistema continúa en el bloque 570, de lo contrario, el sistema continúa en el bloque 580. Por ejemplo, el usuario puede levantar uno o más dedos de un objeto previamente tocado. En el bloque 570, el sistema elimina el contacto de la lista de contactos asociados con el procesador de manipulación y luego continúa en el bloque 580. En el bloque 580, el sistema procesa la entrada táctil para determinar cualquier manipulación representada por la entrada táctil. Por ejemplo, el movimiento táctil puede indicar una manipulación de giro o traslación, mientras que la eliminación del contacto táctil puede indicar la finalización de una manipulación. En el bloque 590, el sistema activa un evento de manipulación para enviar información de transformación que describe la manipulación a la aplicación. Por ejemplo, el sistema puede proporcionar un grado de rotación angular del objeto a la aplicación. Después del bloque 590, estas etapas concluyen.
La Figura 6 es un diagrama de flujo que ilustra el procesamiento de una aplicación multitáctil que usa el sistema de inercia para procesar eventos de inercia, en una realización. En el bloque 610, la aplicación determina que el usuario ha soltado un objeto. Por ejemplo, después del manejo de un evento de manipulación en el bloque 450 de la Figura 4, la aplicación puede recibir una indicación de que la manipulación está completa o que el usuario ha levantado todos los contactos que estaban tocando un objeto de aplicación. En el bloque 620, la aplicación inicializa el sistema de inercia. Por ejemplo, la aplicación puede pasar una referencia al procesador de manipulación que manejaba el movimiento del objeto y otra información de inicialización. En el bloque 630, la aplicación establece un temporizador que controlará el período de procesamiento de inercia del sistema de inercia. Por ejemplo, la aplicación puede establecer un temporizador que se activará cada 100 milisegundos para procesar el siguiente incremento de movimiento de un objeto. En el bloque 640, la aplicación llama a la función de procesamiento del sistema de inercia (véase Figura 7). Por ejemplo, el sistema de inercia puede proporcionar una función de "procedimiento" que la aplicación llama para informar al sistema de inercia que es hora de realizar la simulación para el período desde el último período de simulación.
En el bloque 650, la aplicación recibe uno o más eventos de inercia que describen manipulaciones del objeto (por ejemplo, giro, traslación y/o escala) en función de la inercia simulada. Por ejemplo, si el objeto viajaba en una dirección particular, la aplicación puede recibir un evento de inercia que describe una manipulación de traducción en esa dirección. Como otro ejemplo, si el objeto se estaba expandiendo cuando el usuario lo liberó, la aplicación puede recibir un evento de inercia que describe una manipulación de escala. Tenga en cuenta que el bloque 650 se ilustra en serie después del bloque 640 para simplificar la ilustración. En la práctica, la aplicación puede llamar a la función de procesamiento de inercia varias veces antes de que el sistema de inercia notifique a la aplicación con un evento de inercia. No hay necesariamente un mapeo uno a uno de las llamadas a la función de procesamiento y los eventos de inercia. Por otro lado, el sistema de inercia puede notificar la aplicación de múltiples eventos de inercia después de una sola llamada a la función de procesamiento.
En el bloque 660, la aplicación maneja el evento de inercia recibido en función del significado (por ejemplo, un efecto) de la manipulación en el contexto de la aplicación particular. Por ejemplo, si el evento de inercia recibido es un giro, entonces la aplicación puede rotar el objeto de aplicación en la pantalla y almacenar los objetos de aplicación en una nueva ubicación para usar cuando la aplicación vuelve a mostrar el objeto de aplicación. En el bloque 670 de decisión, si los eventos de inercia están completos, estas etapas concluyen, de lo contrario, el sistema continúa en el bloque 680. El sistema de inercia puede informar a la aplicación que una manipulación simulada particular se completa como un valor de retorno de la función del procedimiento o mediante las notificaciones proporcionadas a la aplicación (por ejemplo, a través de una interfaz de evento del Modelo de Objetos Componentes (COM)). En el bloque 680, la aplicación espera la próxima activación del temporizador, luego realiza un bucle en el bloque 640 y llamar a la función de procesamiento del sistema de inercia.
La Figura 7 es un diagrama de flujo que ilustra el procesamiento del componente de simulación del sistema de procesamiento de inercia, en una realización. En el bloque 710, el componente recibe parámetros de simulación iniciales. Por ejemplo, una aplicación o procesador de manipulación puede proporcionar el estado final de un objeto de aplicación cuando un usuario dejó de tocar el objeto. En el bloque 720, el componente inicializa un motor de simulación que realiza cálculos basándose en la física para determinar el comportamiento de un objeto en función de los parámetros. Por ejemplo, el motor de simulación puede proporcionar un comportamiento realista de desaceleración o elasticidad para los objetos de aplicación puestos en movimiento por la entrada táctil del usuario. En el bloque 730, el componente recibe una llamada de procedimiento desde la aplicación. La aplicación u otro componente impulsan el procedimiento de simulación llamando repetidamente a una función de procesamiento a intervalos regulares para avanzar la simulación. El componente de simulación también puede generar internamente el temporizador.
En el bloque 740, el componente simula el movimiento del objeto en función de los parámetros iniciales, cualquier procesamiento anterior y el tiempo transcurrido desde la última llamada de procedimiento. La llamada de procedimiento puede proporcionar también una marca de tiempo que indica el tiempo que la aplicación desea que use la simulación. Esto permite que la aplicación simule el comportamiento de la aplicación en otro momento que no sea en tiempo real (por ejemplo, para pruebas o depuración de aplicaciones). En el bloque de decisión 750, si el movimiento se completa, entonces el componente continúa en el bloque 760, de lo contrario, el componente continúa en el bloque 770. El componente puede determinar que el movimiento se completa en función de factores como si el objeto todavía se está moviendo o si el movimiento del objeto ha caído por debajo de un cierto umbral. En el bloque 760, el componente establece un indicador de finalización en el próximo evento de inercia. En el bloque 770, el componente activa un evento de inercia para enviar información de transformación que describe el movimiento actual (por ejemplo, como una manipulación) a la aplicación. Por ejemplo, el sistema puede proporcionar un grado de rotación angular del objeto a la aplicación. Después del bloque 770, estas etapas concluyen.
En algunas realizaciones, el sistema de inercia recibe restricciones de objeto de aplicación. Por ejemplo, la aplicación puede definir la elasticidad de un objeto, el coeficiente de fricción (para determinar cómo se desacelera un objeto), las características límite del objeto, etc. Por ejemplo, el autor de una aplicación puede definir objetos rígidos que el usuario puede mover y un borde de ventana de aplicación que rebota, de modo que los objetos que se mueven al borde de la ventana rebotan desde el borde de la ventana cuando el usuario los suelta.
En algunas realizaciones, el sistema de inercia recibe información del estado del objeto inicial de un sistema de manipulación que estaba rastreando el movimiento del objeto cuando el usuario manipulaba el objeto con entrada táctil. Por ejemplo, el sistema de manipulación puede rastrear la posición actual de cada objeto, el movimiento histórico del objeto, la velocidad lineal y angular del objeto, y así sucesivamente. El autor de la aplicación puede proporcionar la salida de la manipulación al sistema de inercia para inicializar el sistema de inercia, de modo que el sistema de inercia pueda continuar sin problemas el movimiento pasado del objeto y ralentizarlo basándose en la física y las características apropiadas del objeto.
En algunas realizaciones, el sistema de inercia recibe límites en el movimiento de objetos desde la aplicación. Por ejemplo, el autor de la aplicación puede definir un límite superior en la distancia que un objeto puede moverse una vez que un usuario lo suelta. Como otro ejemplo, la aplicación puede definir un límite superior sobre cuánto tiempo puede moverse el objeto una vez que un usuario lo suelta. Estos y otros límites permiten al autor de la aplicación ajustar el sistema de inercia para adaptarse a los tipos de objetos manipulados por la aplicación y mejorar la experiencia del usuario con la aplicación.
En algunas realizaciones, el sistema de inercia no proporciona movimiento adicional para objetos con movimiento por debajo de un umbral predefinido. El umbral puede ser configurable por la aplicación. Por ejemplo, el sistema de inercia puede tener una velocidad lineal o angular de un objeto en particular por debajo de la que el sistema no continuará el movimiento del objeto después de que el usuario lo suelte. Si el objeto no se mueve muy rápido cuando el usuario lo suelta, el usuario puede esperar que el objeto se quede quieto y no continúe moviéndose. El umbral permite que la aplicación o el autor del sistema de inercia determinen el nivel de movimiento después de la manipulación que proporciona una buena experiencia de usuario.
En algunas realizaciones, el sistema de inercia recibe instrucciones para simular movimientos incrementales desde la aplicación. Por ejemplo, el sistema de inercia puede proporcionar una función de "procedimiento" o "DoWork" que la aplicación llama para indicar al sistema de inercia que realice una parte de la simulación general. El sistema de inercia puede esperar que la aplicación establezca un temporizador o, de lo contrario, llame periódicamente a la función para que el sistema de inercia simule el movimiento en el tiempo de acuerdo con una línea de tiempo natural. La aplicación puede afectar las características de los eventos de manipulación proporcionados por el sistema de inercia al variar la frecuencia con la que la aplicación llama a la función. En otras realizaciones, el sistema de inercia usa un temporizador interno para proporcionar eventos de manipulación en un horario regular hasta que cada objeto haya dejado de moverse (por ejemplo, debido a la desaceleración u otras fuerzas simuladas).
En algunas realizaciones, el sistema de inercia es parte de un sistema operativo basado en mensajes, y el sistema recibe mensajes relacionados con la entrada táctil que el sistema operativo recibe del hardware. Por ejemplo, al usar un paradigma similar a WM_MOUSEMOVE para mensajes de ratón, las versiones futuras de Microsoft Windows pueden proporcionar un mensaje WM_TOUCH que contiene información de movimiento táctil de bajo nivel recibida
del hardware multitáctil. El sistema operativo también puede proporcionar mensajes específicos, como WM_TOUCHDOWN (cuando se hace un nuevo contacto con el hardware multitáctil), WM_t Ou CHMOVE (cuando se mueve un contacto existente) y WM_TOUCHUP (cuando se levanta un contacto del hardware multitáctil). Una aplicación que recibe un mensaje relacionado con WM_TOUCH puede invocar el sistema de inercia y pasar el mensaje al sistema de inercia para su interpretación y procesamiento. A continuación, la aplicación recibe eventos de nivel superior que representan la interpretación del sistema de inercia de la manipulación prevista por el usuario en función de la información de movimiento táctil de bajo nivel recibida.
En algunas realizaciones, el sistema de inercia recibe información de movimiento táctil de bajo nivel de hardware especializado, como un lápiz óptico en tiempo real. Por ejemplo, el Kit de desarrollo de software (SDK) de Microsoft PC tipo tableta proporciona un componente de lápiz óptico en tiempo real (RTS) que los autores de aplicaciones pueden ampliar con ganchos. Los ganchos r Ts reciben entradas del hardware RTS y pueden realizar el procesamiento en la entrada recibida. El sistema de inercia puede proporcionar un gancho que una aplicación puede insertar en el componente RTS para procesar automáticamente r Ts y otras entradas para manipular los objetos de aplicación como se describe en el presente documento. El enlace RTS proporciona una forma diferente para que el sistema de inercia reciba la entrada, pero el sistema de inercia interpreta la entrada y activa eventos a la aplicación que describen manipulaciones implicadas por la entrada como se ha descrito anteriormente. Un usuario puede usar una combinación de lápiz y entrada táctil. Por ejemplo, el usuario puede dibujar un objeto con el lápiz y girar después el objeto con los dedos.
En algunas realizaciones, el sistema de inercia es parte de un control común que una aplicación puede invocar para proporcionar una interfaz de usuario común. Microsoft Windows proporciona controles comunes para mostrar listas, árboles, botones, etc. Del mismo modo, el sistema de inercia puede proporcionar un control multitáctil para manipular objetos de aplicación de las formas descritas en el presente documento. Por ejemplo, el sistema puede proporcionar un control de dispersión que permite al usuario mostrar uno o más objetos y manipular los objetos. El control de dispersión maneja el procesamiento de la entrada táctil de bajo nivel y asocia la entrada con un objeto de aplicación particular, y la aplicación recibe eventos del control para manejar las manipulaciones de los objetos de aplicación. Por ejemplo, si el control indica que el usuario ha cambiado el tamaño de un objeto, entonces la aplicación puede almacenar el nuevo tamaño de los objetos.
En algunas realizaciones, el sistema de inercia realiza el procesamiento descrito en el presente documento en tres dimensiones. Aunque en el presente documento se describe un hardware multitáctil bidimensional, los expertos en la materia reconocerán que el procesamiento del sistema descrito en el presente documento puede aplicarse igualmente bien a manipulaciones tridimensionales (3D) si el hardware está disponible para proporcionar un movimiento coordinado en tres dimensiones. Por ejemplo, el hardware que detecta presión o usa cámaras para detectar el movimiento 3D de los dedos de un usuario podría proporcionar las coordenadas de movimiento en la tercera dimensión al sistema de inercia, y el sistema de inercia podría producir transformaciones 3D que describan manipulaciones (por ejemplo, giro, escala y traslación) de objetos en múltiples direcciones 3D.
La siguiente tabla define una API que el sistema de inercia proporciona a las aplicaciones para proporcionar movimiento basándose en la inercia a los objetos de aplicación después del movimiento táctil de los objetos por parte del usuario.
continuación
_________________________
continuación
_________________________
En la tabla anterior, el sistema de inercia puede proporcionar los eventos enumerados en la misma interfaz en la que una aplicación estaba recibiendo eventos previamente en función del movimiento del usuario.
De lo anterior, se apreciará que las realizaciones específicas del sistema de inercia se han descrito en el presente documento con fines ilustrativos, pero que pueden realizarse diversas modificaciones sin desviarse del ámbito de la invención tal como se define en las reivindicaciones adjuntas. Por ejemplo, aunque el sistema se ha descrito en el contexto de manipulaciones multitáctiles, el sistema proporciona una simulación de inercia que podría usarse en otros contextos, como juegos y otras áreas donde la simulación se usa comúnmente. Por consiguiente, la invención no está limitada excepto por las reivindicaciones adjuntas.
Claims (14)
1. Un procedimiento implementado por ordenador para proporcionar un movimiento realista de objetos manipulados mediante entrada multitáctil, comprendiendo el procedimiento las siguientes etapas realizadas por una aplicación:
determinar (610) que un usuario ha liberado un objeto de aplicación definido por la aplicación eliminando uno o más contactos de un dispositivo de entrada multitáctil;
invocar (640) una interfaz de programación de aplicaciones API de inercia para procesar una simulación de movimiento del objeto de aplicación durante un período de procesamiento de inercia actual, en el que la API de inercia proporciona una plataforma independiente de la aplicación para simular movimientos realistas independientes de un tipo de objeto de aplicación;
recibir (650) un evento de inercia generado por la API de inercia que describe una manipulación del objeto basándose en la inercia simulada, en el que recibir el evento de inercia comprende recibir información que describe una transformación afín 2D del objeto de aplicación; y
manejar (660) el evento de inercia recibido basándose en un efecto de la manipulación en un contexto de la aplicación modificando el objeto de aplicación, y
comprendiendo además la API de inercia que recibe, desde la aplicación, una marca de tiempo que indica el tiempo que la aplicación desea que use la simulación.
2. El procedimiento de la reivindicación 1, que comprende además, después de determinar que el usuario ha liberado el objeto, inicializar el sistema de inercia pasando una referencia a un procesador de manipulación que estaba manejando el movimiento del objeto antes de que el usuario libere el objeto o después de determinar que el usuario ha liberado el objeto, inicializar el sistema de inercia pasando uno o más parámetros que describen un estado del objeto cuando el usuario ha liberado el objeto.
3. El procedimiento de la reivindicación 1, en el que la manipulación descrita por el evento de inercia incluye al menos una de una manipulación de giro, una manipulación de traslación y una manipulación de escala o en el que el evento de inercia recibido es un giro y en el que manejar el evento de inercia recibido comprende girar la aplicación objeto en una pantalla.
4. El procedimiento de la reivindicación 1, que comprende además establecer un temporizador que determina una duración del período de procesamiento de inercia, y en el que la aplicación invoca la API de inercia en cada activación del temporizador, en particular comprendiendo además recibir una indicación de la API de inercia de que la simulación se ha completado y el temporizador expira cuando se recibe la indicación.
5. El procedimiento de la reivindicación 1, en el que recibir el evento de inercia comprende recibir una notificación a través de una interfaz de evento COM.
6. Un sistema informático para manejar la entrada táctil desde hardware multitáctil, comprendiendo el sistema:
una interfaz (110) de hardware configurada para comunicarse con el hardware multitáctil para recibir información de contacto táctil y movimientos de los contactos táctiles;
uno o más procesadores (120) de manipulación configurados para gestionar la interpretación del movimiento de cada contacto asociado con un objeto de aplicación particular definido por una aplicación;
un componente (130) de transformación de entrada configurado para interpretar un significado de los movimientos recibidos de varios contactos para producir manipulaciones de objetos de aplicación;
un componente (140) de simulación configurado para simular el movimiento continuo del objeto de aplicación después de que un usuario deja de tocar el objeto; y
una interfaz (150) de aplicación configurada para comunicarse con la aplicación para recibir información de movimiento de contacto y proporcionar transformaciones afines 2D a la aplicación,
en el que el componente (140) de simulación está configurado además para recibir, desde la aplicación, una marca de tiempo que indica un tiempo que la aplicación desea que use la simulación.
7. El sistema de la reivindicación 6, en el que el componente de simulación está configurado además para recibir parámetros de inicialización desde una aplicación a través de la interfaz de la aplicación, en particular en el que los parámetros de inicialización son proporcionados por un procesador de manipulación que estaba manejando el objeto de aplicación antes de que el usuario dejara de tocar el objeto.
8. El sistema de la reivindicación 6, en el que el componente de simulación está configurado además para recibir restricciones de límites del objeto de aplicación o en el que el componente de simulación está configurado además para aplicar leyes de la física para determinar el movimiento continuo del objeto basándose en una velocidad y dirección de movimiento anteriores del objeto.
9. El sistema de la reivindicación 6, en el que el componente de transformación de entrada y el componente de simulación generan eventos en un formato similar para que la aplicación pueda manejar eventos de ambos componentes de forma similar.
10. Un medio de almacenamiento legible por ordenador codificado con instrucciones para controlar un sistema
informático para simular el movimiento de un objeto de aplicación definido por una aplicación y previamente movido por entrada multitáctil, mediante un procedimiento que comprende las etapas siguientes realizadas por un componente (140) de simulación:
recibir (710) uno o más parámetros de simulación iniciales que proporcionan un último estado del objeto de aplicación cuando un usuario suelta el objeto de aplicación;
inicializar (720) un motor de simulación que realiza cálculos basándose en la física para determinar el comportamiento del objeto de aplicación basándose en los parámetros de simulación iniciales;
recibir (730), desde la aplicación, una indicación de que ha pasado el período de simulación actual para hacer avanzar una simulación;
Simular (740) el movimiento del objeto de aplicación basándose en los parámetros iniciales, cualquier procesamiento previo y el tiempo transcurrido desde cualquier período de simulación anterior; y
activar (770) un evento de inercia para enviar información de transformación afín 2D que describe un movimiento actual del objeto de aplicación a la aplicación,
comprendiendo además recibir, desde la aplicación, una marca de tiempo que indica el tiempo que la aplicación desea que use la simulación.
11. El medio legible por ordenador de la reivindicación 10, en el que el motor de simulación simula un comportamiento de desaceleración realista para el objeto de aplicación después de que el usuario lo puso en movimiento al tocar el objeto.
12. El medio legible por ordenador de la reivindicación 10, en el que el motor de simulación simula un comportamiento de elasticidad realista para el objeto de aplicación cuando el objeto de aplicación se superpone con otro elemento en una pantalla.
13. El medio legible por ordenador de la reivindicación 10, en el que recibir la indicación de que ha pasado el período de simulación actual comprende recibir una llamada de la aplicación a una función de procesamiento de simulación.
14. El medio legible por ordenador de la reivindicación 11, que comprende además determinar si la simulación se ha completado y si la simulación se ha completado, informar a la aplicación que la simulación se ha completado.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/258,439 US8477103B2 (en) | 2008-10-26 | 2008-10-26 | Multi-touch object inertia simulation |
PCT/US2009/060977 WO2010048051A2 (en) | 2008-10-26 | 2009-10-16 | Multi-touch object inertia simulation |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2771356T3 true ES2771356T3 (es) | 2020-07-06 |
Family
ID=42117010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES09822481T Active ES2771356T3 (es) | 2008-10-26 | 2009-10-16 | Simulación de inercia de objetos multitáctiles |
Country Status (11)
Country | Link |
---|---|
US (5) | US8477103B2 (es) |
EP (1) | EP2342638B1 (es) |
JP (1) | JP5475792B2 (es) |
KR (1) | KR101597383B1 (es) |
CN (1) | CN102197377B (es) |
AR (1) | AR073981A1 (es) |
BR (1) | BRPI0919074A2 (es) |
ES (1) | ES2771356T3 (es) |
RU (1) | RU2534486C2 (es) |
TW (1) | TWI494795B (es) |
WO (1) | WO2010048051A2 (es) |
Families Citing this family (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8225231B2 (en) | 2005-08-30 | 2012-07-17 | Microsoft Corporation | Aggregation of PC settings |
US8086275B2 (en) | 2008-10-23 | 2011-12-27 | Microsoft Corporation | Alternative inputs of a mobile communications device |
US8411046B2 (en) | 2008-10-23 | 2013-04-02 | Microsoft Corporation | Column organization of content |
US8477103B2 (en) * | 2008-10-26 | 2013-07-02 | Microsoft Corporation | Multi-touch object inertia simulation |
US8466879B2 (en) | 2008-10-26 | 2013-06-18 | Microsoft Corporation | Multi-touch manipulation of application objects |
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 |
CN102947788A (zh) * | 2010-06-01 | 2013-02-27 | 日本电气株式会社 | 终端、处理选择方法、控制程序和记录介质 |
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 |
US9244545B2 (en) | 2010-12-17 | 2016-01-26 | Microsoft Technology Licensing, Llc | Touch and stylus discrimination and rejection for contact sensitive computing devices |
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 |
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 |
US8612874B2 (en) | 2010-12-23 | 2013-12-17 | Microsoft Corporation | Presenting an application change through a tile |
US8689123B2 (en) | 2010-12-23 | 2014-04-01 | Microsoft Corporation | Application reporting in an application-selectable user interface |
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 |
US8725443B2 (en) | 2011-01-24 | 2014-05-13 | Microsoft Corporation | Latency measurement |
US9201520B2 (en) | 2011-02-11 | 2015-12-01 | Microsoft Technology Licensing, Llc | Motion and context sharing for pen-based computing inputs |
US9542092B2 (en) | 2011-02-12 | 2017-01-10 | Microsoft Technology Licensing, Llc | Prediction-based touch contact tracking |
US8982061B2 (en) | 2011-02-12 | 2015-03-17 | Microsoft Technology Licensing, Llc | Angular contact geometry |
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 | 株式会社ワコム | マルチタッチ・マルチユーザ検出装置 |
US9104307B2 (en) | 2011-05-27 | 2015-08-11 | Microsoft Technology Licensing, Llc | Multi-application environment |
US20120304132A1 (en) | 2011-05-27 | 2012-11-29 | Chaitanya Dev Sareen | Switching back to a previously-interacted-with application |
US9158445B2 (en) | 2011-05-27 | 2015-10-13 | Microsoft Technology Licensing, Llc | Managing an immersive interface in a multi-application immersive environment |
US9658766B2 (en) | 2011-05-27 | 2017-05-23 | Microsoft Technology Licensing, Llc | Edge gesture |
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 |
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 |
US9378389B2 (en) | 2011-09-09 | 2016-06-28 | Microsoft Technology Licensing, Llc | Shared item account selection |
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 |
US9244802B2 (en) | 2011-09-10 | 2016-01-26 | Microsoft Technology Licensing, Llc | Resource user interface |
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 |
TWI456449B (zh) * | 2011-10-14 | 2014-10-11 | Acer Inc | 具有多個觸控介面的電子裝置以及利用多個觸控介面操控三維影像之方法 |
US9274642B2 (en) | 2011-10-20 | 2016-03-01 | Microsoft Technology Licensing, Llc | Acceleration-based interaction for multi-pointer indirect input devices |
US9658715B2 (en) | 2011-10-20 | 2017-05-23 | Microsoft Technology Licensing, Llc | Display mapping modes for multi-pointer indirect input devices |
JP5833906B2 (ja) * | 2011-12-13 | 2015-12-16 | 任天堂株式会社 | 情報処理プログラム、情報処理装置、情報処理システムおよび情報処理方法 |
KR101858608B1 (ko) * | 2011-10-28 | 2018-05-17 | 엘지전자 주식회사 | 이동 단말기 및 이동 단말기의 제어 방법 |
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 |
EP3783616B1 (en) * | 2012-02-24 | 2024-07-03 | Revvity Signals Software, Inc. | Systems, methods, and apparatus for drawing chemical structures using touch and gestures |
US9977876B2 (en) | 2012-02-24 | 2018-05-22 | Perkinelmer Informatics, Inc. | Systems, methods, and apparatus for drawing chemical structures using touch and gestures |
CN105159562A (zh) * | 2012-03-31 | 2015-12-16 | 北京奇虎科技有限公司 | 一种基于用户界面的操作触发方法、装置及终端设备 |
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 |
JP5983499B2 (ja) * | 2013-03-29 | 2016-08-31 | ソニー株式会社 | 表示制御装置、表示制御方法、およびプログラム |
US9450952B2 (en) | 2013-05-29 | 2016-09-20 | Microsoft Technology Licensing, Llc | Live tiles without application-code execution |
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 |
KR20160143784A (ko) | 2014-04-10 | 2016-12-14 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 컴퓨팅 디바이스용 슬라이더 커버 |
CN105378582B (zh) | 2014-04-10 | 2019-07-23 | 微软技术许可有限责任公司 | 计算设备的可折叠壳盖 |
US9727161B2 (en) | 2014-06-12 | 2017-08-08 | Microsoft Technology Licensing, Llc | Sensor correlation for pen and touch-sensitive computing device interaction |
US9870083B2 (en) | 2014-06-12 | 2018-01-16 | Microsoft Technology Licensing, Llc | Multi-device multi-user sensor correlation for pen and 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 |
US10678412B2 (en) | 2014-07-31 | 2020-06-09 | Microsoft Technology Licensing, Llc | Dynamic joint dividers for application windows |
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 |
US10642365B2 (en) * | 2014-09-09 | 2020-05-05 | Microsoft Technology Licensing, Llc | Parametric inertia and APIs |
US9674335B2 (en) | 2014-10-30 | 2017-06-06 | Microsoft Technology Licensing, Llc | Multi-configuration input device |
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 |
US10254857B2 (en) | 2016-03-06 | 2019-04-09 | Microsoft Technology Licensing, Llc | Soft touch detection of a stylus |
US10514803B2 (en) | 2016-03-06 | 2019-12-24 | Microsoft Technology Licensing, Llc | Pen in field force sensing calibration |
WO2017172647A1 (en) * | 2016-03-28 | 2017-10-05 | Apple Inc. | Multifunction device control of another electronic device |
US12093524B2 (en) | 2016-03-28 | 2024-09-17 | Apple Inc. | Multifunction device control of another electronic device |
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 | 广东工业大学 | 一种基于触摸点的位移矢量和方向矢量的控制方法 |
CN111344658A (zh) * | 2018-06-29 | 2020-06-26 | 深圳市汇顶科技股份有限公司 | 触摸屏调整方法、触控芯片及电子终端 |
Family Cites Families (150)
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 |
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 |
JP2827612B2 (ja) * | 1991-10-07 | 1998-11-25 | 富士通株式会社 | タッチパネル装置およびタッチパネル装置におけるオブジェクトの表示方法。 |
US6850252B1 (en) * | 1999-10-05 | 2005-02-01 | Steven M. Hoffberg | Intelligent electronic appliance system and method |
US5875108A (en) | 1991-12-23 | 1999-02-23 | Hoffberg; Steven M. | Ergonomic man-machine interface incorporating adaptive pattern recognition based control system |
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 |
US8479122B2 (en) | 2004-07-30 | 2013-07-02 | Apple Inc. | Gestures for touch sensitive input devices |
US7840912B2 (en) | 2006-01-30 | 2010-11-23 | Apple Inc. | Multi-touch gesture dictionary |
EP1717679B1 (en) * | 1998-01-26 | 2016-09-21 | Apple Inc. | Method for integrating manual input |
US20070177804A1 (en) * | 2006-01-30 | 2007-08-02 | Apple Computer, Inc. | Multi-touch gesture dictionary |
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 |
KR101270847B1 (ko) * | 2004-07-30 | 2013-06-05 | 애플 인크. | 터치 감지 입력 장치용 제스처 |
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 |
US20060077183A1 (en) * | 2004-10-08 | 2006-04-13 | Studt Peter C | Methods and systems for converting touchscreen events into application formatted data |
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 |
WO2007079425A2 (en) | 2005-12-30 | 2007-07-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 |
US9007299B2 (en) * | 2006-07-14 | 2015-04-14 | Ailive Inc. | Motion control used as controlling device |
US20120208639A1 (en) * | 2006-07-14 | 2012-08-16 | Ailive Inc. | Remote control with motion sensitive devices |
US20080030486A1 (en) | 2006-08-04 | 2008-02-07 | Quiteso Technologies, Llc | Multi-functional pen input device |
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 |
US8106856B2 (en) | 2006-09-06 | 2012-01-31 | Apple Inc. | Portable electronic device for photo management |
KR100774927B1 (ko) * | 2006-09-27 | 2007-11-09 | 엘지전자 주식회사 | 이동통신 단말기, 메뉴 및 아이템 선택방법 |
WO2008045464A2 (en) * | 2006-10-10 | 2008-04-17 | 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 |
US9311528B2 (en) * | 2007-01-03 | 2016-04-12 | Apple Inc. | Gesture learning |
US8970501B2 (en) | 2007-01-03 | 2015-03-03 | Apple Inc. | Proximity and multi-touch sensor detection and demodulation |
US8970503B2 (en) * | 2007-01-05 | 2015-03-03 | Apple Inc. | Gestures for devices having one or more touch sensitive surfaces |
US7956847B2 (en) * | 2007-01-05 | 2011-06-07 | Apple Inc. | Gestures for controlling, manipulating, and editing of media files using touch sensitive devices |
US7907125B2 (en) | 2007-01-05 | 2011-03-15 | Microsoft Corporation | Recognizing multiple input point gestures |
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 |
US20080168402A1 (en) * | 2007-01-07 | 2008-07-10 | Christopher Blumenberg | Application Programming Interfaces for Gesture Operations |
US7844915B2 (en) | 2007-01-07 | 2010-11-30 | Apple Inc. | Application programming interfaces for scrolling operations |
US20080168478A1 (en) | 2007-01-07 | 2008-07-10 | Andrew Platzer | Application Programming Interfaces for Scrolling |
US7903115B2 (en) | 2007-01-07 | 2011-03-08 | Apple Inc. | Animations |
US7872652B2 (en) | 2007-01-07 | 2011-01-18 | Apple Inc. | Application programming interfaces for synchronization |
US8656311B1 (en) | 2007-01-07 | 2014-02-18 | Apple Inc. | Method and apparatus for compositing various types of content |
US8674948B2 (en) * | 2007-01-31 | 2014-03-18 | 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 |
US20090184939A1 (en) * | 2008-01-23 | 2009-07-23 | 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 |
WO2009108334A2 (en) * | 2008-02-28 | 2009-09-03 | New York University | Method and apparatus for providing input to a processor, and a sensor pad |
US8717305B2 (en) * | 2008-03-04 | 2014-05-06 | Apple Inc. | Touch event model for web pages |
US8416196B2 (en) | 2008-03-04 | 2013-04-09 | Apple Inc. | Touch event model programming interface |
KR101755207B1 (ko) * | 2008-03-05 | 2017-07-19 | 더 보드 오브 트러스티즈 오브 더 유니버시티 오브 일리노이 | 펴고 접을 수 있는 전자장치 |
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 |
WO2010006277A1 (en) * | 2008-07-11 | 2010-01-14 | 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 |
US8416206B2 (en) * | 2009-07-08 | 2013-04-09 | Smart Technologies Ulc | Method for manipulating a graphic widget in a three-dimensional environment displayed on a touch panel of an interactive input system |
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 |
-
2008
- 2008-10-26 US US12/258,439 patent/US8477103B2/en active Active
-
2009
- 2009-10-02 TW TW098133607A patent/TWI494795B/zh not_active IP Right Cessation
- 2009-10-16 CN CN200980143575.6A patent/CN102197377B/zh active Active
- 2009-10-16 BR BRPI0919074A patent/BRPI0919074A2/pt not_active Application Discontinuation
- 2009-10-16 KR KR1020117009026A patent/KR101597383B1/ko active IP Right Grant
- 2009-10-16 ES ES09822481T patent/ES2771356T3/es active Active
- 2009-10-16 JP JP2011533249A patent/JP5475792B2/ja active Active
- 2009-10-16 RU RU2011116315/08A patent/RU2534486C2/ru active
- 2009-10-16 EP EP09822481.9A patent/EP2342638B1/en active Active
- 2009-10-16 WO PCT/US2009/060977 patent/WO2010048051A2/en active Application Filing
- 2009-10-26 AR ARP090104120A patent/AR073981A1/es active IP Right Grant
-
2013
- 2013-06-17 US US13/919,957 patent/US9189096B2/en active Active
-
2015
- 2015-10-16 US US14/884,770 patent/US9582140B2/en active Active
-
2017
- 2017-01-20 US US15/411,617 patent/US9898190B2/en active Active
-
2018
- 2018-01-04 US US15/862,127 patent/US10503395B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20180129410A1 (en) | 2018-05-10 |
CN102197377B (zh) | 2014-10-22 |
US9189096B2 (en) | 2015-11-17 |
RU2534486C2 (ru) | 2014-11-27 |
EP2342638A2 (en) | 2011-07-13 |
WO2010048051A3 (en) | 2010-07-22 |
US9582140B2 (en) | 2017-02-28 |
EP2342638A4 (en) | 2017-03-15 |
AR073981A1 (es) | 2010-12-15 |
US20160034136A1 (en) | 2016-02-04 |
RU2011116315A (ru) | 2012-10-27 |
TWI494795B (zh) | 2015-08-01 |
EP2342638B1 (en) | 2020-01-01 |
WO2010048051A2 (en) | 2010-04-29 |
BRPI0919074A2 (pt) | 2015-12-15 |
KR101597383B1 (ko) | 2016-02-24 |
CN102197377A (zh) | 2011-09-21 |
US20170168708A1 (en) | 2017-06-15 |
US9898190B2 (en) | 2018-02-20 |
TW201019176A (en) | 2010-05-16 |
US10503395B2 (en) | 2019-12-10 |
JP5475792B2 (ja) | 2014-04-16 |
JP2012507077A (ja) | 2012-03-22 |
KR20110074990A (ko) | 2011-07-05 |
US20100103118A1 (en) | 2010-04-29 |
US20130285961A1 (en) | 2013-10-31 |
US8477103B2 (en) | 2013-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2771356T3 (es) | Simulación de inercia de objetos multitáctiles | |
ES2800976T3 (es) | Manipulación multitáctil de objetos de aplicación | |
US11379105B2 (en) | Displaying a three dimensional user interface | |
JP6074170B2 (ja) | 近距離動作のトラッキングのシステムおよび方法 | |
CN108595010B (zh) | 虚拟现实中虚拟物体的交互方法及装置 | |
EP4439245A1 (en) | Improved touchless user interface for computer devices | |
WO2024200685A1 (en) | Improved touchless user interface for computer devices | |
CN104951051A (zh) | 一种信息处理方法和电子设备 |