Java examples for java.lang:Math Geometry Line
Computes the point nearest to the specified point p3 on the line defined by the two points p1 and p2.
// Copyright (C) 2002-2012 Three Rings Design, Inc., All Rights Reserved import java.awt.Point; import java.awt.Rectangle; import java.awt.geom.Point2D; import static com.threerings.geom.Log.log; public class Main{ /**/*from w ww . jav a2 s . c o m*/ * Computes the point nearest to the specified point <code>p3</code> on the line defined by the * two points <code>p1</code> and <code>p2</code>. The computed point is stored into * <code>n</code>. <em>Note:</em> <code>p1</code> and <code>p2</code> must not be coincident. * * @param p1 one point on the line. * @param p2 another point on the line (not equal to <code>p1</code>). * @param p3 the point to which we wish to be most near. * @param n the point on the line defined by <code>p1</code> and <code>p2</code> that is * nearest to <code>p</code>. * * @return the point object supplied via <code>n</code>. */ public static Point nearestToLine(Point p1, Point p2, Point p3, Point n) { // see http://astronomy.swin.edu.au/~pbourke/geometry/pointline/ for a (not very good) // explanation of the math int Ax = p2.x - p1.x, Ay = p2.y - p1.y; float u = (p3.x - p1.x) * Ax + (p3.y - p1.y) * Ay; u /= (Ax * Ax + Ay * Ay); n.x = p1.x + Math.round(Ax * u); n.y = p1.y + Math.round(Ay * u); return n; } }