倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

点と直線の距離の公式を導く ~ベクトルを用いる方法~

今回は点と直線の距離を、ベクトルを用いた方法で導いてみます(目次)。 この方法は簡単に3次元(以上)に拡張できるので秀逸です。

公式の確認

点と直線の距離の公式はこんなのでした:

{ P(p,\,q) } と直線 { \ell : ax + by + c = 0 } との距離 { d }

  { \displaystyle
\begin{align*}
    d = \frac{\left|ap + bq + c\right|}{\sqrt{a^2 + b^2}}
\end{align*}
}

で与えられる。

では導出を。

導出

{ P(p,\,q) } から直線 { \ell } に下ろした垂線の足を { H(s,\,t) } としましょう。 { H } は直線 { \ell } 上の点なので

  { \displaystyle
\begin{align*}
    as + bt + c &= 0 & \cdots (1)
\end{align*}
}

を満たします。 ベクトル { \overrightarrow{PH} = (s-p,\,t-q) } は直線 { \ell } に垂直なので、直線 { \ell } の法線ベクトル { \vec{n} = (a,\,b) } に平行となります。 よって、{ k } を実数として

  { \displaystyle
\begin{align*}
    \overrightarrow{PH} &= k \vec{n} & \cdots (2)
\end{align*}
}

と書けます。

{ k } の値を求める
(2) 式を成分で書き下すと

  { \displaystyle
\begin{align*}
    (s - p,\, t - q) = k (a,\,b)
\end{align*}
}

{ s,\,t } について解くと

  { \displaystyle
\begin{align*}
    \begin{cases}
        s = p + ka \\
        t = q + kb
    \end{cases}
\end{align*}
}

これを (1) 式に代入すると

  { \displaystyle
\begin{align*}
    & a(p + ka) + b(q + kb) + c = 0 \\
    & (a^2 + b^2) k + ap + bq + c = 0 \\
    \therefore \, & k = -\frac{ap + bq + c}{a^2 + b^2}
\end{align*}
}


点と直線の距離を求める
求めたい点と直線の距離は { PH } なので、上記の { k } の値を使ってこれを計算しましょう:

  { \displaystyle
\begin{align*}
    PH
        &= \left|\overrightarrow{PH}\right| = \left|k\right|\left|\vec{n}\right| \\
        &= \frac{\left|ap + bq + c\right|}{a^2 + b^2} \, \sqrt{a^2 + b^2} \\
        &= \frac{\left|ap + bq + c\right|}{\sqrt{a^2 + b^2}}
\end{align*}
}

これで点と直線の距離の公式が導けました。

高次元への拡張


ベクトルを使った方法では高次元への拡張が簡単なので、実際にやってみましょう。 公式として導けるのは、n 次元空間における点と (n-1) 次元超平面との距離です。

(n-1) 次元超平面
n 次元空間(座標は { x_i \; (i = 1,\,2,\,3,\,\cdots ,\,n) } とする)での (n-1) 次元超平面は

  { \displaystyle
\begin{align*}
     a_0 + \sum_{i=1}^n a_i x_i &= 0 & a_0,\, a_i : \textrm{constant}
\end{align*}
}

で表されます。 この超平面の法線ベクトル { \vec{n}}

  { \displaystyle
\begin{align*}
    \vec{n} = (a_1,\,a_2,\,\cdots,\,a_n)
\end{align*}
}

で与えられます。 ちゃんとした証明は載せませんが、大雑把には以下のように示せます。 超平面上の2点 { P(p_i),\,Q(q_i) } をとると、これらは以下を満たします:

  { \displaystyle
\begin{align*}
    a_0 + \sum_{i=1}^n a_i p_i &= 0 & a_0 + \sum_{i=1}^n a_i q_i = 0
\end{align*}
}

辺々をそれぞれ引くと

  { \displaystyle
\begin{align*}
    \sum_{i=1}^n a_i (p_i - q_i) = 0 \\
    \vec{n}\cdot \overrightarrow{QP} = 0
\end{align*}
}

