JavaScript计算点到线的最短距离
点到线的最短距离实际上就是点到线的垂直距离。点坐标为(x,y),取线上的两点(x1,y1)和(x2,y2)来计算它们的距离。
/**
* 点到线的最短距离实际上就是点到线的垂直距离。
* (x,y)为点的坐标
* (x1,y1)为线段上点的坐标
* (x2,y2)为线段另外一点的坐标
*/
function distanceOfPoint2Line(x, y, x1, y1, x2, y2) {
var A = x - x1;
var B = y - y1;
var C = x2 - x1;
var D = y2 - y1;
var dot = A * C + B * D;
var len_sq = C * C + D * D;
var param = -1;
if (len_sq != 0) //线段长度不能为0
param = dot / len_sq;
var xx, yy;
if (param 1) {
xx = x2;
yy = y2;
}
else {
xx = x1 + param * C;
yy = y1 + param * D;
}
var dx = x - xx;
var dy = y - yy;
return Math.sqrt(dx * dx + dy * dy);
}