added drag-selection

This commit is contained in:
2024-07-01 23:15:54 +02:00
parent 77f11a7440
commit efe158f83f
2 changed files with 71 additions and 13 deletions

View File

@ -9,8 +9,8 @@ class Graph:
self.edges: list[Edge] = []
self.nodes: list[Node] = []
def add_node(self, x: int, y: int, name: str) -> None:
self.nodes.append(Node(x, y, name, len(self.nodes)))
def add_node(self, x: int, z: int, name: str) -> None:
self.nodes.append(Node(x, z, name, len(self.nodes)))
def add_edge(self, start_index: int, end_index: int, length: float) -> None:
self.edges.append(Edge(start_index, end_index, length, len(self.edges)))
@ -47,6 +47,12 @@ class Graph:
def get_edge_nodes(self, edge: Edge) -> tuple[Node, Node]:
return self.nodes[edge.start], self.nodes[edge.end]
def get_edge_center(self, edge_index: int) -> tuple[float, float]:
edge = self.edges[edge_index]
start_n = self.nodes[edge.start]
end_n = self.nodes[edge.end]
return (start_n.x + end_n.x) / 2, (start_n.z + end_n.z) / 2
def edges_adjacent_to(self, node_i: int) -> Iterator[Edge]:
return filter(lambda e: e.start == node_i or e.end == node_i, self.edges)