Java Distance Calculate distPointLineSquared(double px, double py, double qx, double qy, double rx, double ry)

Here you can find the source of distPointLineSquared(double px, double py, double qx, double qy, double rx, double ry)

Description

Calculates square of min distance from point to an infinite line segment.

License

Apache License

Parameter

Parameter Description
px a parameter
py a parameter
qx a parameter
qy a parameter
rx a parameter
ry a parameter

Declaration

public static double distPointLineSquared(double px, double py, double qx, double qy, double rx, double ry) 

Method Source Code

//package com.java2s;
/*//from  ww  w  .j  av  a2  s . c o  m
 * Copyright 2011 Mark McKay
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

public class Main {
    /**
     * Calculates square of min distance from point to an infinite line segment.
     * P - Point
     * Q - Point on line of reference
     * R - Vector indicating direction of line
     *
     * @param px
     * @param py
     * @param qx
     * @param qy
     * @param rx
     * @param ry
     * @return
     */
    public static double distPointLineSquared(double px, double py, double qx, double qy, double rx, double ry) {
        double sx = px - qx;
        double sy = py - qy;

        return dot(sx, sy, sx, sy) - distAlongRaySquared(px, py, qx, qy, rx, ry);
    }

    public static double dot(double ax, double ay, double bx, double by) {
        return ax * bx + ay * by;
    }

    public static int dot(int ax, int ay, int bx, int by) {
        return ax * bx + ay * by;
    }

    public static double distAlongRaySquared(double px, double py, double qx, double qy, double rx, double ry) {
        double sx = px - qx;
        double sy = py - qy;

        double num = dot(sx, sy, rx, ry);
        return num * num / dot(rx, ry, rx, ry);
    }
}

Related

  1. distL1(double[] h1, double[] h2)
  2. distL1(int[] h1, int[] h2)
  3. distortion(double[] xvalues, double[] yvalues, int[] include)
  4. distpl(double A, double B, double C, double x, double y)
  5. distPointLineSigned(double px, double py, double qx, double qy, double rx, double ry)
  6. distPointSegmentSquared(double px, double py, double qx, double qy, double rx, double ry)
  7. distribution(int[] values)
  8. distsimFeaturesException()
  9. distSphericalEarth(double lat1, double lon1, double lat2, double lon2)