直線と直線の距離を与える公式

最終更新 2018年 4月21日
直線と直線の距離
  点 $\mathbf{x}_{0}$ を通り、 方向ベクトルが $\mathbf{m}$ の直線 $L$ 上の点と、 点 $\mathbf{x}_{0}'$ を通り、 方向ベクトルが $\mathbf{m}'$ の直線 $L'$ 上の点は、 それぞれ
と表される。 このとき、 $L$ と $L'$ の間の距離 $d$ は、
直線と直線の間の距離 (二直線間の距離) の公式
である。 ここで、$\mathbf{x}_{0}$, $\mathbf{x}_{0}'$ は、それぞれの直線上の一点である。 また、 $\mathbf{m}$, $\mathbf{m}'$ は、それぞれの直線の方向ベクトルである。
直線と直線の間の距離 (二直線間の距離) の公式の図

証明
  次のステップを踏んで証明を行う。
(A)   二直線と直交し、なおかつ交差する直線の存在
(B)   上記の直線と二直線の交点間の距離が、二直線間の距離を最小にすること
(C)   二直線間の最小距離の導出
(A)   二直線と直交し、なおかつ交差する直線の存在
  二つの直線
の方向ベクトル $\mathbf{m}$ と $\mathbf{m}'$ の両方と直交する方向ベクトルは、 これらの外積の方向を向く。すなわち、 $ \mathbf{m} \times \mathbf{m}' $ の方向を向く。
  ここで、 直線 $L$ 上に原点を持ち、$\mathbf{m}$ の方向を $X$ 軸、 $\mathbf{m} \times \mathbf{m}'$ の方向を $Y$ 軸とし、 右手系を成すように $Z$ 軸を定義する座標系を $C$ とする。 $C$ の各軸を向く 正規直交基底
と表す。
直線と直線の距離の図

  座標系 $C$ を用いると、 $\mathbf{x}_{0}$ は 直線 $L$ 上の一点の位置であるので、
と表すことができる ($\alpha$ は定数)。 これを $(1)$ に代入すると、 $L$ 上の点は
と表される。
  一方、スカラー三重積の循環性により、
が成り立つので、 $\mathbf{m}'$ は $\mathbf{e}_{y}$ と直交するベクトルである。 したがって、 $\mathbf{m}'$ を
と表すことができ ($m_{x}, m_{y}$ は定数)、 これを $(1)$ に代入すると、 $L'$ 上の点は、
と表される。
  また、 点 $\mathbf{x}_{0}'$ を $C$ の正規直交基底を用いて
と表すと、 $L'$ 上の点は、
と表される。
  ここで、パラメータ $t'$ が任意の値をとれることから、
を満たす $t'$ が存在する。 これを満たす $t'$ に対する直線 $L'$ 上の位置を $\mathbf{k}'$ とすると、
である。
  一方で、 パラメータ $t$ もまた任意の値をとれるので、
を満たす $t$ が存在する。 これを満たす $t$ に対する直線 $L$ 上の位置を $\mathbf{k}$ とすると、 $(2)$ から $\mathbf{k}$ は、
である。
  これらより、
となるが、 スカラー三重積の循環性により、
が成立する。ここで同じベクトル同士の外積が $0$ になることを用いた。
  これらの式は、 $\mathbf{k}$ と $\mathbf{k}'$ を結ぶ直線 ($L_{k}$とする) が直線 $L$ と 直線 $L'$ の双方に直交する直線であることを表している。 $L_{k}$ は $L$ 上の点 $\mathbf{k}$ と $L'$ 上の点 $\mathbf{k}'$ を通るので、 これらと交差する直線でもある。
  以上から、 2直線 $L$, $L'$ と直交し、 $L$, $L'$ と交差する直線 ($L_{k}$のこと) が存在する。
