#ifndef DIJKSTRAMAPPER_H #define DIJKSTRAMAPPER_H #include "MyGridNode.h" /** * allows BETTER dijkstra calculation on top of our data-structure */ class DijkstraMapper { Grid& grid; public: DijkstraMapper(Grid& grid) : grid(grid) {;} int getNumNeighbors(const MyGridNode& node) const {return node.getNumNeighbors();} const MyGridNode* getNeighbor(const MyGridNode& node, const int idx) const {return &grid.getNeighbor(node, idx);} float getWeightBetween(const MyGridNode& n1, const MyGridNode& n2) const { float d = ((Point3)n1 - (Point3)n2).length(2) ; //if (d > 20) {d*= 1.30;} //d /= std::pow(n2.imp, 3); d /= n2.imp; return d; } }; /** * allows NORMAL dijkstra calculation on top of our data-structure */ class DijkstraMapperNormal { Grid& grid; public: DijkstraMapperNormal(Grid& grid) : grid(grid) {;} int getNumNeighbors(const MyGridNode& node) const {return node.getNumNeighbors();} const MyGridNode* getNeighbor(const MyGridNode& node, const int idx) const {return &grid.getNeighbor(node, idx);} float getWeightBetween(const MyGridNode& n1, const MyGridNode& n2) const { return ((Point3)n1 - (Point3)n2).length(); } }; #endif // DIJKSTRAMAPPER_H