added several grid-walks
added new helper methods/classes (e.g. for heading) new test cases optimize the dijkstra cleanups/refactoring added timed-benchmarks to the log many more...
This commit is contained in:
@@ -20,23 +20,20 @@ template <typename T> struct DijkstraNode {
|
||||
float cumWeight;
|
||||
|
||||
|
||||
// /** ctor */
|
||||
// DijkstraNode() : element(nullptr), previous(), cumWeight(INF) {;}
|
||||
|
||||
/** ctor */
|
||||
DijkstraNode(const T* element) : element(element), previous(), cumWeight(INF) {;}
|
||||
|
||||
|
||||
/** equal? (bi-dir) */
|
||||
bool operator == (const DijkstraNode<T>& other) {
|
||||
return element == other.element;
|
||||
}
|
||||
// /** equal? (bi-dir) */
|
||||
// bool operator == (const DijkstraNode<T>& other) const {
|
||||
// return element == other.element;
|
||||
// }
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* data structure describing the connection between two nodes
|
||||
* only used to track already processed connections!
|
||||
* data structure describing the connection between two nodes.
|
||||
* NOTE: only used to track already processed connections!
|
||||
*/
|
||||
template <typename T> struct DijkstraEdge {
|
||||
|
||||
@@ -49,7 +46,7 @@ template <typename T> struct DijkstraEdge {
|
||||
/** ctor */
|
||||
DijkstraEdge(const DijkstraNode<T>* src, const DijkstraNode<T>* dst) : src(src), dst(dst) {;}
|
||||
|
||||
/** equal? (bi-dir) */
|
||||
/** equal? (bi-directional! edge direction does NOT matter) */
|
||||
bool operator == (const DijkstraEdge& other) const {
|
||||
return ((dst == other.dst) && (src == other.src)) ||
|
||||
((src == other.dst) && (dst == other.src));
|
||||
@@ -57,15 +54,7 @@ template <typename T> struct DijkstraEdge {
|
||||
|
||||
};
|
||||
|
||||
//template <typename T> struct DijkstraEdgeWeighted : public DijkstraEdge<T> {
|
||||
|
||||
// /** the edge's weight */
|
||||
// float weight;
|
||||
|
||||
// DijkstraEdgeWeighted(const DijkstraNode<T>* src, const DijkstraNode<T>* dst, const float weight) : DijkstraEdge<T>(src,dst), weight(weight) {;}
|
||||
|
||||
//};
|
||||
|
||||
/** allows adding DijkstraEdge<T> to hash-maps */
|
||||
namespace std {
|
||||
template <typename T> struct hash<DijkstraEdge<T>>{
|
||||
size_t operator()(const DijkstraEdge<T>& e) const {
|
||||
|
||||
Reference in New Issue
Block a user