点と直線の距離

点と直線の距離とは、その点から直線へまっすぐ(垂直)に下ろしたときの最短のへだたりです。直線上の点を好きに選んで結べば線分はいくらでも引けますが、垂線が最も短くなります。斜めに結んだ線分は、垂線を 11 辺とする直角三角形の斜辺にあたり、斜辺は他のどの辺よりも長いからです。ここでは原点 O(0,0)O(0, 0) から直線 3x+4y25=03x + 4y - 25 = 0 までの距離を求めます。

公式

一般に、点 (x0,y0)(x_0, y_0) から直線 ax+by+c=0ax + by + c = 0 までの距離は次の式で計算できます。

d=ax0+by0+ca2+b2d = \frac{|a x_0 + b y_0 + c|}{\sqrt{a^2 + b^2}}

この直線は a=3a = 3b=4b = 4c=25c = -25 です。点 (0,0)(0, 0) を代入すると、分子は 30+4025=25|3 \cdot 0 + 4 \cdot 0 - 25| = 25、分母は 32+42=5\sqrt{3^2 + 4^2} = 5 なので、距離は d=255=5d = \dfrac{25}{5} = 5 です。

公式の読み方

分子は、直線の式の左辺に点の座標をそのまま代入した値の絶対値です。点が直線の上にあれば左辺は 00 になり、距離も 00 になります。分母の a2+b2\sqrt{a^2 + b^2} は、直線に垂直な向きを表すベクトル (a,b)(a, b) の長さで、これで割ることによって式の値が実際の長さに直ります。

公式の導出

直線に垂直なベクトルを n=(a,b)\vec{n} = (a, b) とし、直線上の点を Q(x1,y1)Q(x_1, y_1) とします。QQ は直線の上にあるので ax1+by1+c=0a x_1 + b y_1 + c = 0 です。求める距離は、QQ から点 P(x0,y0)P(x_0, y_0) へ向かうベクトルを n\vec{n} の向きへ射影した長さにあたります。

d=nQPn=a(x0x1)+b(y0y1)a2+b2=ax0+by0+ca2+b2\begin{align*} d &= \frac{|\vec{n} \cdot \overrightarrow{QP}|}{|\vec{n}|} \\ &= \frac{|a(x_0 - x_1) + b(y_0 - y_1)|}{\sqrt{a^2 + b^2}} \\ &= \frac{|a x_0 + b y_0 + c|}{\sqrt{a^2 + b^2}} \end{align*}

最後の変形では ax1by1=c-a x_1 - b y_1 = c を使いました。QQ をどこにとっても同じ式になるので、直線上のどの点から測っても結果は変わりません。

垂線の足

OO から直線へ下ろした垂線は y=43xy = \dfrac{4}{3}x で、直線との交点(垂線の足)は (3,4)(3, 4) です。実際、y=43xy = \dfrac{4}{3}x3x+4y25=03x + 4y - 25 = 0 に代入すると 253x=25\dfrac{25}{3}x = 25 となり、x=3x = 3y=4y = 4 が得られます。原点から (3,4)(3, 4) までの長さは 32+42=5\sqrt{3^2 + 4^2} = 5 で、公式で求めた距離と一致します。

平行な 22 直線の距離

平行な 22 直線のへだたりも、この公式で測れます。ax+by+c1=0ax + by + c_1 = 0ax+by+c2=0ax + by + c_2 = 0xxyy の係数がそろっているので平行です。片方の上の点をとってもう片方までの距離を求めると、次の式になります。

d=c1c2a2+b2d = \frac{|c_1 - c_2|}{\sqrt{a^2 + b^2}}

平行なのでこの値はどこで測っても同じで、それが 22 直線の間隔です。

円との関係

円と直線の交わり方を、中心から直線までの距離と半径をくらべて判定するのも、この公式によるものです。中心 (0,0)(0, 0)・半径 55 の円 x2+y2=25x^2 + y^2 = 25 とこの直線は、距離がちょうど 55 で半径に等しいので接します。

距離と半径交わり方
d<rd < r22 点で交わる
d=rd = r11 点で接する
d>rd > r交わらない

符号の意味

絶対値を外した ax0+by0+ca x_0 + b y_0 + c の符号は、点が直線のどちら側にあるかを教えてくれます。22 点を代入した値の符号が違えば、その 22 点は直線をはさんで反対側にあり、結んだ線分は直線と交わります。この符号で 22 つの側を見分ける考え方は、機械学習でデータを直線(超平面)で分ける手法の土台にもなっています。

グラフの大きな点は、点 O(0,0)O(0, 0) と垂線の足 (3,4)(3, 4) で、この 22 点を結ぶ線分の長さが求める距離です。