Ответ 1
Предположим, что у вас есть окружность с центром в (x, y) с радиусом r и хотите найти все точки в квадранте, которые находятся в круге. Одна из идей заключается в следующем:
-
Построить ограничивающий прямоугольник, вписывающий круг. Это самый маленький прямоугольник, содержащий круг, который имеет верхний левый угол (x - r, y - r) и нижний правый угол (x + r, y + r). Любая точка в круге также должна быть в квадрате, но не наоборот.
-
Запросить квадрант для множества точек, лежащих в этом прямоугольнике. Пусть эти точки P.
-
Для каждой точки P, которая, как известно, находится в прямоугольнике, см., если она также находится в круге. Вы можете сделать это, проверив, не превышает ли расстояние от этой точки до (x, y) значение r. Другими словами, если задать точку (x 0, y 0), вы должны вычислить (x - x 0) 2 + (y - y 0) 2 и если это значение меньше или равно r 2 то точка содержащихся в круге.
Хотя это может показаться неэффективным, оно на самом деле довольно быстро. Отношение площади квадрата к площади круга равно 4/& pi; & Около; 1,27. Другими словами, предполагая, что ваши очки распределены несколько равномерно, вы найдете только на 27% больше очков, чем вам нужно.