Моделирование инерции объектов при вводе множественным касанием
Иллюстрации
Показать всеИзобретение относится к области управления графическим приложением пользователя с использованием технологии множественного касания (multi-touch). Техническим результатом является обеспечение более реалистичного движения объектов приложений, управляемых с использованием аппаратного обеспечения multi-touch. Способ содержит этапы, на которых: определяют, что пользователь высвободил объект приложения, путем удаления одного или более контактов, связанных с вводом множественным касанием, с поверхности сенсорного ввода, при этом объект приложения отображается на дисплее; после данного определения вызывают инерционный интерфейс прикладного программирования (API), исполняющийся на компьютерном устройстве, для обработки моделирования перемещения объекта приложения для текущего периода обработки инерции; принимают посредством приложения инерционное событие, сгенерированное инерционным API после упомянутого определения, причем инерционное событие описывает воздействие на объект на основе смоделированной инерции; и обрабатывают принимаемое инерционное событие на основе эффекта упомянутого воздействия в контексте приложения путем изменения объекта приложения и отображения объекта приложения на дисплее соответственным образом. 3 н. и 17 з.п. ф-лы, 7 ил., 1 табл.
Реферат
Уровень техники
Планшетный компьютер или компьютер со световым пером, является ноутбуком или мобильным компьютером в форме планшета, оснащенный сенсорным экраном или графической гибридной технологией планшет/экран, которая позволяет пользователю работать на компьютере с помощью стилуса, цифрового пера или пальцев вместо клавиатуры или мыши. Планшетные компьютеры предлагают более естественные формы ввода, такие, как зарисовывание и запись от руки, которые являются гораздо более привычными формами ввода, чем клавиатура и мышь, особенно для людей, которые мало знакомы с компьютерами. Планшетные компьютеры также могут быть более доступны, поскольку те люди, которые физически не в состоянии использовать клавиши, могут использовать дополнительные функции планшетного компьютера, чтобы иметь возможность взаимодействовать с электронным миром.
Технология multi-touch или multitouch (мультитач) обозначает множество способов взаимодействия, которые позволяют пользователям компьютеров управлять графическими приложениями с использованием нескольких пальцев или устройств ввода (например, стилуса). Осуществления технологии multi-touch обычно включают сенсорное аппаратное обеспечение (например, экран, стол, стену и так далее) и программное обеспечение, которое распознает несколько одновременных точек касания. Технология multi-touch отличается от традиционных сенсорных экранов (например, компьютерная сенсорная панель, ATM, торговый киоск), которые могут распознавать только одну точку касания в один момент времени. Аппаратное обеспечение технологии multi-touch может определять касания с использованием тепла, давления пальцев, камер с высокой скоростью захвата, инфракрасного света, оптического захвата, настраиваемой электромагнитной индукции, ультразвуковых приемников, микрофонов преобразователей, лазерных дальномеров, захвата тени и других механизмов. Существует много приложений для multi-touch интерфейсов, и разработчики и пользователи приложений предлагают еще больше. Некоторые использования являются индивидуалистическими (например, Microsoft Surface, Apple iPhone, HTC Diamond). Как новый способ ввода, способ multi-touch открывает возможности для новых парадигм работы пользователей.
Приложение не может использовать аппаратное обеспечение multi-touch без интерфейса для программного обеспечения приложения для приема информации от аппаратного обеспечения multi-touch. К сожалению, каждое устройство с аппаратным обеспечением multi-touch включает в себя свой собственный интерфейс и авторы приложения должны иметь определенные знания аппаратного обеспечения устройства для записи программного обеспечения, которое работает с устройством. Например, провайдер аппаратного обеспечения multi-touch может предоставить драйвер режима ядра (kernel-mode) и интерфейс приложения пользовательского режима (user-mode), через который приложения с программным обеспечением пользовательского режима могут связываться с аппаратным обеспечением multi-touch для приема информации о касаниях. Авторы приложений записывают программное обеспечение, которое связывается с интерфейсом приложения пользовательского режима, но программное обеспечение автора приложения работает только с этим аппаратным обеспечением multi-touch. Пользователь компьютера с устройством с различным аппаратным обеспечением multi-touch не может использовать программное обеспечение автора приложения, кроме случая, когда автор приложения производит различную версию программного обеспечения, которая работает корректно с устройством компьютера пользователя. Это обеспечивает очень ограниченный потенциал рынка для авторов приложений, снижает стимулы для создания приложений, поддерживающих взаимодействия multi-touch, и сохраняет стоимость наиболее популярных устройств высокой, для которых наибольшее число приложений доступно.
Другой проблемой является трудность для приложений определить намерения пользователя на основе сенсорного ввода, принимаемого от аппаратного обеспечения multi-touch. Сенсорный ввод может приниматься как список координат, где аппаратное обеспечение воспринимает сенсорный ввод в любой момент времени. Каждое приложение должно включать в себя программное обеспечение, чтобы интерпретировать координаты и определять намерение пользователя. Кроме того, намерение пользователя может распространяться за пределы принятого фактического сенсорного ввода. Пользователь может ожидать поведения виртуальных объектов, как они ведут себя в физическом мире. Например, пользователь может ожидать, чтобы быть в состоянии "бросить" файл с одной стороны рабочего стола на другую, щелкая его/ее пальцем. Этот тип движения не поддерживается существующими приложениями multi-touch, которые будут ожидать, чтобы пользователь перетащил его/ее пальцем с одной стороны экрана весь путь до другой. Даже если одно приложение обеспечивает поддержку этого типа движения, то другие приложения не могут этим воспользоваться, и таким образом авторам приложений придется повторить работу автора первого приложения, чтобы предложить ту же функциональность в своих приложениях.
Сущность изобретения
Инерционная система обеспечивает общую платформу и прикладной программный интерфейс (application-programming interface, API) для приложений для расширения ввода, принимаемого от различных устройств с аппаратным обеспечением multi-touch для моделирования реального поведения объектов. Манипуляции, принимаемые посредством приложения, только описывают движения объекта на основе движения контактов с аппаратным обеспечением multi-touch. Однако чтобы двигаться естественно, объекты должны также проявлять физические характеристики, такие, как упругость и торможение. Когда пользователь поднимает все контакты от объекта, инерционная система обеспечивает дополнительные манипуляционные события с приложением так, что приложение может обрабатывать события, как если бы пользователь еще двигал объект с помощью касания. Однако инерционная система фактически генерирует события на основе моделирования поведения объектов. Если пользователь перемещает объект в другой объект, инерционная система передает манипуляционные события на основе характеристик границ объектов. Таким образом, инерционная система обеспечивает более реалистичное движение для объектов приложений, которыми манипулирует пользователь с использованием аппаратного обеспечения multi-touch, и API обеспечивает соответствующее ощущение для манипуляций в различных приложениях.
Эта Сущность изобретения предоставлена, чтобы представить набор концепций в упрощенной форме, которые далее рассматриваются в Подробном описании. Эта Сущность изобретения не предназначена для идентификации ключевых функций или существенных функций заявленного предмета изобретения, она также не предназначена для ограничения области заявленного предмета изобретения.
Краткое описание чертежей
Фиг. 1 является блок-схемой, которая иллюстрирует компоненты инерционной системы, в одном варианте осуществления.
Фиг. 2 является схемой потока данных, которая иллюстрирует типичную операционную среду инерционной системы и поток данных между компонентами, в одном варианте осуществления.
Фиг. 3 является схемой дисплея, которая иллюстрирует объект приложения, манипулируемый касанием пользователя, в одном варианте осуществления.
Фиг. 4 является блок-схемой последовательности операций, которая иллюстрирует обработку цикла ввода приложения multi-touch с использованием инерционной системы для обработки манипуляционных событий, в одном варианте осуществления.
Фиг. 5 является блок-схемой последовательности операций, которая иллюстрирует обработку инерционной системы, когда система принимает сенсорный ввод, в одном варианте осуществления.
Фиг. 6 является блок-схемой последовательности операций, которая иллюстрирует обработку приложения multi-touch с использованием инерционной системы для обработки инерционных событий, в одном варианте осуществления.
Фиг. 7 является блок-схемой последовательности операций, которая иллюстрирует обработку компоненты моделирования инерционной системы обработки, в одном варианте осуществления.
Подробное описание
Инерционная система обеспечивает общую платформу и API для приложений для расширения ввода, принимаемого от различных устройств с аппаратным обеспечением multi-touch, для моделирования реального поведения объектов. Например, реальные объекты, как правило, не прекращают движение, когда пользователь прекращает толкать их, а проявляют некоторую инерцию и продолжают двигаться, пока трение не замедляет их до остановки. В некоторых вариантах осуществления, сенсорный ввод сначала проходит процесс интерпретации движения одного или более контактов как манипуляций. Манипуляции отображаются более явно в намерения пользователя, чем отображаются индивидуальные сенсорные вводы, и добавляют поддержку для основной трансформации объектов с использованием нескольких сенсорных контактов. Приложение может использовать манипуляции для поддержки вращения, изменения размера и преобразование нескольких объектов (например, фотографий) в то же время. Манипуляции могут быть описаны как двухмерные (2D) аффинные преобразования, которые содержат информацию вращения, масштабирования (например, увеличения) и преобразования (например, панорамирования).
Каждое прикосновение аппаратного обеспечения multi-touch называется контактом. Например, когда пользователь устанавливает его/ее палец на аппаратное обеспечение multi-touch, перемещает его/ее палец вокруг, и поднимает его/ее палец, эта последовательность событий является отдельным контактом. Например, если пользователь перемещает два контакта ближе друг к другу или дальше друг от друга, система может определить, что пользователь осуществляет масштабирование (например, масштабирования в или из) объекта. В качестве другого примера, если пользователь перемещает несколько контактов в круговом движении, тогда система может интерпретировать движение как вращение объекта. Каждое приложение может определять объекты, которые относятся по-разному, так что приложение решает присоединить событие системы (называемой манипуляционным процессором) к каждому объекту, чтобы пользователь мог манипулировать с использованием сенсорного ввода в приложении. Например, приложения просмотра фотографий могут присоединять манипуляционный процессор к каждой отображаемой фотографии, так что пользователь может перемещать фотографии вокруг, масштабировать фотографии, вращать фотографии и т.д.
Манипуляции, обрабатываемые посредством приложения, только описывают движения объекта на основе движения контактов. Однако чтобы двигаться естественно, объекты должны также проявлять физические характеристики, такие, как упругость и замедление. Когда пользователь поднимает все контакты от объекта, инерционная система обеспечивает дополнительные манипуляционные события для приложения, так что приложение может обрабатывать события, как если бы пользователь еще перемещал объект с помощью прикосновения. Однако инерционная система фактически генерирует события на основе моделирования поведения объектов. Например, если пользователь поднял контакты, пока у объекта была скорость в определенном направлении, тогда инерционная система продолжает отправку событий, которые указывают, что объект перемещается в этом направлении, замедляя во времени, как объект замедляется. Если пользователь перемещает объект в другой объект, такой, как край экрана, инерционная система передает манипуляционные события на основе характеристик границ объектов. Например, если автор приложения определяет два объекта как упругие, тогда два объекта могут отскакивать друг от друга, когда пользователь перемещает объекты друг в друга. Таким образом, инерционная система обеспечивает более реалистичное движение для объектов приложений, которыми манипулирует пользователь с использованием аппаратного обеспечения multi-touch, и API обеспечивает согласованное чувство для манипуляции в различных приложениях.
Фиг. 1 является блок-схемой, которая иллюстрирует компоненты инерционной системы, в одном варианте осуществления. Инерционная система 100 включает интерфейс 110 аппаратного обеспечения, один или более манипуляционных процессоров 120, компоненту 130 преобразования ввода, компоненту 140 моделирования и интерфейс 150 приложения. Каждая из этих компонент описывается более подробно здесь.
Интерфейс 110 аппаратного обеспечения связывается с аппаратным обеспечением для приема контактов прикосновений и перемещений. Интерфейс 110 аппаратного обеспечения может включать в себя несколько субкомпонент, которые могут работать вместе, чтобы обеспечить информацию сенсорного ввода. Например, операционная система может обеспечить общую модель управления для производителей аппаратного обеспечения multi-touch, чтобы обеспечить сенсорную информацию для их конкретного аппаратного обеспечения. Операционная система может преобразовывать сенсорную информацию, принимаемую через эту модель, в оконные сообщения (например, WM_TOUCH, рассматриваемые здесь) и передавать эти сообщения приложению. Таким образом, интерфейс 110 аппаратного обеспечения может включать в себя координацию аппаратного обеспечения, драйвер аппаратного обеспечения и слой операционной системы. Результатом являются последовательности сообщений инерционной системе, которые идентифицируют конкретный контакт (например, прикосновение пальца) и координаты контакта с течением времени. Например, операционная система может обеспечить сообщение, когда новый контакт устанавливается на аппаратном обеспечении multi-touch, сообщение каждый раз, когда контакт перемещается, и сообщение, когда контакт убирается от аппаратного обеспечения multi-touch.
Один или более манипуляционных процессоров 120 используют компоненту 130 преобразования ввода для интерпретации перемещения каждого контакта, связанного с конкретным объектом приложения. Манипуляционный процессор 120 может определить, что пользователь использует несколько контактов для выполнения отдельного действия. Например, пользователь может прикоснуться к фотографии всеми пятью пальцами одной руки и повернуть его/ее руку, чтобы указать намерение вращать фотографию. Манипуляционный процессор 120 принимает пять отдельных контактов (один для каждого пальца) и изменения координат каждого контакта, как пользователь вращает его/ее руку. Манипуляционный процессор 120 определяет, что каждый контакт захватывает тот же объект и выполняет то же вращение. Система информирует приложение, что пользователь повернул объект, но приложение может игнорировать, использовал ли пользователь два, пять или любое конкретное число пальцев или других контактов для выполнения вращения. Это значительно упрощает редактирование приложения, поскольку автор приложения может обрабатывать те типы манипуляций, которые имеют отношение к приложению и оставить инерционной системе интерпретацию значения каждого сенсорного ввода нижнего уровня, принимаемого от аппаратного обеспечения multi-touch.
Манипуляционный процессор 120 использует компоненту 130 преобразования ввода для вынесения решений о значении принимаемых перемещений различных контактов, как самостоятельно, так и согласованно. Например, если пользователь манипулирует фотографией двумя пальцами, которые создают два соответствующих контакта ввода, тогда манипуляционный процессор 120 использует компоненту 130 преобразования ввода для определения значения относительных перемещений между этими двумя контактами. Если два контакта двигаются врозь, тогда компонента 130 преобразования ввода может определить, что пользователь осуществляет масштабирование объекта для изменения размера объекта. Если два контакта вращаются, тогда компонента 130 преобразования ввода может определить, что пользователь вращает объект. Если два контакта оба перемещаются в конкретном направлении, тогда компонента 130 преобразования ввода может определить, что пользователь панорамирует объект в новое место. Хотя каждый вид перемещения обсуждается отдельно, отметим, что пользователь может осуществлять все три типа перемещений в то же время, и процессор преобразования ввода может сообщать общее преобразование приложению. Например, пользователь может вращать, масштабировать и панорамировать объект, все в одном движении.
Компонента 140 моделирования имитирует продолжение перемещения объекта приложения после того, как пользователь останавливает касание объекта, на основе параметров инициализации и ограничений, определенных для объекта. Приложение может инициализировать компоненту 140 моделирования с конечным состоянием манипуляционного процессора 120, связанного с объектом. Приложение может также определять различные характеристики объекта, такие, как поведение границ объекта. Компонента 140 моделирования использует технологии на основе физики для моделирования поведения объекта за интервал после того, как пользователь освобождает объект. Например, компонента 140 моделирования может продолжать запускать уведомления для приложения в той же форме, как манипуляционные события, принятые посредством приложения, пока пользователь двигал объект. Приложение может затем сконцентрироваться на реагировании на перемещения объекта вместо концентрации на действиях (пользователя или физических), вызвавших движение объекта. Специалисты в данной области распознают много известных технологий для имитации эквивалентного физического поведения виртуальных объектов в программном обеспечении.
Интерфейс 150 приложения связывается с приложением для приема информации и обеспечения преобразования манипуляций для приложения. Интерфейс 150 приложения принимает информацию инициализации от приложения. Информация инициализации может определять, какие типы преобразований объект приложения поддерживает для конкретного объекта и связанного манипуляционного процессора, а также данные инициализации для компоненты 140 моделирования, когда пользователь больше не двигает объект. Например, некоторые объекты приложения могут поддерживать масштабирование, но не вращение. Информация инициализации может также определять опорную точку объекта. Инерционная система обеспечивает преобразования манипуляций для приложения через интерфейс приложения. Например, когда инерционная система принимает сенсорный ввод нижнего уровня, который система интерпретирует как распознаваемое преобразование (например, вращение), система запускает событие для уведомления приложения о манипуляции. Приложение обрабатывает преобразование манипуляции для изменения объекта на основе преобразования. Например, если пользователь повернул объект, тогда приложение может хранить новое положение объекта, чтобы использовать в следующий раз, когда приложение отображает объект. В качестве другого примера, если объект продолжает вращаться, после того, как пользователь отпустил его, на основе вычислений компоненты 140 моделирования, тогда приложение может хранить новое положение объекта.
Вычислительное устройство, на котором осуществляется система, может включать в себя центральный процессор, память, устройства ввода (например, клавиатуру и указательные устройства), устройства вывода (например, дисплеи) и устройства хранения (например, дисководы). Память и устройства хранения являются машиночитаемыми носителями, которые могут быть закодированы с помощью исполняемых компьютером инструкций, которые осуществляет система, что означает машиночитаемый носитель, который содержит инструкции. Кроме того, структуры данных и структуры сообщений могут храниться или передаваться через среду передачи данных, такую, как сигнал на линии связи. Различные линии связи могут использоваться, такие, как сеть Internet, локальная сеть, глобальная сеть, подключение точка-точка удаленного доступа, сотовая телефонная сеть и так далее.
Варианты осуществления системы могут осуществляться в различных операционных средах, которые включают в себя персональные компьютеры, серверы, портативные устройства или ноутбуки, многопроцессорные системы, системы на основе микропроцессоров, программируемую бытовую электронику, цифровые камеры, сетевые персональные компьютеры, миникомпьютеры, универсальные вычислительные машины, распределенные вычислительные среды, которые включают в себя любые из упомянутых выше систем или устройств, и так далее. Компьютерные системы могут быть сотовыми телефонами, персональными цифровыми помощниками, смартфонами, персональными компьютерами, программируемой бытовой электроникой, цифровыми камерами и так далее.
Система может быть описана в общем контексте исполняемых компьютером инструкций, таких, как программные модули, выполняемые одним или более компьютерами или другими устройствами. В целом, программные модули включают процедуры, программы, объекты, компоненты, структуры данных и так далее, которые выполняют конкретные задачи или осуществляют конкретные абстрактные типы данных. Обычно, если требуется, то функциональность программных модулей может быть совмещена или распределена в различных вариантах осуществления.
Фиг. 2 является схемой потока данных, которая иллюстрирует типичную операционную среду инерционной системы и поток данных между компонентами, в одном варианте осуществления. Аппаратное обеспечение устройства multi-touch порождает данные 210 ввода через интерфейс аппаратного обеспечения. Например, аппаратное обеспечение может передавать данные 210 ввода операционной системе через драйвер программного обеспечения, предоставляемый производителем аппаратного обеспечения. Интерфейс аппаратного обеспечения обеспечивает входные события 220 для приложения 230. Например, приложение может информировать операционную систему, что приложение 230 поддерживает пользовательский ввод multi-touch и регистр для приема сообщений, относящихся к пользовательскому вводу multi-touch. Приложение 230 принимает информацию сенсорного ввода нижнего уровня как изменения 240 ввода и направляет изменения 240 ввода манипуляционной системе 250. Например, изменения 240 ввода могут описывать каждое перемещение одного или более контактов прикосновений с помощью аппаратного обеспечения с использованием набора координат, которые указывают текущую позицию каждого контакта и другие характеристики перемещения. Манипуляционная система 250 интерпретирует изменения 240 ввода и уведомляет приложение 230 об одном или более манипуляционных событиях 260, которые указывают манипуляции верхнего уровня, которые пользователь выполняет над отображаемым объектом. Например, если движение контактов указывает, что пользователь намерен вращать объект, то манипуляционные события 260 указывают угол вращения.
Когда пользователь осуществляет перемещение объекта (например, когда приложение принимает уведомление, что каждый контакт, касающийся объекта, был перемещен от сенсорного аппаратного обеспечения), приложение 230 передает информацию 270 инициализации инерционной системе 280. Инерционная система 280 определяет следующую позицию объекта и обеспечивает инерционные события 290, подобные манипуляционным событиям 260, которые манипуляционная система 250 предоставила, когда пользователь двигал объект. Приложение 230 также обеспечивает управляющий таймер, чтобы периодически вызывать инерционную систему 280, чтобы обеспечить следующую позицию объекта через инерционные события 290. Приложение 230 обрабатывает инерционные события способом подобно манипуляционным событиям.
Хотя схема иллюстрирует, что приложение сначала принимает сенсорный ввод и передает сенсорный ввод манипуляционной системе и инерционной системе, в некоторых вариантах осуществления, эти системы принимают сенсорный ввод напрямую от интерфейса аппаратного обеспечения, интерпретируют сенсорный ввод и предоставляют интерпретированные манипуляционные события приложению. Подобным образом, приложение может не знать, что отдельная инерционная система 280 предоставляет инерционные события после того, как пользователь прекращает перемещать объект с помощью прикосновения, но даже может принимать события от одного интерфейса в течение времени, когда пользователь перемещает объект и после того, как объект перемещается на основе инерции. Это представляет альтернативную архитектуру, которая обеспечивает подобную результирующую функциональность, но дает приложению меньше контроля над обработкой входных данных. Например, приложение может не быть в состоянии определить отдельные объекты приложения, к которым система присоединяет отдельные манипуляционные процессоры. RTS plug-in, рассматриваемый здесь, является примером этой альтернативной архитектуры для системы.
Фиг. 3 является схемой дисплея, которая иллюстрирует объект приложения, манипулируемый касанием пользователя, в одном варианте осуществления. Приложение может одновременно отображать и принимать сенсорный ввод для многих таких объектов. Например, командное приложение операционной системы может отображать один или более документальных объектов, хранящихся на рабочем столе компьютера пользователя. На дисплее 310, документальный объект 320 представляет документ на рабочем столе пользователя, который пользователь хочет перетащить в корзину 330 с использованием касания. Пользователь выполняет мерцающее движение документального объекта 320, которое приводит к обработке системой первой манипуляционной позиции 340, второй манипуляционной позиции 350 и третьей манипуляционной позиции 360. Приложение принимает первую манипуляционную позицию 340, когда пользователь первоначально касается документального объекта 320 одним или более пальцами (т.е. контактами). Приложение принимает вторую манипуляционную позицию 350, когда пользователь двигает его/ее пальцы через экран. Приложение принимает третью манипуляционную позицию, когда пользователь поднимает его/ее пальцы от экрана. Стрелки 365 представляют векторы перемещения документального объекта 320.
Без инерции, документальный объект 320 остановился бы на третьей манипуляционной позиции 360, которая вероятно не соответствует намерению пользователя. Инерционная система обеспечивает дополнительные манипуляционные позиции приложению, как если бы пользователь еще касался и перемещал документальный объект 320, на основе скорости документального объекта 320, когда пользователь отпускает документальный объект 320. Приложение принимает первую манипуляционную позицию 370 на основе инерции, когда приложение инициирует инерционную систему, и вызывает функцию обработки инерционной системы для первого момента времени. Приложение принимает вторую манипуляционную позицию 380 на основе инерции, по мере того, как приложение продолжает вызывать функцию обработки инерционной системы. Поскольку итоговая манипуляционная позиция 380 документального объекта 320 оканчивается на корзине 330, приложение обрабатывает контакт между этими двумя объектами (например, посредством размещения документального объекта 320 в корзину 330). В иллюстрированном примере, даже хотя инерционная система замедляет движение документального объекта 320, документальный объект 320 еще может перемещаться порядочное расстояние через дисплей 310 на основе высокой начальной скорости перемещения пользователя документального объекта 320 в начале.
Фиг. 4 является блок-схемой последовательности операций, которая иллюстрирует цикл обработки ввода приложения multi-touch с использованием инерционной системы для обработки манипуляционных событий, в одном варианте осуществления. В блоке 410, приложение принимает сенсорный ввод нижнего уровня. Например, операционная система или экземпляр инерционной системы принимает информацию сенсорного контакта от аппаратного обеспечения multi-touch и направляет информацию сенсорного контакта приложению. В блоке 420, приложение определяет объект, к которому применяется ввод. Например, приложение может проверить координаты принимаемого ввода посредством сравнения этих координат с координатами каждого объекта приложения, отображаемого приложением. Если сенсорный ввод находится в пределах границ отображаемого объекта приложения, тогда приложение определяет, что сенсорный ввод применяется к этому объекту. В блоке 430, приложение передает принимаемый сенсорный ввод и информацию об определенном объекте приложения манипуляционному API для вызова инерционной системы (смотрите Фиг. 5). Например, приложение может создать числовой идентификатор для каждого объекта приложения и передавать числовой идентификатор инерционной системе каждый раз, когда сенсорный ввод соответствует этому объекту.
В блоке 440, приложение принимает манипуляционное событие от инерционной системы, которое описывает одну или более манипуляций определенного объекта приложения. Например, приложение может принимать событие, описывающее 2D аффинное преобразование объекта приложения. Необходимо отметить, что блок 440 иллюстрируется последовательно после блока 430 для простоты иллюстрации. На практике, приложение может принимать много событий сенсорного ввода, перед тем, как инерционная система уведомляет приложение манипуляционным событием. Не обязательно отображать одно-к-одному события сенсорного ввода в манипуляционные события. Поскольку манипуляционные события представляют интерпретацию верхнего уровня сенсорного ввода нижнего уровня, множество данных сенсорного ввода может составить одно манипуляционное событие. В блоке 450, приложение обрабатывает принимаемое манипуляционное событие. Например, если принимаемое манипуляционное событие является вращением, тогда приложение может вращать объект приложения на экране и сохранять новые позиции объектов приложения для использования, когда объект приложения отображается снова. Инерционная система освобождает приложение от выполнения этапов, специфичных для конкретного устройства с аппаратным обеспечением multi-touch, или даже от сведений о том, какое устройство с аппаратным обеспечением предоставляет multi-touch ввод. Кроме того, инерционная система освобождает приложение от обработки перемещений отдельных контактов и позволяет приложению фокусироваться на обработке преобразований на уровне объектов приложения.
В блоке 460, приложение ждет следующего сенсорного ввода. Например, приложение может вызвать предоставляемое операционной системой сообщение API, такое, как GetMessage в Microsoft Windows, которое ждет доставки следующего сообщения в очередь сообщений приложения. В блоке 470 принятия решений, если приложение принимает следующий сенсорный ввод, тогда приложение возвращается к блоку 410 для обработки ввода, иначе приложение возвращается к блоку 460 для продолжения ожидания следующего ввода. Когда приложение закрывается, приложение выходит из цикла ввода (не показано).
Фиг. 5 является блок-схемой последовательности операций, которая иллюстрирует обработку инерционной системы, когда система принимает сенсорный ввод, в одном варианте осуществления. В блоке 505, система принимает сенсорный ввод наряду с информацией, определяющей объект приложения, с которым связан сенсорный ввод. Например, сенсорный ввод может включать координаты или информацию о других позициях одного или более сенсорных контактов, и информация об объекте приложения может включать в себя идентификатор, который приложение назначило конкретному отображаемому объекту, которому соответствует сенсорный ввод аппаратного обеспечения multi-touch. В блоке 510, система определяет манипуляционный процессор, связанный с объектом приложения. В блоке 520 принятия решений, если система не имеет процессор управления, заранее связанный с объектом приложения, тогда система переходит к блоку 530, иначе система переходит к блоку 540. В блоке 530, система создает манипуляционный процессор и связывает его с объектом приложения, затем переходит к блоку 540.
В блоке 540 принятия решений, если принимаемый сенсорный ввод указывает, что приложение приняло новый контакт (например, событие прикосновения), тогда система переходит к блоку 550, иначе система переходит к блоку 560. Например, пользователь может сделать первый контакт пальцем на объекте на экране или установить другой палец (т.е. контакт) на объект, к которому он ранее прикоснулся. В блоке 550, система добавляет новый контакт в список контактов, связанных с манипуляционным процессором, и затем переходит к блоку 560. В блоке 560 принятия решений, если принимаемый сенсорный ввод указывает, что принимаемое приложением уведомление о том, что сенсорный контакт был удален (например, событие, когда прикосновение убирается), тогда система переходит к блоку 570, иначе система переходит к блоку 580. Например, пользователь может поднять один или более пальцев от объекта, к которому он ранее прикоснулся. В блоке 570, система удаляет контакт из списка контактов, связанных с манипуляционным процессором, и затем переходит к блоку 580. В блоке 580, система обрабатывает сенсорный ввод, чтобы определить какие-либо манипуляционные события, представленные сенсорным вводом. Например, перемещение прикосновения может указывать вращение или манипуляцию преобразования, в то время как удаление сенсорного контакта может указывать на завершение манипуляции. В блоке 590, система запускает манипуляционное событие, чтобы передать информацию о преобразовании, описывающую манипуляцию приложению. Например, система может предоставить степень углового вращения объекта для приложения. После блока 590, эти этапы завершаются.
Фиг. 6 является блок-схемой последовательности операций, которая иллюстрирует обработку приложения multi-touch с использованием инерционной системы для обработки инерционных событий, в одном варианте осуществления. В блоке 610, приложение определяет, что пользователь освободил объект. Например, после обработки манипуляционного события в блоке 450 Фиг. 4, приложение может принимать индикацию того, что манипуляция завершилась или что пользователь поднял все контакты, которые касались объекта приложения. В блоке 620, приложение инициирует инерционную систему. Например, приложение может передавать ссылку манипуляционному процессору об обработке движения объекта и другую информацию инициализации. В блоке 630, приложение устанавливает таймер, который будет запускать интервал обработки инерции инерционной системы. Например, приложение может установить таймер, который будет срабатывать каждые 100 миллисекунд для обработки следующего приращения перемещения объекта. В блоке 640, приложение вызывает функцию обработки инерционной системы (смотрите Фиг. 7). Например, инерционная система может обеспечить функцию "Process (Обработка)", которую приложение вызывает, чтобы информировать инерционную систему, что настало время для выполнения моделирования за интервал с последнего интервала моделирования.
В блоке 650, приложение принимает одно или более инерционные события, которые описывают манипуляции объекта (например, вращение, преобразование, и/или масштабирование) на основе моделированной инерции. Например, если объект перемещался в конкретном направлении, приложение может принимать инерционное событие, которое описывает манипуляцию преобразования в этом направлении. В качестве другого примера, если объект расширялся, когда пользователь отпустил его, приложение может принимать инерционное событие, которое описывает манипуляцию масштабирования. Необходимо отметить, что блок 650 иллюстрируется последовательно после блока 640 для простоты иллюстрации. На практике, приложение может вызвать функцию обработки инерции несколько раз перед тем, как инерционная система уведомляет приложение инерционным событием. Не обязательно отображать один-к-одному вызовы функции обработки и инерционные события. С другой стороны, инерционная система может уведомить приложение о множестве инерционных событий после одного вызова функции обработки.
В блоке 660, приложение обрабатывает принимаемое инерционное событие на основе значения (например, эффекта) манипуляции в контексте конкретного приложения. Например, если принимаемое инерционное событие является вращением, тогда прил