Multi-touch object inertia simulation
First Claim
1. A method performed by a computing device, the computing device comprising processing hardware, storage hardware, and an input device, the input device configured to detect multiple concurrent input points, the method comprising:
- executing an operating system, the operating system controlling execution of an application by the processing hardware, the application comprising a graphic object, a manipulation processor, and an inertia simulator;
receiving, from the operating system, inputs, the inputs comprising two-dimensional location information corresponding to respective input points detected by the input device and corresponding to a stroke inputted by physical contact with the input device;
in accordance with logic of the application that links the manipulation processor with the inputs, passing the inputs from the application to the manipulation processor until the inputs are determined to have terminated;
receiving, by the application, manipulation notifications generated by the manipulation processor, each manipulation notification comprising a respective geometric transform derived by the manipulation processor interpreting the two-dimensional location information of the inputs;
based on a signal sent from the manipulation processor, the signal sent based on the manipulation processor determining from the inputs that the stroke has terminated, initializing the inertia simulator with initialization information that is based on motion information provided by the manipulation processor;
applying, by the application, the geometric transforms of the manipulation notifications to the graphic object displayed by the computing device, wherein each application of a geometric transform results in display of a corresponding graphical transformation of the graphic object on the display, wherein, before the inputs terminate, the graphical transformations correspond to the inputs; and
after the initializing, displaying the graphic object according to inertial movements computed by the inertia simulator based on the initialization information.
1 Assignment
0 Petitions
Accused Products
Abstract
The inertia system provides a common platform and application-programming interface (API) for applications to extend the input received from various multi-touch hardware devices to simulate real-world behavior of application objects. To move naturally, application objects should exhibit physical characteristics such as elasticity and deceleration. When a user lifts all contacts from an object, the inertia system provides additional manipulation events to the application so that the application can handle the events as if the user was still moving the object with touch. The inertia system generates the events based on a simulation of the behavior of the objects. If the user moves an object into another object, the inertia system simulates the boundary characteristics of the objects. Thus, the inertia system provides more realistic movement for application objects manipulated using multi-touch hardware and the API provides a consistent feel to manipulations across applications.
52 Citations
24 Claims
-
1. A method performed by a computing device, the computing device comprising processing hardware, storage hardware, and an input device, the input device configured to detect multiple concurrent input points, the method comprising:
-
executing an operating system, the operating system controlling execution of an application by the processing hardware, the application comprising a graphic object, a manipulation processor, and an inertia simulator; receiving, from the operating system, inputs, the inputs comprising two-dimensional location information corresponding to respective input points detected by the input device and corresponding to a stroke inputted by physical contact with the input device; in accordance with logic of the application that links the manipulation processor with the inputs, passing the inputs from the application to the manipulation processor until the inputs are determined to have terminated; receiving, by the application, manipulation notifications generated by the manipulation processor, each manipulation notification comprising a respective geometric transform derived by the manipulation processor interpreting the two-dimensional location information of the inputs; based on a signal sent from the manipulation processor, the signal sent based on the manipulation processor determining from the inputs that the stroke has terminated, initializing the inertia simulator with initialization information that is based on motion information provided by the manipulation processor; applying, by the application, the geometric transforms of the manipulation notifications to the graphic object displayed by the computing device, wherein each application of a geometric transform results in display of a corresponding graphical transformation of the graphic object on the display, wherein, before the inputs terminate, the graphical transformations correspond to the inputs; and after the initializing, displaying the graphic object according to inertial movements computed by the inertia simulator based on the initialization information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computing device comprising:
-
a contact sensitive surface; a display; processing hardware; storage hardware storing a software platform and an application; the software platform comprising an API, the software platform accessible by arbitrary applications executing on the computing device, the software platform comprising input interpretation logic and inertia simulation logic, wherein instances of the input interpretation logic and inertia simulation logic are instantiable by the arbitrary applications using the API; the application comprising a graphic object, the application configured to display the graphic object on the display, the application further configured to use the API to instantiate an instance of the input interpretation logic and an instance of the inertia simulation logic; the application configured to receive points corresponding to a user'"'"'s movements of a physical contact point on the contact sensitive surface; the application configured to receive a sequence of transform events, each transform event comprising movement information, wherein the movement information in the transform events in the sequence is computed by the instance of the interpretation logic receiving, storing, and interpreting the points, and deriving from the points corresponding movement information that corresponds to physical movement of the physical contact point on the contact sensitive surface; the application configured to move the graphic object on the display according to the movement information in the sequence of transform events; and the application further configured to initiate inertial simulation by the instance of the inertia simulation logic with velocity information provided by the instance of the input interpretation logic, the velocity information corresponding to termination of the points, the application further configured to continue to move the graphic object on the display according to the inertial simulation of the instance of the inertia simulation logic as initialized with the velocity information. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. A computing device comprising:
-
a contact-sensitive surface; a display; processing hardware; storage hardware storing instructions executable by the processing hardware of the computing device, the instructions configured to cause the processing hardware to perform a process, the process comprising; providing a first module and a second module for an application executing on the computing device, the first module and the second module invoked through one or more APIs that are accessible to applications executing on the computing device; and computing, by the application, affine transform events and manipulating, by the application, a graphic object displayed by the display according to the affine transform events, wherein some of the affine transform events are computed by the first module receiving and tracking locations of an input point on the contact-sensitive surface and wherein other of the affine transform events are computed by the second module simulating inertial affine transforms for the graphic object, each affine transform event comprising a translation and/or rotation and/or scale transform, wherein the locations are provided by the contact-sensitive surface sensing the input point. - View Dependent Claims (19, 20, 21, 22, 23, 24)
-
Specification