Статья Автор: Лебедев Дмитрий

TUZ_6-08 Подсчет пар пересекающихся кругов

TUZ_6-08 Подсчет пар пересекающихся кругов

TUZ_6-08 Подсчет пар пересекающихся кругов
6.8. Подсчет пар пересекающихся кругов
На двумерной плоскости существуют круги (x1, y1, r1) и (x2, y2, r2), где (x, y) – это координаты центра круга, а r – радиус.
Если для них выполняется неравенство Пифагора (x2 – x1) 2 + (y2 – y1) 2 <= (r1 + r2)2,
то эти два круга (x1, y1, r1) и (x2, y2, r2) имеют область пересечения. 
Следует отметить, что формула работает только для целых чисел.
Ваша задача: написать функцию, которая принимает список координат центров и радиусов кругов
и возвращает количество пар кругов, пересекающихся хотя бы в одной точке.
В табл. 6.8 показаны ожидаемые результаты для некоторых входных данных.
Таблица 6.8. Некоторые ожидаемые результаты для задачи подсчета пар пересекающихся кругов
Disks Ожидаемый результат
(1, 1, 9), (1, 0, 9) 1
(4, 7, 11), (11, 2, 8), (1, 1, 1) 2
(1, 1, 3), (6, 0, 3), (6, 5, 3), (0, 6, 3) 3
(34, 9, 67) 0

Алгоритм
Для решения этой задачи обычно используется алгоритм заметающей прямой,
который широко применяется в вычислительной геометрии для решения различных задач,
связанных с расположением и пересечением геометрических объектов.
Он позволяет эффективно обнаруживать пересечения, перекрытия и другие геометрические свойства.
Количество сравнений в случае кругов равно O(N·logN).
Чтобы уменьшить количество сравнений, особенно когда круги могут находиться на большом расстоянии друг от друга,
используется алгоритм заметающей прямой, вычисляющий активное пространство.
В активном пространстве пересечение кругов более вероятно.Считается, что круг попадает в активное пространство,
если вертикальная линия, отличная от оси x, входит в пространство (x – r), и не попадает, если вертикальная линия покидает (r + х).


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать