如何计算路径的最短距离?

时间:2016-11-20 13:05:41

标签: java math coordinates

我有2个坐标(A1和A2),由一条直线连接(我的路径)。如何计算给定坐标(B1或B2)与直线的最短距离?

A1 and A2 connected by straight line

1 个答案:

答案 0 :(得分:0)

  1. 数学

    正如wikipedia中所述 线和点之间的最短距离可以计算为 如下:

  2.   

    如果线穿过两个点P1 =(x1,y1)和P2 =(x2,y2),那么(x0,y0)与线的距离为:   Blockquote

    1. Java implimentaion

      class Point {
        double x,y;
      
        Point(double pX, double pY){
          this.x= pX;
          this.y= pY;
        }
      
        public double distance(Point A1, Point A2){
          double numerator = Math.abs((A2.y - A1.y)*this.x + (A2.x - A1.x)*this.y + A2.x*A1.y - A2.y*A1.x);
          double denominator = Math.sqrt(Math.pow(A2.y - A1.y,2) + Math.pow(A2.x - A1.x,2));
      
          return numerator/denominator;       
        }
      
      }
      
    2. 要计算Point BPoints A1A2定义的行之间的距离,请使用distance方法,如下所示:

      public static void main (String[] args) throws java.lang.Exception
      {
          Point A1 = new Point(0,3);
          Point A2 = new Point(2,0);
          Point B = new Point(0,0);
      
          System.out.println(
              B.distance(A1,A2)
          );
      }
      

      here代码已在ideone中运行。

      但请求基础知识,选择一些好的和有趣的编码书或啧啧,并给它一个去,快乐编码:)