ONE源代码分析——movement3之MapRouteMovement

来源:互联网 发布:appstore没法下载软件 编辑:程序博客网 时间:2024/04/28 05:39

在分析MapRouteMovement之前,我们先来看一下MapRoute类。

MapRoute类

MapRoute类表示一条由地图节点组成的路径,可以是多种类型,类型是由类型参数所定义的。

数据域:

static final int CIRCULAR:routeID类型——circular(到达路径最后一个点后,下一个点为第一个点)

static final int PINGPONG:routeID类型——pingpong(到达路径最后一个点,反向)

LIst<MapNode> stops:所有要停靠的点

int type:route类型

int index:前一返回地图节点的序号

boolean comingBack:是否应该回程


函数域:

构造函数MapRoute(int type, List<MapNode> stops)指定route类型和停靠点。


void setNextIndex(int index)设定该route的下一个index。


MapNode nextStop()返回下一个停靠点(根据route类型)。


static List<MapRoute> readRoutes(String fileName, int type, SimMap map)从配置中定义的文件中读取route。WTK文件以LINESTRING开头的每一行,表示地图中的一条路线上的每个点,WTKReader类中函数readLines(File)将每条路线上的每个点读取到List<List<Coord>>中,然后用List<List<Coord>>中的数据创建List<MapRoute>。

MapRouteMovement类

该移动模型类是MapBasedMovement的子类,使用预先地图区域决定的路径。节点在这个移动模型中,可以停在每个路径的waypoint上,利用DijkstraPathFinder寻找到下一waypoint的最短路径。

数据域:

static final String ROUTE_FILE_S:每个节点组配置使用的route文件

static final String ROUTE_TYPE_S:每个节点组配置使用的route类型

static final String ROUTE_FIRST_STOP_S:每个节点组配置选择的第一个停靠点,默认值或给出负值,随机给出

DijkstraPathFinder pathFinder:Dijkstra最短路径算法finder

List<MapRoute> allRoutes:移动模型的所有MapRoute

int nextRouteIndex:下一个MapRoute的序号

int firstStopIndex:一组节点第一个要停靠的点的序号(-1表示随机)

MapRoute route:移动模型的当前route


函数域:

构造函数MapRouteMovement(Settings settings)基于配置创建对象。


Path getPath()获取一条路径。从当前route的nextStop确定目的地,通过使用DijkstraFinder来确定到达目的地的路径。

0 0