Distance from a point to a line

The distance (or perpendicular distance) from a point to a line is the shortest distance from a fixed point to any point on a fixed infinite line in Euclidean geometry. It is the length of the line segment which joins the point to the line and is perpendicular to the line. The formula for calculating it can be derived and expressed in several ways.

Knowing the shortest distance from a point to a line can be useful in various situations&mdash;for example, finding the shortest distance to reach a road, quantifying the scatter on a graph, etc. In Deming regression, a type of linear curve fitting, if the dependent and independent variables have equal variance this results in orthogonal regression in which the degree of imperfection of the fit is measured for each data point as the perpendicular distance of the point from the regression line.

Line defined by an equation
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}}. $$

The point on this line which is closest to (x0,y0) has coordinates:
 * $$x = \frac{b(bx_0 - ay_0)-ac}{a^2 + b^2} \text{ and } y = \frac{a(-bx_0 + ay_0) - bc}{a^2+b^2}.$$

Horizontal and vertical lines

In the general equation of a line, ax + by + c = 0, a and b cannot both be zero unless c is also zero, in which case the equation does not define a line. If a = 0 and b $≠$ 0, the line is horizontal and has equation y = -c/b. The distance from (x0, y0) to this line is measured along a vertical line segment of length |y0 - (-c/b)| = |by0 + c| / |b| in accordance with the formula. Similarly, for vertical lines (b = 0) the distance between the same point and the line is |ax0 + c| / |a|, as measured along a horizontal line segment.

Line defined by two points
If the line passes through two points P1=(x1,y1) and P2=(x2,y2) then the distance of (x0,y0) from the line is:
 * $$\operatorname{distance}(P_1, P_2, (x_0, y_0)) = \frac{|(y_2-y_1)x_0-(x_2-x_1)y_0+x_2 y_1-y_2 x_1|}{\sqrt{(y_2-y_1)^2+(x_2-x_1)^2}}. $$

The denominator of this expression is the distance between P1 and P2. The numerator is twice the area of the triangle with its vertices at the three points, (x0,y0), P1 and P2. See:. The expression is equivalent to $h=\frac{2A}{b}$, which can be obtained by rearranging the standard formula for the area of a triangle: $A=\frac{1}{2} bh$ , where b is the length of a side, and h is the perpendicular height from the opposite vertex.

An algebraic proof
This proof is valid only if the line is neither vertical nor horizontal, that is, we assume that neither a nor b in the equation of the line is zero.

The line with equation ax + by + c = 0 has slope -a/b, so any line perpendicular to it will have slope b/a (the negative reciprocal). Let (m, n) be the point of intersection of the line ax + by + c = 0 and the line perpendicular to it which passes through the point (x0, y0). The line through these two points is perpendicular to the original line, so
 * $$\frac{y_0 - n}{x_0 - m}=\frac{b}{a}.$$

Thus, $$a(y_0 -n) - b(x_0 - m) = 0,$$ and by squaring this equation we obtain:
 * $$a^2(y_0 - n)^2 + b^2(x_0 - m)^2 = 2ab(y_0 - n)(x_0 - m).$$

Now consider,
 * $$ (a(x_0 - m) + b(y_0 - n))^2 = a^2(x_0 - m)^2 + 2ab(y_0 -n)(x_0 - m) + b^2(y_0 - n)^2 = (a^2 + b^2)((x_0 - m)^2 + (y_0 - n)^2)$$

using the above squared equation. But we also have,
 * $$ (a(x_0 - m) + b(y_0 - n))^2 = (ax_0 + by_0 - am -bn )^2 = (ax_0 + by_0 + c)^2$$

since (m, n) is on ax + by + c = 0. Thus,
 * $$(a^2 + b^2)((x_0 - m)^2 + (y_0 - n)^2) = (ax_0 + by_0 + c)^2 $$

and we obtain the length of the line segment determined by these two points,
 * $$d=\sqrt{(x_0 - m)^2+(y_0 - n)^2}= \frac{|ax_0+ by_0 +c|}{\sqrt{a^2+b^2}}.$$

A geometric proof


This proof is valid only if the line is not horizontal or vertical.

Drop a perpendicular from the point P with coordinates (x0, y0) to the line with equation Ax + By + C = 0. Label the foot of the perpendicular R. Draw the vertical line through P and label its intersection with the given line S. At any point T on the line, draw a right triangle TVU whose sides are horizontal and vertical line segments with hypotenuse TU on the given line and horizontal side of length |B| (see diagram). The vertical side of ∆TVU will have length |A| since the line has slope -A/B.

∆PRS and ∆TVU are similar triangles, since they are both right triangles and ∠PSR ≅ ∠TUV since they are corresponding angles of a transversal to the parallel lines PS and UV (both are vertical lines). Corresponding sides of these triangles are in the same ratio, so:
 * $$\frac{|\overline{PR}|}{|\overline{PS}|} = \frac{|\overline{TV}|}{|\overline{TU}|}.$$

