Обнаружение специального касания на iphone - PullRequest
3 голосов
/ 12 февраля 2009

Я спрашивал себя, есть ли в Интернете примеры, в которых рассказывается, как, например, вы можете обнаружить фигуры в жестах касанием.

например, прямоугольник или круг (или более сложное сердце ..)

или определить скорость перелистывания (со временем (как будто я провожу свой iphone против 50 миль в час))

Ответы [ 2 ]

8 голосов
/ 12 февраля 2009

Для очень простых жестов (горизонтальное или вертикальное пролистывание) вычислите разницу в x и y между двумя касаниями.

dy = abs(y2 - y1)
dx = abs(x2 - x1)
f = dy/dx

F, близкий к нулю, является горизонтальным ударом. F, близкий к 1, является диагональным ударом. И очень большое f - вертикальное движение (имейте в виду, что dx может быть нулем, поэтому приведенное выше не даст действительных результатов для всех x и y).

Если вас интересует скорость, Пифагор может помочь. Длина пройденного расстояния между двумя касаниями:

l = sqrt(dx*dx + dy*dy)

Если касания происходили в моменты времени t1 и t2, скорость равна:

tdiff = abs(t2 - t1)
s = l/tdiff

Вам решать, какое значение s вы интерпретируете как быстрое или медленное.

Вы можете расширить этот подход для более сложных фигур, например Ваша квадратная форма может быть горизонтальной / вертикальной / горизонтальной / вертикальной прокруткой с начальной / конечной точками, где предыдущая прокрутка остановилась.

Для более сложных фигур, вероятно, лучше работать с идеализированной формой. Можно считать идеальной форму многоугольника и проверить, есть ли диапазон касаний

  1. не слишком большое расстояние до их ближайшей точки на контуре Pologyon, и
  2. все касания следуют в одном направлении вдоль контура многоугольника.

Оттуда можно уточнить вещи.

0 голосов
/ 14 ноября 2011

Существуют и другие способы обнаружения не простых прикосновений на сенсорном экране. Проверьте распознаватель жестов unistroke за 1 доллар в Университете Вашингтона. http://depts.washington.edu/aimgroup/proj/dollar/

Это в основном работает так:

  1. Повторная выборка записанного пути в фиксированное количество точек, равномерно распределенных вдоль пути
  2. Вращение траектории так, чтобы первая точка находилась непосредственно справа от центра масс траектории
  3. Масштабирование пути (неравномерно) до фиксированной высоты и ширины
  4. Для каждого эталонного тракта, вычисления среднего расстояния для соответствующих точек во входном пути. Путь с наименьшим средним точечным расстоянием совпадает.

Что хорошо, так это то, что выходные данные шагов 1-3 являются эталонным путем, который можно добавить в массив известных жестов. Это позволяет очень просто поддерживать жесты вашего приложения и создавать собственный набор пользовательских жестов, как вы считаете нужным.

Это был портирован на iOS Адам Пребл, репо на github: http://github.com/preble/GLGestureRecognizer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...