扱う際、2直線の交点を求めたいことがあります。2次元平面であれば平行でない限り交点は必ずありますが、3次元空間では「ねじれの位置」にあれば交点は存在しません。このため、交差していない場合は2直線の交点ではなく最接近位置を求め、最接近距離が設定したトレランス以下であれば最接近位置間の中点を交点として代用するという方法が使われることがあります。そこで、2直線の最接近位置を求めるロジックが必要になりますが、これが意外と面倒です。今回はこのロジックについて説明してみます。最接近位置は、2直線のどちらとも垂直に交わる線上にあることになります。基準点からの距離として表現するわけです。平方根を考えると面倒なので距離の2乗で考えます。$$単位ベクトル成分と媒介変数を代入し、途中の展開を省略してまとめると次式になります。求める必要があります。対して勾配がゼロになるので、それぞれで偏微分したときにゼロになるという性質を使用します。求まり、それによって最接近位置の座標が求まるというわけです。A_3}{A_1}\end{eqnarray}$$こうやって整理するとわかりやすいのですが、最初にベクトルと媒介変数を使うロジックを考えた人は尊敬します。このあたりが数学的なセンスなんでしょうね。プログラムを作成してみました。Subエラーが発生したときにメッセージボックスを表示するかどうかという引数も加えています。表示したい場合は1に設定してください。数式を書いてみてました。約25年ぶりですが、書いているうちに次第に思い出すものですね。今後も機会があれば数式山盛りでロジックを紹介していくつもりなので、お楽しみに。