Assignment Search Framework
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Pages
map_pathfinding_transitions.h
Go to the documentation of this file.
1 /*
2  * map_pathfinding_transitions.h
3  *
4  * LICENSE HERE
5  *
6  * Created on: 2016-09-23
7  * Author: Rick Valenzano
8  */
9 
10 #ifndef MAP_PATHFINDING_TRANSITIONS_H_
11 #define MAP_PATHFINDING_TRANSITIONS_H_
12 
13 #include "map_location.h"
14 #include "../../generic_defs/transition_system.h"
15 
21 enum class MapDir
22 {
24 };
25 
41 class MapPathfindingTransitions: public TransitionSystem<MapLocation, MapDir>
42 {
43 public:
49  MapPathfindingTransitions(bool four_dirs = true);
50 
57  MapPathfindingTransitions(std::string file_name, bool four_dirs = true);
58 
63 
64  // Overloaded methods.
65  virtual bool isApplicable(const MapLocation &state, const MapDir &action) const;
66  virtual double getActionCost(const MapLocation &state, const MapDir &action) const;
67  virtual void applyAction(MapLocation &state, const MapDir &action) const;
68  virtual void getActions(const MapLocation &state, std::vector<MapDir> &actions) const;
69  virtual bool isInvertible(const MapLocation &state, const MapDir &action) const;
70  virtual MapDir getInverse(const MapLocation &state, const MapDir &action) const;
71  MapDir getDummyAction() const;
72  bool isDummyAction(const MapDir &action) const;
73 
93  bool loadMap(std::string file_name);
94 
100  unsigned getMapWidth() const;
101 
107  unsigned getMapHeight() const;
108 
112  void set4Connected();
113 
117  void set8Connected();
118 
128  bool setDiagonalCost(double d_cost);
129 
135  bool is4Connected() const;
136 
142  bool is8Connected() const;
143 
147  void clearMap();
148 
149 protected:
150 
157  bool canNorth(const MapLocation &state) const;
158 
165  bool canEast(const MapLocation &state) const;
166 
173  bool canSouth(const MapLocation &state) const;
174 
181  bool canWest(const MapLocation &state) const;
182 
189  bool isNEEmpty(const MapLocation &state) const;
190 
197  bool isSEEmpty(const MapLocation &state) const;
198 
205  bool isSWEmpty(const MapLocation &state) const;
206 
213  bool isNWEmpty(const MapLocation &state) const;
214 
215  unsigned map_width;
216  unsigned map_height;
217 
219  double diag_cost;
220  std::vector<std::vector<bool> > grid_empty;
221 };
222 
230 std::ostream& operator <<(std::ostream & out, const MapDir &dir);
231 
232 #endif /* MAP_PATHFINDING_TRANSITIONS_H_ */
bool isDummyAction(const MapDir &action) const
Definition: map_pathfinding_transitions.cpp:345
Definition: map_pathfinding_transitions.h:41
bool setDiagonalCost(double d_cost)
Definition: map_pathfinding_transitions.cpp:189
bool canNorth(const MapLocation &state) const
Definition: map_pathfinding_transitions.cpp:357
unsigned map_height
The map height.
Definition: map_pathfinding_transitions.h:216
unsigned getMapHeight() const
Definition: map_pathfinding_transitions.cpp:174
void set4Connected()
Definition: map_pathfinding_transitions.cpp:179
virtual double getActionCost(const MapLocation &state, const MapDir &action) const
Definition: map_pathfinding_transitions.cpp:240
virtual ~MapPathfindingTransitions()
Definition: map_pathfinding_transitions.cpp:42
virtual MapDir getInverse(const MapLocation &state, const MapDir &action) const
Definition: map_pathfinding_transitions.cpp:315
void clearMap()
Definition: map_pathfinding_transitions.cpp:350
bool canWest(const MapLocation &state) const
Definition: map_pathfinding_transitions.cpp:381
bool isNWEmpty(const MapLocation &state) const
Definition: map_pathfinding_transitions.cpp:403
double diag_cost
The cost of a diagonal move.
Definition: map_pathfinding_transitions.h:219
bool canSouth(const MapLocation &state) const
Definition: map_pathfinding_transitions.cpp:374
bool loadMap(std::string file_name)
Definition: map_pathfinding_transitions.cpp:46
Definition: map_location.h:21
unsigned getMapWidth() const
Definition: map_pathfinding_transitions.cpp:169
std::vector< std::vector< bool > > grid_empty
Indexed by location, indicates if it is empty or an obstacle.
Definition: map_pathfinding_transitions.h:220
void set8Connected()
Definition: map_pathfinding_transitions.cpp:184
bool isSEEmpty(const MapLocation &state) const
Definition: map_pathfinding_transitions.cpp:393
MapDir getDummyAction() const
Definition: map_pathfinding_transitions.cpp:340
bool is4Connected() const
Definition: map_pathfinding_transitions.cpp:199
Definition: transition_system.h:23
bool isNEEmpty(const MapLocation &state) const
Definition: map_pathfinding_transitions.cpp:388
bool is8Connected() const
Definition: map_pathfinding_transitions.cpp:204
std::ostream & operator<<(std::ostream &out, const MapDir &dir)
Definition: map_pathfinding_transitions.cpp:408
virtual void applyAction(MapLocation &state, const MapDir &action) const
Definition: map_pathfinding_transitions.cpp:247
unsigned map_width
The map width.
Definition: map_pathfinding_transitions.h:215
MapPathfindingTransitions(bool four_dirs=true)
Definition: map_pathfinding_transitions.cpp:31
bool isSWEmpty(const MapLocation &state) const
Definition: map_pathfinding_transitions.cpp:398
bool canEast(const MapLocation &state) const
Definition: map_pathfinding_transitions.cpp:367
virtual bool isApplicable(const MapLocation &state, const MapDir &action) const
Definition: map_pathfinding_transitions.cpp:209
virtual void getActions(const MapLocation &state, std::vector< MapDir > &actions) const
Definition: map_pathfinding_transitions.cpp:283
bool four_connected
If the map is 4-connected or 8-connected.
Definition: map_pathfinding_transitions.h:218
virtual bool isInvertible(const MapLocation &state, const MapDir &action) const
Definition: map_pathfinding_transitions.cpp:308