2015-04-10 2 views
1

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

  • Finger X > прямоугольник Х
  • палец Y> прямоугольник Y
  • палец Х < прямоугольник Х + прямоугольник Ширина
  • Палец Y < прямоугольник Y + прямоугольник Высота

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

Любая помощь будет оценена по достоинству.

ответ

2

The distance between two points в двух измерениях определяются как

dist = sqrt((x2-x1)^2 + (y2-y1)^2) 

Чтобы проверить, если точка крана находится внутри круга, возьмите центр вашего круга, (x1, y1), и «водопроводное место», как (x2, y2) и проверьте, не установлено ли

sqrt((x2-x1)^2 + (y2-y1)^2) < R 

С R - радиус вашего круга.

Edit:

Как уже упоминалось Джон, с вычислительной точки зрения это более интересно сравнить против R^2, чтобы избежать SQRT для каждого крана. Таким образом, условие становится:

(x2-x1)^2 + (y2-y1)^2 < R^2 
+1

Да, но это дешевле квадрат 'r', чем для вычисления квадратного корня, так что, как правило, лучше выполнить тест' (x2-x1)^2 + (у2 y1)^2)

+0

@JohnBollinger true, я отредактировал ответ. – Wouter