diff options
| author | Lex Neva <github.com@lexneva.name> | 2023-02-18 17:44:42 -0500 |
|---|---|---|
| committer | Lex Neva <github.com@lexneva.name> | 2023-02-20 15:27:56 -0500 |
| commit | ae43fb96830d9f747f890d1985a9c5ed4741f893 (patch) | |
| tree | c3554bbc2d8f77369d46cad1aafe0954ca9c202c /lib/tiles.py | |
| parent | 7fa3fec5346a4c87ff1f95dca94cf771455d8cb0 (diff) | |
avoid NetworkXNoPath error by connecting graph
Diffstat (limited to 'lib/tiles.py')
| -rw-r--r-- | lib/tiles.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/tiles.py b/lib/tiles.py index e40692e8..d1e79071 100644 --- a/lib/tiles.py +++ b/lib/tiles.py @@ -3,7 +3,7 @@ from math import ceil, floor import inkex import lxml -from networkx import Graph +import networkx as nx from shapely.geometry import LineString from shapely.prepared import prep @@ -127,7 +127,7 @@ class Tile: return self._generate_graph(prepared_shape, shape_center, shape_diagonal) def _generate_graph(self, shape, shape_center, shape_diagonal): - graph = Graph() + graph = nx.Graph() tiles0 = ceil(shape_diagonal / self.shift0.length()) + 2 tiles1 = ceil(shape_diagonal / self.shift1.length()) + 2 for repeat0 in range(floor(-tiles0 / 2), ceil(tiles0 / 2)): @@ -147,11 +147,12 @@ class Tile: return graph def _remove_dead_ends(self, graph): + graph.remove_edges_from(nx.selfloop_edges(graph)) while True: - nodes_with_degree_1 = [node for node, degree in graph.degree() if degree == 1] + dead_end_nodes = [node for node, degree in graph.degree() if degree <= 1] - if nodes_with_degree_1: - graph.remove_nodes_from(nodes_with_degree_1) + if dead_end_nodes: + graph.remove_nodes_from(dead_end_nodes) else: return |