よって { \vec{n} } とベクトル { \overrightarrow{QP} } が垂直であることが分かります。 点 { P,\,Q } は任意だったので、この超平面と { \vec{n} } は垂直になります。

平行なベクトル
以上を踏まえて、平面の場合に行った点と直線の距離の公式の導出を同じように辿ってみましょう。 超平面 { \alpha }

  { \displaystyle
\begin{align*}
    a_0 + \sum_{i=1}^n a_i x_i &= 0 & \cdots(3)
\end{align*}
}

で与えられているとします。 点 { P(p_i) } から超平面 { \alpha } へ下ろした垂線の足を { H(h_i) } とすると、{ k } を実数として

  { \displaystyle
\begin{align*}
    \overrightarrow{PH} &= k \vec{n} & \cdots(4)
\end{align*}
}

が成り立ちます。

{ k } の値を求める
(4) 式より

  { \displaystyle
\begin{align*}
    &h_i - p_i = k a_i \\
    \therefore \, & h_i = p_i + k a_i & \cdots (5)
\end{align*}
}

また、{ H } は超平面 { \alpha } 上の点なので

  { \displaystyle
\begin{align*}
    a_0 + \sum_{i=1}^n a_i h_i &= 0 &\cdots(6)
\end{align*}
}

が成り立ちます。 (5) 式を (6) 式に代入すると

  { \displaystyle
\begin{align*}
    & a_0 + \sum_{i=1}^n a_i p_i + k\sum_{i=1}^n a_i^2 \\
    \therefore \, & k = - \frac{a_0 + \sum_{i=1}^n a_i p_i}{\sum_{i=1}^n a_i^2}
\end{align*}
}


点と直線の距離を求める
求めたい点と直線の距離は { PH } なので、2次元の場合と同様に上記の { k } の値を使ってこれを計算しましょう:

  { \displaystyle
\begin{align*}
    PH
        &= \left|\overrightarrow{PH}\right|
        = \left|k\right|\left|\vec{n}\right| \\
        &= \frac{\left|a_0 + \sum_{i=1}^n a_i p_i\right|}{\sqrt{\sum_{i=1}^n a_i^2}}
\end{align*}
}

これで点と直線の距離の公式が導けました。 ちょっと別な形も含めてまとめると

n 次元空間内の点 { P(p_i) } と (n-1) 次元超平面 { \alpha } :

  { \displaystyle
\begin{align*}
    a_0 + \sum_{n=1}^n a_i x_i = 0
\end{align*}
}

との距離 { d }

  { \displaystyle
\begin{align*}
    d  &= \frac{\left|a_0 + \sum_{i=1}^n a_i p_i\right|}{\sqrt{\sum_{i=1}^n a_i^2}} \\
        &= \frac{\left|a_0 + \vec{a}\cdot \vec{p}\right|}{\vec{a}^2}
\end{align*}
}

で与えられる。 ただし、ベクトル { \vec{a},\,\vec{p} } は、成分が

  { \displaystyle
\begin{align*}
    \left[\vec{a}\right]_i = a_i \qquad \left[\vec{p}\right]_i = p_i
\end{align*}
}

で定められる。

{ \vec{a} } は導出の過程で超平面の法線ベクトルとして導入した { \vec{n} } と同じものです。 また、分母に現れているベクトルの2乗は自分自身との内積です。 これはそのベクトルの絶対値の2乗と同じです。

3次元空間
特に3次元空間の場合は { \vec{a} = (a,\,b,\,c) \, \vec{p} = (p,\,q,\,r) } として

{ P(p, q, r) } と平面 { \ell : ax + by + cz + d = 0 } との距離 { r }

  { \displaystyle
\begin{align*}
    r = \frac{\left|ap + bq + cr + d\right|}{\sqrt{a^2 + b^2 + c^2}}
\end{align*}
}

で与えられる。

となります。

チャート式基礎からの数学II+B

チャート式基礎からの数学II+B