図形同士の距離


[1] 点と点
[2] 点と直線
[3] 点と平面
[4] 直線と直線
[5] 直線と平面
[6] 平面と平面


[1] 点と点

二点 A(a1, a2, a3), B(b1, b2, b3) の間の距離は, a = (a1, a2, a3), b = (b1, b2, b3) と思って AB = |a - b| と思っても良いし, 三平方の定理からと思っても良いが

AB = √((a1 - b1)2 + (a2 - b2)2 + (a3 - b3)2)

である。


[2] 点と直線

点が直線の上にある場合は距離は 0 だからそうでない場合を考える。 直線を媒介変数表示して

x = a1 + td1,
y = a2 + td2,
z = a3 + td3

とし, この上にない点を B(b1, b2, b3) としよう。 B から直線に降ろした垂線の足 H(x, y, z) が距離 BH を与えるから, BH = (x - b1, y -  b2, z - b3) = (a1 - b1 + td1, a2 -  b2 + td2, a3 - b3 + td3) ⊥ d = (d1, d2, d3) ⇔ BHd = 0. これは t に関する一次方程式だから解けて, それから H が求まるので BH の長さを求めれば良い。


[3] 点と平面

点が平面上にある場合は距離は 0 だからそうでない場合を考える。 平面の方程式は Ax + By + Cz + D = 0 であるとしよう。 点 A(a1, a2, a3) から平面に下ろした垂線の足 H(x, y, z) が距離 AH を与える。 AH = (x - a1, y - a2, z - a3) || n = (A, B, C) であるから, ある実数 t が存在して

x - a1 = At,
y - a2 = Bt,
z - a3 = Ct,
Ax + By + Cz + D = 0.

つまり最初から三番目までを最後の平面の式に代入して, t を求め, それから H の座標を求めて, AH の長さを求めれば良い。

尚, これは A を通る法線の方程式を求め, 次にその法線と平面との交点の座標を求めていることに注意されたい。

実際にやってみると:
x = At - a1,
y = Bt - a2,
z = Ct - a3,
だから A(At - a1) + B(Bt - a2) + C(Ct - a3) + D = 0. 即ち
t = (Aa1+ Ba2 + Ca3 + D)/(A2 + B2 + C2).

だから AH = t(A, B, C) =((Aa1+ Ba2 + Ca3 + D)/(A2 + B2 + C2))(A, B, C). 従って

AH = (|Aa1+ Ba2 + Ca3 + D|/(A2 + B2 + C2))√(A2 + B2 + C2)
  = |Aa1+ Ba2 + Ca3 + D|/√(A2 + B2 + C2).

これは Hesse の (三次元空間の平面と一点の距離の) 公式と呼ばれる。(See Hesse の平面上の直線と点との距離の公式)


[4] 直線と直線

二つの直線 l1

x1 = a1 + td1,
y1 = a2 + td2,
z1 = a3 + td3

と l2

x2 = b1 + td'1,
y2 = b2 + td'2,
z2 = b3 + td'3

を考える。 l1 上の点 P1(x1, y1, z1) と l2 上の点 P2(x2, y2, z2) の点の距離

P1P2 = √((x1 - x2)2 + (y1 - y2)2 + (z1 - z2)2)

は t の二次式の平方根になるので, √ の中を平方完成して最小値を求めると, それが定義により l1, l2 の距離になる。


[5] 直線と平面

直線と平面が交わる場合は距離が 0 であるから, それ以外, 即ち, 直線と平面が平行, 即ち直線の方向ベクトルと平面の法線ベクトルが垂直の場合のみ考えれば良い。

直線と平面が平行であるから, 直線上の任意の点と平面との距離を求めればそれが直線と平面の距離になるから, 結局 [3] に還元される。


[6] 平面と平面

平面同士も直線と平面同様, 交わるか平行であるかしかないので, 平行である場合を考えればよいことになる。 この場合も, 一方の平面上の任意の点と, 他方の平面の距離を求めれば良いので, 結局 [3] に還元される。


次へ
三次元空間の vectors の目次