У меня есть список двумерных точек, и я хочу получить, какие из них попадают в полукруг.
Первоначально форма цели была прямоугольником, выровненным с осью x и y. Таким образом, текущий алгоритм сортирует пары по их координатам X и двоичным поискам до первого, который может попадать в прямоугольник. Затем он последовательно повторяется по каждой точке. Он останавливается, когда он попадает на тот, который находится за пределами верхней и нижней границы объекта X и Y целевого прямоугольника.
Это не работает для полукруга, так как вы не можете определить эффективные верхние/нижние границы x и y для него. Полукруг может иметь любую ориентацию.
В худшем случае я найду наименьшее значение измерения (скажем, x) в полукруге, бинарный поиск до первой точки, которая находится за его пределами, а затем последовательно проверяет точки до тех пор, пока я не выйду за верхнюю границу этого измерение. В основном тестирование всей группы очков на сетке. Проблема заключается в том, что будет проверяться множество точек, которые не находятся в пределах.