У меня есть список отрезков, каждый с координатами x и y их точек «от» и «до», как показано ниже (пример ниже урезан, он довольно длинный).
[
{'f': {'x': 15.0, 'y': -5.0}, 't': {'x': 16.0, 'y': -5.0}},
{'f': {'x': 3.0, 'y': -7.0}, 't': {'x': 5.0, 'y': -7.0}},
{'f': {'x': 9.0, 'y': -7.0}, 't': {'x': 10.0, 'y': -7.0}},
{'f': {'x': 10.0, 'y': -4.0}, 't': {'x': 10.0, 'y': -5.0}},
{'f': {'x': 9.0, 'y': -4.0}, 't': {'x': 10.0, 'y': -4.0}},
{'f': {'x': 4.0, 'y': -4.0}, 't': {'x': 5.0, 'y': -4.0}},
...
]
У меня также есть функция lines_connected
, которая принимает два из этих элементов списка (строк) в качестве параметров a
и b
и возвращает True
, если конец любой строки находится в некоторой части другой (но False
, если они просто пересекаются без одного конца на другом, или если они вообще не "касаются"). Используя это, мне нужно найти все группы (предположительно в виде списков в списке) линий, которые «соединяются», как описано выше. Не каждая линия в группе обязательно связана напрямую с любой другой линией, но они связаны через другие линии в группе.
Как лучше всего сгруппировать эти строки в эти «связанные группы»?