pathfinding
Version:
Comprehensive pathfinding library for grid based games
49 lines (43 loc) • 1.14 kB
JavaScript
/**
* @namespace PF.Heuristic
* @description A collection of heuristic functions.
*/
module.exports = {
/**
* Manhattan distance.
* @param {number} dx - Difference in x.
* @param {number} dy - Difference in y.
* @return {number} dx + dy
*/
manhattan: function(dx, dy) {
return dx + dy;
},
/**
* Euclidean distance.
* @param {number} dx - Difference in x.
* @param {number} dy - Difference in y.
* @return {number} sqrt(dx * dx + dy * dy)
*/
euclidean: function(dx, dy) {
return Math.sqrt(dx * dx + dy * dy);
},
/**
* Octile distance.
* @param {number} dx - Difference in x.
* @param {number} dy - Difference in y.
* @return {number} sqrt(dx * dx + dy * dy) for grids
*/
octile: function(dx, dy) {
var F = Math.SQRT2 - 1;
return (dx < dy) ? F * dx + dy : F * dy + dx;
},
/**
* Chebyshev distance.
* @param {number} dx - Difference in x.
* @param {number} dy - Difference in y.
* @return {number} max(dx, dy)
*/
chebyshev: function(dx, dy) {
return Math.max(dx, dy);
}
};