• 求点到已知直线的距离和点到直线的垂点坐标


    <script>alert(1)</script>

    已知点(x,y),直线的两点(sx,sy),(ex,ey);

    (一)计算点到直线的距离
          var a:Number = (ey - sy)/(ex- sx);
          var b:Number = -1;
          var c:Number = sy-a*sx;
          距离td = Math.abs(a*x+b*y+c)/Math.sqrt(a*a+b*b);      
    (二)计算垂足的坐标
     方法一:设直线方程为ax+by+c=0,点坐标为(m,n),则垂足为((b*b*m-a*b*n-a*c)/(a*a+b*b),(a*a*n-a*b*m-b*c)/(a*a+b*b))
    方法二:

    如果该线段平行于X轴(Y轴),则过点point作该线段所在直线的垂线,垂足很容
    易求得,然后计算出垂足,如果垂足在线段上则返回垂足,否则返回离垂足近的端
    点;

    如果该线段不平行于X轴也不平行于Y轴,则斜率存在且不为0。设线段的两端点为
    pt1和pt2,斜率为:
    k = ( pt2.y - pt1. y ) / (pt2.x - pt1.x );
    该直线方程为:
    y = k* ( x - pt1.x) + pt1.y
    其垂线的斜率为 - 1 / k,
    垂线方程为:
    y = (-1/k) * (x - point.x) + point.y
    联立两直线方程解得:
    x  =  ( k^2 * pt1.x + k * (point.y - pt1.y ) + point.x ) / ( k^2 + 1)
    y  =  k * ( x - pt1.x) + pt1.y;

    然后再判断垂足是否在线段上,如果在线段上则返回垂足;如果不在则计算两端点
    到垂足的距离,选择距离垂足较近的端点返回。

    参考:http://blog.csdn.net/Camper_beijing/article/details/2863800

  • 相关阅读:
    day14: 生成器进阶
    day13: 迭代器和生成器
    day12:装饰器的进阶
    day11:装饰器
    day10:函数进阶
    English class 81:How Vulnerability can make our lives better?
    piano class 12
    UE4之循环
    UE4之数组
    UE4中常见的类
  • 原文地址:https://www.cnblogs.com/gisxiang/p/3152973.html
Copyright © 2020-2023  润新知