| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||

java.lang.Objectnl.tudelft.goal.ut2004.floydwarshall.FloydWarshallMap
public class FloydWarshallMap
Private map using Floyd-Warshall for path-finding.
 It should be initialized upon receiving MapPointListObtained event.
 It precomputes all the paths inside the environment using Floyd-Warshall
 algorithm (O(n^3)). Use getReachable(), getDistance(), getPath() to obtain
 the info about the path.
 
 If needed you may call FloydWarshallMap#refreshPathMatrix() to recompute Floyd-Warshall. Especially useful
 if you're using NavigationGraphBuilder to modify the underlying navpoints/edges.
 
Based upon the implementation from Martin Krulis with his kind consent - Thank you!
NOTE: requires O(navpoints.size^3) of memory ~ which is 10000^3 at max for UT2004 (usually the biggest maps have 3000 navpoints max, but small maps, e.g., DM-1on1-Albatross has 200 navpoints).
| Nested Class Summary | |
|---|---|
| static class | FloydWarshallMap.PathMatrixNode | 
| Field Summary | |
|---|---|
| static int | BAD_EDGE_FLAGFlag mask representing unusable edge. | 
| protected  int | badEdgeFlagProhibited edges. | 
| protected  Map<Integer,NavPoint> | indicesNavPointsMapping indices to nav points. | 
| protected  Object | mutexSynchronizing access to object with respect to FloydWarshallMap#enabled. | 
| protected  Map<cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId,Integer> | navPointIndicesHash table converting navPoint IDs to our own indices. | 
| protected  FloydWarshallMap.PathMatrixNode[][] | pathMatrix | 
| Constructor Summary | |
|---|---|
| FloydWarshallMap(int badEdgeFlag,
                 Logger log) | |
| FloydWarshallMap(Logger log) | |
| Method Summary | |
|---|---|
|  boolean | checkLink(NavPointNeighbourLink edge)Checks whether the edge is usable. | 
| protected  void | cleanUp() | 
|  cz.cuni.amis.pogamut.base.agent.navigation.IPathFuture<NavPoint> | computePath(NavPoint from,
            NavPoint to)Returns path between navpoints 'from' -> 'to'. | 
|  float | getDistance(NavPoint from,
            NavPoint to)Calculate's distance between two nav points (using pathfinding). | 
|  List<NavPoint> | getPath(NavPoint from,
        NavPoint to)Returns path between navpoints 'from' -> 'to'. | 
| protected  FloydWarshallMap.PathMatrixNode | getPathMatrixNode(NavPoint np1,
                  NavPoint np2) | 
| static boolean | isWalkable(int flag) | 
| protected  void | performFloydWarshall(List<NavPoint> navPoints) | 
| protected  void | performFloydWarshall(MapPointListObtained map) | 
|  boolean | reachable(NavPoint from,
          NavPoint to)Whether navpoint 'to' is reachable from the navpoint 'from'. | 
|  void | refreshPathMatrix(List<NavPoint> navPoints)Force FloydWarshall to run again, useful if you modify navpoints using NavigationGraphBuilder. | 
|  String | toString() | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| Field Detail | 
|---|
public static final int BAD_EDGE_FLAG
protected int badEdgeFlag
protected Map<cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId,Integer> navPointIndices
protected Map<Integer,NavPoint> indicesNavPoints
WILL BE NULL AFTER CONSTRUCTION! SERVES AS A TEMPORARY "GLOBAL VARIABLE" DURING FLOYD-WARSHALL COMPUTATION AND PATH RECONSTRUCTION.
protected FloydWarshallMap.PathMatrixNode[][] pathMatrix
protected Object mutex
FloydWarshallMap#enabled.
| Constructor Detail | 
|---|
public FloydWarshallMap(Logger log)
public FloydWarshallMap(int badEdgeFlag,
                        Logger log)
| Method Detail | 
|---|
public static boolean isWalkable(int flag)
public void refreshPathMatrix(List<NavPoint> navPoints)
NavigationGraphBuilder.
protected void performFloydWarshall(MapPointListObtained map)
protected void performFloydWarshall(List<NavPoint> navPoints)
public boolean checkLink(NavPointNeighbourLink edge)
from - Starting nav point.edge - NeighNav object representing the edge.
protected FloydWarshallMap.PathMatrixNode getPathMatrixNode(NavPoint np1,
                                                            NavPoint np2)
public boolean reachable(NavPoint from,
                         NavPoint to)
 Throws exception if object is disabled, see FloydWarshallMap#setEnabled(boolean). Note that the object
 is enabled by default.
from - to - 
public float getDistance(NavPoint from,
                         NavPoint to)
 Throws exception if object is disabled, see FloydWarshallMap#setEnabled(boolean). Note that the object
 is enabled by default.
public List<NavPoint> getPath(NavPoint from,
                              NavPoint to)
 Throws exception if object is disabled, see FloydWarshallMap#setEnabled(boolean). Note that the object
 is enabled by default.
from - to - 
protected void cleanUp()
public String toString()
toString in class Object
public cz.cuni.amis.pogamut.base.agent.navigation.IPathFuture<NavPoint> computePath(NavPoint from,
                                                                                    NavPoint to)
 Throws exception if object is disabled, see FloydWarshallMap#setEnabled(boolean). Note that the object
 is enabled by default.
computePath in interface cz.cuni.amis.pogamut.base.agent.navigation.IPathPlanner<NavPoint>from - to - 
| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||