发布于 5年前

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);
}
©2020 edoou.com   京ICP备16001874号-3