Вот небольшое изображение, которое поможет объяснить, что я имею в виду.
- Черные линии — это стены.
- Красные точки – это узлы.
- Синие линии — это линии для соединения соседей (обратите внимание, что ни одна синяя линия не пересекает черную линию).
В настоящее время я реализую очень наивный и чрезвычайно дорогостоящий подход грубой силы. В котором я проверяю каждую комбинацию узлов на предмет пересечения с любой из стен лабиринта (стен, хранящихся в «краях»).
Код: Выделить всё
for n1 in nodes:
for n2 in nodes:
if not intersect(n1, n2, edges):
n1.neighbours.append(n2)
n2.neighbours.append(n1)
Поэтому мой вопрос заключается в том, есть ли какой-либо способ найти всех соседей каждого узла намного быстрее/более эффективно.
Всего хорошего

Подробнее здесь: https://stackoverflow.com/questions/704 ... raightline