У нас есть точка (x, y) и набор некоторых других точек (xi, yi) . Как мы можем определить, какие из (xi, yi) находятся внутри круга с центром (x, y) и радиусом r (с заданным числом)?
(xi-x)**2 + (yi-y)**2 < r**2
Простой способ.
Вычислить расстояние от точки до центра круга. Если радиус меньше радиуса, то он внутри круга.
Если (xi - x) ^ 2 + (yi - y) ^ 2 меньше, чем d ^ 2, оно внутри. Если оно равно d ^ 2, оно на круге. Если оно больше, чем d ^ 2, оно снаружи.
Если sqrt ((xi-x) ^ 2 + (yi-y) ^ 2) <= d </p>
У меня была такая же проблема, чтобы решить внутри процедуры plsql. Решение выше совершенно верно, и я сделал то же самое. Но это резко ухудшило производительность моей программы plsql. Вместо вычисления круга я использовал квадрат. Потому что это может быть сделано без выполнения таких вычислений и в самом операторе sql. Это улучшило производительность запросов более чем в 10 раз