title: Function for finding the distance between a point and an edge in java
body: <p>Does anyone have a function in java for finding the shortest distance between a point and a line segment/edge? Every example I find is in another language and uses a bunch of sub functions. It can't be based on the assumption that they are perpendicular. </p>
  
  <p>Update</p>
  
  <p>I ported over a python function to java. If anyone is good at math and can verify I would appreciate it. x and y is the point, and other params are for the line segment. </p>
  
  <pre><code>public float pDistance(float x, float y, float x1, float y1, float x2, float y2) {
  
            float A = x - x1;
            float B = y - y1;
            float C = x2 - x1;
            float D = y2 - y1;
  
            float dot = A * C + B * D;
            float len_sq = C * C + D * D;
            float param = -1;
            if (len_sq != 0) //in case of 0 length line
                param = dot / len_sq;
  
            float xx, yy;
  
            if (param &lt; 0) {
              xx = x1;
              yy = y1;
            }
            else if (param &gt; 1) {
              xx = x2;
              yy = y2;
            }
            else {
              xx = x1 + param * C;
              yy = y1 + param * D;
            }
  
            float dx = x - xx;
            float dy = y - yy;
            return (float) Math.sqrt(dx * dx + dy * dy);
          }
  </code></pre>