(B)   $\mathbf{k}$ と $\mathbf{k}'$ の間の距離が、二直線間の距離を最小にすること
  ここまでの議論によって、 二直線 $L$ と $L'$ に直交し、 なおかつ、 これらと交差する直線 $L_{k}$ が存在することが確かめられた。
  今度は、$L_{k}$ と $L$ との交点 $\mathbf{k}$ と、 $L_{k}$ と $L'$ との交点 $\mathbf{k}'$ 間の距離が、 $L$ と $L'$ のどんな点を結んだ距離よりも、 小さくなることを証明する。 すなわち、 $L$ 上の任意の点を $\mathbf{x}$ とし、 $L'$ 上の任意の点 $\mathbf{x}'$ とするとき、
が成り立つことを証明する。
  直線 $L_{k}$ の方向ベクトルを $\mathbf{m}_{k}$ とし、 $L_{k}$ 上にある一点を $\mathbf{x}_{k}$ と表すと、 $L_{k}$ 上の任意の点は、
と表せる。 ここで $t_{k}$ は、直線のパラメータである。 また、$\mathbf{m}_{k}$ は規格化されているものとする ($ \| \mathbf{m}_{k} \| =1$) 。
直線と直線の距離の図1
  $L_{k}$ は $L$ と直交するので、 交点 $\mathbf{k}$ は $L$ 上の点 $\mathbf{x}$ から直線 $L_{k}$ に下した垂線の足(射影点)に位置する。 従って、$\mathbf{k}$ は
と表される (直線上への垂線の足の求め方を参考) 。
  同様に $L_{k}$ は $L'$ と直交するので、 交点 $\mathbf{k}'$ は $L'$ 上の点 $\mathbf{x}'$ から直線 $L_{k}$ に下した垂線の足(射影点)に位置するので、 $\mathbf{k}'$ は、
と表される。
  これらより、
である。 ここで、 $ \mathbf{x}-\mathbf{x}'$ と $ \mathbf{m}_{k}$ の成す角を $\theta$ と表すと、 内積とコサインの関係から、
と表せるので、
を得る。 これは $\mathbf{k}$ と $\mathbf{k}'$ 間の距離が、 $L$ 上の点と $L'$ 上の点を結んだ距離の中で最小の距離であることを表している。
直線と直線の距離(2直線の最小距離)
  ここまでの議論によって、 二直線 $L$ と $L'$ の間の最小距離が、 二直線と直交し、なおかつ交差する直線 $L_{k}$ と $L$ との交点 $\mathbf{k}$ と、 $L_{k}$ と $L'$ との交点 $\mathbf{k}'$ との間の距離であることが分かった。 そこで、 この最小距離を二直線間の距離 $d$ として定義する。 すなわち、
とする。
  直線 $L$ 上の任意の点 $\mathbf{x}$ と、 直線 $L'$ 上の任意の点 $\mathbf{x}'$ に対して $(4)$ が成立することから、 $\mathbf{x}_{0}$ ( $L$ 上の一点 ) と $\mathbf{x}'_{0}$ ($L'$ 上の一点) に対しても $(4)$ と同様の関係
が成立する。 従って、
である。
  ここで $\mathbf{m}_{k}$ は、 直線 $L_{k}$ の方向ベクトルであり、 直線 $L$ と 直線 $L'$ と直交する方向を向くので、 $L$ の方向ベクトル $\mathbf{m}$ と、 $L'$ の方向ベクトル $\mathbf{m}'$ の外積によって、
と表せる。 右辺の分母は、 方向ベクトルの大きさを $1$ にするための規格化定数である。 これを用いると、
と二直線間の距離が求まる。

直線と直線が最も近づく点
  点 $\mathbf{x}_{0}$ を通り、 方向ベクトルが $\mathbf{m}$ の直線 $L$ 上の点と、 点 $\mathbf{x}_{0}'$ を通り、 方向ベクトルが $\mathbf{m}'$ の直線 $L'$ 上の点は、 それぞれ
