2009-10-26 4 views
4

Мы имеем точку (х, у) и множество других точек (х уг). Как определить, какой из (xi, yi) находится в пределах круга с центром (x, y) и радиус r (данный номер)?Найти, если точки находятся в пределах окружности с заданным центром и радиусом

+0

Почему downvote? –

+0

psasik: Наверное, потому что это пограничный вопрос не по программированию. – John

ответ

5

Простой способ.

Вычислить расстояние от точки до центра круга. Если меньше радиуса, то его внутри круга.

2

Если SQRT ((хи-х)^2 + (у-у)^2) < = д

+2

вы можете оптимизировать это. Ommit SQRT для лучшей производительности. (xi-x)^2 + (yi-y)^2 <= d^2 –

14
(xi-x)**2 + (yi-y)**2 < r**2 
+0

+1 потому что вы избегаете квадратного корня. – ntd

+1

И используйте <= если вы хотите также включить точки ** на ** круг, в дополнение к тем, что внутри. – Maple

3

Если (XI - х)^2 + (у - у)^2 меньше, чем d^2, он внутри. Если он равен d^2, он находится на круге. Если оно больше d^2, оно снаружи.

0

У меня была такая же проблема, чтобы решить внутри процедуры plsql. Решение выше полностью верно, и я сделал то же самое. Но это резко ухудшило производительность моей программы plsql. Вместо этого вычисления круга я использовал квадрат. Потому что это можно сделать, не выполняя такой расчет и в самом выражении sql. Это улучшило производительность запросов более чем на 10x