设有两空间线段
-
Ls,其起点、终点坐标为s0、s1,方向向量u⃗ =s1−s0
-
Lt,其起点、终点坐标为t0、t1,方向向量v⃗ =t1−t0
记两线段对应的直线为ls、lt,采用向量表示法如下:
ls=s0+cs⋅u⃗
lt=t0+ct⋅v⃗
当0≤cs、ct≤1时,上述两式表达
设最短距离两点分别为sj、tj,则有
sj=s0+sc⋅u⃗
tj=t0+sc⋅v⃗
其中sc、tc为sj、tj两点所对应的标量。
记向量w⃗ =sj−tj,记向量w⃗ 0=s0−t0,根据下图可以得出:
w⃗ =s0+sc⋅u⃗ −(t0+tc⋅v⃗ )
即:
w⃗ =w⃗ 0+sc⋅u⃗ −tc⋅v⃗ (公式1)
如果s、t两条直线不平行、重合,则存在唯一的两点sc、tc使线段sctc−→−为ls、lt最近两点的连线。同时,线段sctc−→−也是唯一与两条直线同时垂直的线段。转换为向量表达即为:
u⃗ ⋅w⃗ =0v⃗ ⋅w⃗ =0
将公式1代入上述两式可得
(u⃗ ⋅u⃗ )sc−(u⃗ ⋅v⃗ )tc=−u⃗ ⋅w⃗ 0(公式2)
(v⃗ ⋅u⃗ )sc−(v⃗ ⋅v⃗ )tc=−v⃗ ⋅w⃗ 0(公式3)
记a=u⃗ ⋅u⃗ ,b=u⃗ ⋅v⃗ ,c=v⃗ ⋅v⃗ ,d=u⃗ ⋅w⃗ 0,e=v⃗ ⋅w⃗ 0,代入上述方程则可得:
sc=be−cdac−b2(公式4)
tc=ae−bdac−b2(公式5)
注意到上式中分母:
ac−b2=u⃗ ⋅u⃗ ×v⃗ ⋅v⃗ −(u⃗ ⋅v⃗ )2
⇒ac−b2=|u⃗ |2⋅|v⃗ |2−(|u⃗ |⋅|v⃗ |⋅cosq)2=(|u⃗ |⋅|v⃗ |⋅sinq)2≥0
当ac−b2=0时,公式2和公式3相互独立,则两直线平行,直线间的距离为