📅  最后修改于: 2023-12-03 15:31:46.211000             🧑  作者: Mango
JavaScript 是一种广泛使用的编程语言,主要用于 Web 开发和浏览器端交互。在实际开发中,计算两个对象之间的距离是经常会遇到的需求。
欧几里得距离,也称为欧氏距离或 $L^2$ 距离,是最常见的距离计算方法。它表示从一个点到另一个点的直线距离。
在平面直角坐标系中,两点 $(x_1, y_1)$ 和 $(x_2, y_2)$ 之间的欧几里得距离为:
$$ d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} $$
在 JavaScript 中可以使用以下函数计算欧几里得距离:
/**
* 计算两点之间的欧几里得距离
* @param {Number} x1 第一个点 x 坐标
* @param {Number} y1 第一个点 y 坐标
* @param {Number} x2 第二个点 x 坐标
* @param {Number} y2 第二个点 y 坐标
* @returns {Number} 两个点之间的欧几里得距离
*/
function distance(x1, y1, x2, y2) {
const dx = x2 - x1;
const dy = y2 - y1;
return Math.sqrt(dx * dx + dy * dy);
}
曼哈顿距离,也称为城市街区距离或 $L^1$ 距离,是一种曼哈顿模式下的距离计算方式。它表示从一个点到另一个点在网格中行走的距离。
在平面直角坐标系中,两点 $(x_1, y_1)$ 和 $(x_2, y_2)$ 之间的曼哈顿距离为:
$$ d = |x_2 - x_1| + |y_2 - y_1| $$
在 JavaScript 中可以使用以下函数计算曼哈顿距离:
/**
* 计算两点之间的曼哈顿距离
* @param {Number} x1 第一个点 x 坐标
* @param {Number} y1 第一个点 y 坐标
* @param {Number} x2 第二个点 x 坐标
* @param {Number} y2 第二个点 y 坐标
* @returns {Number} 两个点之间的曼哈顿距离
*/
function manhattanDistance(x1, y1, x2, y2) {
return Math.abs(x2 - x1) + Math.abs(y2 - y1);
}
切比雪夫距离,也称为棋盘距离或 $L^\infty$ 距离,是指在 $n$ 维空间中两点坐标数值差的绝对值的最大值。
在平面直角坐标系中,两点 $(x_1, y_1)$ 和 $(x_2, y_2)$ 之间的切比雪夫距离为:
$$ d = \max(|x_2 - x_1|, |y_2 - y_1|) $$
在 JavaScript 中可以使用以下函数计算切比雪夫距离:
/**
* 计算两点之间的切比雪夫距离
* @param {Number} x1 第一个点 x 坐标
* @param {Number} y1 第一个点 y 坐标
* @param {Number} x2 第二个点 x 坐标
* @param {Number} y2 第二个点 y 坐标
* @returns {Number} 两个点之间的切比雪夫距离
*/
function chebyshevDistance(x1, y1, x2, y2) {
return Math.max(Math.abs(x2 - x1), Math.abs(y2 - y1));
}
以上是 JavaScript 中常用的距离计算方法。如果项目中需要计算其他距离类型,可以根据需要自行编写。