If point S has coordinates (x0,m) then |PS| = |y0 - m| and the distance from P to the line is:
 * $$ |\overline{PR} | = \frac{|y_0 - m||B|}{\sqrt{A^2 + B^2}}.$$

Since S is on the line, we can find the value of m,
 * $$m = \frac{-Ax_0 - C}{B},$$

and finally obtain:
 * $$ |\overline{PR}| = \frac{|Ax_0 + By_0 + C|}{\sqrt{A^2 + B^2}}.$$

A variation of this proof is to place V at P and compute the area of the triangle ∆UVT two ways to obtain that $$D|\overline{TU}| = |\overline{VU}||\overline{VT}|$$ where D is the altitude of ∆UVT drawn to the hypoteneuse of ∆UVT from P. The distance formula can then used to express $$|\overline{TU}|$$, $$|\overline{VU}|$$, and $$|\overline{VT}|$$in terms of the coordinates of P and the coefficients of the equation of the line to get the indicated formula.

A vector projection proof


Let P be the point with coordinates (x0, y0) and let the given line have equation ax + by + c = 0. Also, let Q = (x1, y1) be any point on this line and n the vector (a, b) starting at point Q. The vector n is perpendicular to the line, and the distance d from point P to the line is equal to the length of the orthogonal projection of $$\overrightarrow{QP}$$ on n. The length of this projection is given by:
 * $$d = \frac{|\overrightarrow{QP} \cdot \mathbf{n}|}{\| \mathbf{n}\|}.$$

Now,
 * $$ \overrightarrow{QP} = (x_0 - x_1, y_0 - y_1),$$ so $$ \overrightarrow{QP} \cdot \mathbf{n} = a(x_0 - x_1) + b(y_0 - y_1)$$ and $$ \| \mathbf{n} \| = \sqrt{a^2 + b^2},$$

thus
 * $$ d = \frac{|a(x_0 - x_1) + b(y_0 - y_1)|}{\sqrt{a^2 + b^2}}.$$

Since Q is a point on the line, $$c = -ax_1 - by_1$$, and so,
 * $$ d = \frac{|ax_0 + by_0 + c|}{\sqrt{a^2 + b^2}}.$$

Another formula
It is possible to produce another expression to find the shortest distance of a point to a line. This derivation also requires that the line is not vertical or horizontal.

The point P is given with coordinates ($$x_0, y_0$$). The equation of a line is given by $$y=mx+k$$. The equation of the normal of that line which passes through the point P is given $$y=\frac{x_0-x}{m}+y_0$$.

The point at which these two lines intersect is the closest point on the original line to the point P. Hence:
 * $$mx+k=\frac{x_0-x}{m}+y_0.$$

We can solve this equation for x,
 * $$x=\frac{x_0+my_0-mk}{m^2+1}.$$

The y coordinate of the point of intersection can be found by substituting this value of x into the equation of the original line,
 * $$y=m\frac{(x_0+my_0-mk)}{m^2+1}+k.$$

Using the equation for finding the distance between 2 points, $$d=\sqrt{(X_2-X_1)^2+(Y_2-Y_1)^2}$$, we can deduce that the formula to find the shortest distance between a line and a point is the following:


 * $$d=\sqrt{ \left( {\frac{x_0 + m y_0-mk}{m^2+1}-x_0 } \right) ^2 + \left( {m\frac{x_0+m y_0-mk}{m^2+1}+k-y_0 }\right) ^2 } = \frac{|k + m x_0 - y_0|}\sqrt{1 + m^2} .$$

Recalling that m = -a/b and k = - c/b for the line with equation ax + by + c = 0, a little algebraic simplification reduces this to the standard expression.

Vector formulation


The equation of a line can be given in vector form:


 * $$ \mathbf{x} = \mathbf{a} + t\mathbf{n}$$

Here $a$ is the position of a point on the line, and $n$ is a unit vector in the direction of the line. Then as scalar t varies, $x$ gives the locus 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 formula can be derived 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. Thus
 * $$(\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. This more general formula is not restricted to two dimensions.

Another vector formulation
If the line (l ) goes through point A and has a direction vector $$\vec u$$, the distance between point P and line (l) is
 * $$d(\mathrm{P}, (l))= \frac{\left\|\overrightarrow{\mathrm{AP}} \times\vec u\right\|}{\|\vec u\|}$$

where $$\overrightarrow{\mathrm{AP}} \times\vec u$$ is the cross product of the vectors $$\overrightarrow{\mathrm{AP}}$$ and $$\vec u$$ and where $$\|\vec u\|$$ is the vector norm of $$\vec u$$.

Note that cross products only exist in dimensions 3 and 7 and trivially in dimensions 0 and 1 (where the cross product is constant 0).