と表される。 このとき、$L$ 上の点の中で $L'$ に最も近づく点の位置 $\mathbf{k}$ は、
である。

証明
  直線 $L$ と 直線 $L'$ の両方と直交し、 なおかつ交差する直線を $L_{\mathbf{k}}$ とする (このような直線が存在することは 直線と直線の距離の公式の証明を参考)。 $L$ と $L'$ が最も近づく点は、 $L$ 上では $L$ と $L_{\mathbf{k}}$ の交点であり、 $L'$ 上では $L'$ と $L_{\mathbf{k}}$ の交点である (これについても 直線と直線の距離の公式の証明を参考)。 それぞれの交点を $\mathbf{k}$ と $\mathbf{k}'$ と表すことにする。
  3つの点 $\mathbf{k}$ と $\mathbf{k}'$ と $\mathbf{x}_{0}'$ を通る平面を $P$ とする。 $\mathbf{k}$ は平面 $P$ と直線 $L$ との交点である。 平面 $P$ を表す方程式を
と表す (平面の方程式 を参考)。 ここで $\mathbf{n}$ は法線ベクトルであり、 $h$ は符号付き距離である。$\mathbf{x}$ は $P$ 上の任意の点を表す。
  $\mathbf{n}$ は平面 $P$ と平行な全てのベクトルと直交するので、 $\mathbf{x}_{0}' - \mathbf{k}'$ と $\mathbf{k} - \mathbf{k}'$ の両方のベクトルと直交する。 ゆえに $\mathbf{n}$ を
と表すことができる。 ここで2つのベクトルと直交するベクトルが外積の方向を向くことを用いた。 また $\alpha$ は係数である。
  右辺に含まれる $\mathbf{x}_{0}' - \mathbf{k}'$ は、 直線 $L'$ と同じ方向を向くので、
と表せる ($\beta$ は係数)。 また $\mathbf{k} - \mathbf{k}'$ は、 直線 $L_{k}$ と同じ方向を向くので、
と表せる ($\gamma$ は係数)。 ここで $L_{k}$ の方向ベクトルが $\mathbf{m} \times \mathbf{m}'$ と同じ方向を向くことを用いた (このことは、上の証明 に書かれている)。 これらを用いると、法線ベクトルは
と表される。 最後の行ではベクトル三重積の公式と $\| \mathbf{m}' \|^2 =1$ を用いた。 これにより $P$ の方程式は
と書かれるが、 $P$ が $\mathbf{x}_{0}'$ を通ることから、
が成り立つ。 これを用いると、 $P$ の方程式は
と表される。 ここで
と置いた。
  続いて、$P$ と $L$ との交点 $\mathbf{k}$ を求める。 $L$ 上の任意の点は、パラメータ $t $ によって
と表されるので、これを $P$ の方程式に代入すると、
である。 $t$ について解くと、
である。 これより $P$ と $L$ の交点 $\mathbf{k}$ は、
であり、これが $L$ 上の点の中で $L'$ に最も近づく点の位置である。

補足
  上記の結果を微分を用いて、より単純に求めることもできる。 $L$ と $L'$ 上の任意の位置を $\mathbf{x}$ と $\mathbf{x}'$ とすると、 これらはパラメータ $t$ と $t'$ を用いて
と表すことができる。 したがって、 $\mathbf{x}$ と $\mathbf{x}'$ の間の距離の二乗 $D_{2} (t', t)$ は、
と表される。 距離が最小になる点では、パラメータに関する微分が $0$ になる。 すなわち、
が成り立つ。 この式は、 $t$ と $t'$ に関する連立一次方程式
になる。 これを $t$ と $t'$ について解き、$\mathbf{x}$ と $\mathbf{x}'$ に代入することによって、 最近点の位置 $\mathbf{k}$ と $\mathbf{k}'$ が求まる。
  加えて、 これらの差の大きさ $\| \mathbf{k} - \mathbf{k}' \|$ から二直線間の距離 $d$ が求まる。