Here you can find the source of distPointLineSquared(double px, double py, double qx, double qy, double rx, double ry)
Parameter | Description |
---|---|
px | a parameter |
py | a parameter |
qx | a parameter |
qy | a parameter |
rx | a parameter |
ry | a parameter |
public static double distPointLineSquared(double px, double py, double qx, double qy, double rx, double ry)
//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); } }