lite-pathfindings
Version:
Simple, intuitive and lightweight pathfinding algorithms
49 lines (43 loc) • 1.29 kB
JavaScript
;
module.exports = {
edgeMapToMatrix: function edgeMapToMatrix(edgeMap) {
var matrix = [];
var edges = {};
var mapKeys = Object.keys(edgeMap);
for (var i = 0; i < mapKeys.length; i++) {
edges[mapKeys[i]] = i;
}
for (var _i = 0; _i < mapKeys.length; _i++) {
edges[mapKeys[_i]] = _i;
var matrixLine = new Array(mapKeys.length).fill(Number.POSITIVE_INFINITY);
matrixLine[_i] = 0;
for (var edge in edgeMap[mapKeys[_i]]) {
matrixLine[this.getEdgeNumber(edges, edge)] = edgeMap[mapKeys[_i]][edge];
}
matrix.push(matrixLine);
}
return { matrix: matrix, edges: edges };
},
getEdgeNumber: function getEdgeNumber(edges, edge) {
return edges[edge];
},
getEdgeName: function getEdgeName(edges, number) {
for (var edge in edges) {
if (edges[edge] == number) return edge;
}
},
getNamedPath: function getNamedPath(path, edges) {
var _this = this;
return path.map(function (edgeNumber) {
return _this.getEdgeName(edges, edgeNumber);
});
},
edgeMapContainNegativeValue: function edgeMapContainNegativeValue(edgeMap) {
for (var edge in edgeMap) {
for (var vertex in edgeMap[edge]) {
return true;
}
}
return false;
}
};