.
Distance from a point to a line
The distance from a point to a line is the shortest distance from a point to a line in Euclidean geometry. It can be calculated in the following ways.
Cartesian coordinates
In the case of a line in the plane given by the equation ax + by + c = 0, where a, b and c are real constants with a and b not both zero, the distance from the line to a point (x0,y0) is
\( \operatorname{distance}(ax+by+c=0, (x_0, y_0)) = \frac{|ax_0+by_0+c|}{\sqrt{a^2+b^2}}. \)
Vector formulation
Illustration of the vector formulation.
Suppose we express the line in vector form:
\( \mathbf{x} = \mathbf{a} + t\mathbf{n} \)
where n is a unit vector. That is, a point, x, on the line is found by moving to a point a in space, then moving t units along the direction of the line.
The distance of an arbitrary point p to this line is given by
\( \operatorname{distance}(\mathbf{x} = \mathbf{a} + t\mathbf{n}, \mathbf{p}) = \| (\mathbf{a}-\mathbf{p}) - ((\mathbf{a}-\mathbf{p}) \cdot \mathbf{n})\mathbf{n} \|. \)
This more general formula can be used in dimensions other than two. This equation is constructed geometrically as follows: \( \mathbf{a}-\mathbf{p} is a vector from p to the point a on the line. Then \( (\mathbf{a} - \mathbf{p}) \cdot \mathbf{n} is the projected length onto the line and so
\( ((\mathbf{a} - \mathbf{p}) \cdot \mathbf{n})\mathbf{n} \)
is a vector that is the projection of \mathbf{a}-\mathbf{p} onto the line and so
\( (\mathbf{a}-\mathbf{p}) - ((\mathbf{a}-\mathbf{p}) \cdot \mathbf{n})\mathbf{n} \)
is the component of \( \mathbf{a}-\mathbf{p} perpendicular to the line. The distance from the point to the line is then just the norm of that vector.
Proof 1 (algebraic proof)
Let point (x,y) be the intersection between the line ax + by + c = 0 and its perpendicular which contains (m,n), where point (m,n) is any arbitrary point on the perpendicular line to ax + by + c = 0.
Then it is necessary to show\( a^2(n-y)^2 + b^2(m-x)^2 = 2ab(m-x)(n-y). \)
The above equation can be changed to \( (a^2(n-y))/(m-x) + (b^2(m-x))/(n-y) = 2ab \), because the slope of the perpendicular to the ax+by+c which contains (x,y) and (m,n) is b/a.
Then
\( (a^2+b^2)((m-x)^2+(n-y)^2)=[a(m-x)+b(n-y)]^2=(am+bn+c)^2.
So the distance is
\( d=\sqrt{(m-x)^2+(n-y)^2}= |am+bn+c|/\sqrt{a^2+b^2}
Proof 2 (geometric proof)
Let the point S(m,n) connect to the point G(x,y) which is on the line ax+by+c=0, both lines being perpendicular to each other.
Draw a line am+bn+d=0, containing the point S(m,n), which is parallel to ax+by+c=0.
The absolute value of (c-d)/b, which is the distance of the line connecting the point G and some point F on the line am+bn+d=0 and parallel to the y-axis, is equal to the absolute value of (am+bn+c)/b.
Then the desired distance SG can be derived from the right triangle SGF, which is in the ratio of \( a:b:\sqrt{a^2+b^2}. \)
The absolute value of \( (am+bn+c)/b \)is the diagonal of the right triangle, so just multiply by the absolute value of b and divide by \( \sqrt{a^2+b^2} \), and the proof is complete.
Sample code
The following Java snippet provide distance from point P to the line that passes through A-B:
public double pointToLineDistance(Point A, Point B, Point P)
{
double normalLength = Math.sqrt((B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y));
return Math.abs((P.x - A.x) * (B.y - A.y) - (P.y - A.y) * (B.x - A.x)) / normalLength;
}
See also
Line-line intersection
Retrieved from "http://en.wikipedia.org/"
All text is available under the terms of the GNU Free Documentation License