def mayMove(self,pFrom:Point,pTo:Point): if not self._Csvreader.fileLoaded: return False if not self._GraphLoaded: return False dim=self.getMapDim() if dim.IsPointInDim(pFrom)==False: return False if dim.IsPointInDim(pTo)==False: return False NodeFrom = Point.ToGridNodeFromPoint(pFrom, dim.height) NodeTo = Point.ToGridNodeFromPoint(pTo, dim.height) return self._MovementCalculator.mayMove(NodeFrom,NodeTo,self._Graph)
def getPath(self,pFrom:Point,pTo:Point): if not self._Csvreader.fileLoaded: return PathResult([],False) if not self._GraphLoaded: return PathResult([],False) dim=self.getMapDim() if dim.IsPointInDim(pFrom)==False: return PathResult([],False) if dim.IsPointInDim(pTo)==False: return PathResult([],False) if(pFrom==pTo): return PathResult(pTo,True) NodeFrom = Point.ToGridNodeFromPoint(pFrom, dim.height) NodeTo = Point.ToGridNodeFromPoint(pTo, dim.height) path=self._MovementCalculator.getPath(NodeFrom,NodeTo,self._Graph) if self._DrawGraphs and path.valid: # we set connectivity drawingGraph=nx.Graph() for idx in range(len(path.nodelist)): drawingGraph.add_node(idx) drawingGraph.nodes[idx]["X"] = path.points[idx].x drawingGraph.nodes[idx]["Y"] = path.points[idx].y drawingGraph.nodes[idx]["RealID"] = path.nodelist[idx] for idx in range(len(path.nodelist)): for inneridx in range(len(path.nodelist)): if(idx!=inneridx and self._Graph.has_edge(path.nodelist[idx],path.nodelist[inneridx])): drawingGraph.add_edge(idx,inneridx, weight=self._Consts.ConnectedGraphVertexWeight) graph_pos = nx.shell_layout(drawingGraph) nx.draw_networkx_nodes(drawingGraph, graph_pos, node_size=1000, node_color='blue', alpha=0.3) nx.draw_networkx_edges(drawingGraph, graph_pos) labels = {} for Idx in range(0, len(drawingGraph.nodes().keys())): labels[Idx] = "({0}-{1})".format(drawingGraph.nodes[Idx]["X"],drawingGraph.nodes[Idx]["Y"]) nx.draw_networkx_labels(drawingGraph, graph_pos, labels=labels, font_size=12, font_family='sans-serif') plt.show() return path
def getAlt(self,location:Point): dim = self.getMapDim() if dim.IsPointInDim(location) == False: return self._Consts.InValidAlt nodeloc = Point.ToGridNodeFromPoint(location, dim.height) return self._Csvreader.Matrix[location.y,location.x]