Как определить, касается ли пользователь iPad изображения неправильной формы? - PullRequest
1 голос
/ 27 июля 2010

Я подключил UITapGestureRecognizer к UIImageView, содержащему изображение, которое я хотел бы отобразить на экране iPad, и могу нормально использовать пользовательские касания.Тем не менее, мое изображение - это изображение руки на столе, и я хотел бы знать, постучал ли пользователь по руке или по части стола.Я могу получить координаты x, y касания пользователя с помощью CGPoint tapLocation = [recognizer locationInView:self.view];, но я не знаю, как сопоставить эту CGPoint, скажем, с областью изображения, содержащей руку, и областью, содержащей таблицу,Все, что я до сих пор читал, касается определения того, находится ли CGPoint в конкретной прямоугольной области, но что если вам нужно определить, находится ли этот CGPoint в границах более неправильной формы?Это вообще возможно?Любые предложения или просто указание мне в правильном направлении было бы большой помощью.Спасибо!

Ответы [ 5 ]

3 голосов
/ 27 июля 2010

Вы можете использовать pointInside: withEvent: , чтобы программно определить область попадания.

Чтобы уточнить, вы просто берете точку и оцениваете, падает ли она в той областипосле ряда утверждений if.Если это так, верните TRUE.Если это не так, верните FALSE.Если это связано с этой записью , то вы можете использовать условное окружность для сравнения расстояния точки до центра вашего круга, используя Теорема Пифагора .

1 голос
/ 30 сентября 2010

опоздал на вечеринку, но основным инструментом, который вам здесь нужен, является процедура «точка в многоугольнике». это общий подход, независимый от iOS.

Google имеет много информации, но общий подход таков:

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

2) выберите любую точку, не равную вашей исходной точке. (да, любая точка)

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

4) если число пересечений нечетное, оно внутри многоугольника. если счет четный, он снаружи.

для общих вопросов типа геометрии, я очень рекомендую Пола Бурка: http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/

0 голосов
/ 29 июля 2010
  • определяет форму с помощью черно-белого растрового изображения (1 бит на пиксель).Проверьте, установлен ли конкретный бит.Это заняло бы много памяти, если бы у вас было много больших фигур, но для одного растрового изображения с рукой это не должно иметь большого значения.
  • определяет форму как многоугольникЗатем вам нужно выполнить проверку точки-полигона.В Википедии есть замечательная статья на эту тему со ссылками на код: http://en.wikipedia.org/wiki/Point_in_polygon
  • В библиотеках iPad это уже может быть реализовано.Извините, я не могу вам помочь, не разработчик iPad.
0 голосов
/ 28 июля 2010

Расширение ответа ограничивающего прямоугольника,

  • Вы можете определить несколько меньших ограничивающих прямоугольников, которые будут приближать руку, не покрывая остальную часть экрана.
    • Вы можете использовать список прямоугольников для каждого из ваших объектов и поставить руку в конец списка.В этом случае, если бы вы нажали кнопку X в правой верхней части экрана, которая технически находится внутри прямоугольника руки, она выбрала бы кнопку X, потому что этот прямоугольник был найден первым.
0 голосов
/ 27 июля 2010

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

Если пользователь использует свой палец, чтобы постучать рукой или столом, я сомневаюсь, что вы хотите, чтобы он или она были чрезвычайно точны с касанием.

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