コード例 #1
0
    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)
コード例 #2
0
    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
コード例 #3
0
 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]