与えられた2直線の間の距離について(主に3次元以上の場合)

ポータル・サイトの質問箱に、3次元(以上)の場合の「2直線間の(最短)距離」を聞いたものがしばしばあるので、前から気になっていた。3次元というのは、2次元ではこの問題は自明(交わるか平行しかない)だからで、3次元の場合は一般に、2直線はねじれているから、解はさほど自明ではない。これについて考えてみた。
 まず、2直線だが、パラメーター表示で考察する。2直線をそれぞれ m、n とし、m、n のパラメーターをそれぞれ s、t とおく。方向ベクトルはそれぞれであり、それぞれ定点A、Bを通るとする。ただし、
      
とおいて充分なので、計算の簡単のため、こうしておく。最短距離を与える m、n 上の点をそれぞれS、Tとすると、
   
   
となるので、2直線間の最短距離STはとして求められる。結局、点S、Tが確定するには、パラメーター s、t を決定すればよい。
 さて、最短距離を与えるには、幾何学的考察(※注意)より、ベクトル
   
がそれぞれ方向ベクトルと直交すればよいので、(方向ベクトルの長さ1に注意して)
   
   
となる。この2式は s、t についての連立方程式なので、簡単に解けて
   
   
こうしてパラメーターが確定するので、点S、Tも確定する。これから点S、Tの距離(2直線の最短距離)も求められる。
 この距離も実際に求めたいところであるが、上のSTの式にパラメーターの値(を表す式)を代入しても、一般的にはどうもきれいな形にならないようだ(求めることは勿論できる)。
 なお、2直線が平行な場合はトリビアルである。として充分なので、s、t は確定せず、
   
なので、
   
となる。これから距離STが出る。


※注意(追記)
幾何学的考察の詰めが甘いことに気づいた。二本の直線に共に直交するSTが存在するか、はたまた存在しないのかは、自明ではない(※後からの注記 実はやはり自明である。だから、ここまでの記述で充分である。下を参照)。存在する場合は、上の考察でよい。そうでない場合は、別途考察せねばならない。

上の補遺

直線のパラメーター表示については、上のものを使うことにする。
まず、点Tを固定(パラメーターtを固定)して、直線mとの距離を与える点Sの位置を決める。これは(点と直線の距離なので)かならず存在し、こちらを参照すると、そのような点Sを与えるパラメーターsは
   
と求められるから、
   
となる。したがって
   
     
     
ただし、
   
   
と置いた。ゆえに、
   
は、原点Oから、パラメーターtによる直線上の点へのベクトルであるから、かならず最短になることがあり、そのようなtは
   
と与えられる。これをベクトルTSの式に代入し、そのベクトルの長さを計算すれば、一旦tを固定し、その後これを動かして得られた場合の、二直線間の最短距離を与える。
 また、sを一旦固定し、その後これを動かした場合も、同様に二直線間の最短距離を与える。
 したがって、真の最短距離は、このいずれか一方、値の小さい方になる。両者が一致すれば、それはいちばん最初に考察した場合に他ならない。


かと思ったのだが。念のため、求めたpとqをtの式に代入し、(方向ベクトルが単位ベクトルであることに注意しながら)ごりごりと計算してみると、
   
となって、いちばん上で求めた結果と同じになるではないか。sもtと対称になっているので、これも疑いもなく一致する。ということは、二直線に共に垂直な線分STが、きちんと存在することになる。つまり、補遺は蛇足であった。
 幾何学的考察を再度してみれば、二直線の二つの方向ベクトルによって張られる平面を考えると、それに平行な平面で、それぞれ二直線を含むような二平面をかならず取ることができる。この二平面の距離が、求める二直線の最短距離を与えることになるわけだ。