[求助]求空间两线段之间的最短距离

问题描述:

[求助]求空间两线段之间的最短距离
如图,空间异面两线段,各线段两端点的坐标已知,求两线段之间的最短距离.
ps:如果能用C编程,我会再追加50分.
谢谢一楼的回答,
不过我求的是线段上的点之间的最短距离啊,不是空间两直线之间的距离。
如果公垂线的垂足正好在线段上的话,那么公垂线的长度就是线段之间的最短距离;
可是也有公垂线的垂足不在线段上的情况啊
1个回答 分类:综合 2014-09-28

问题解答:

我来补答
------------原来是线段..------------
先把线段延长成直线,求出公垂线跟L1,L2的交点P1,P2.
如果线段1经过了P1,则取P1点;不经过则去离P1最近的点.
线段2同理,选取离P2最接近的点.
得到的Q1,Q2点为所求
要证明Q1Q2最短,可以任意选P属于线段2,比较Q1P和Q1Q2; 任意选P'属于线段1,比较P'Q2和Q1Q2.从而说明P'P>=P'Q2>=Q1Q2
编程的话,再补充一个判断进去吧,判断P1,P2是否在线段1,2上
------------已补充!----------------
两线L1,L2.单位向量T1,T2
可以先在L2上作L1平行线,得到平面π.然后求L1到π的距离即可
具体计算
n//T1×T2=(t11,t12,t12)×(t21,t22,t23)
得到n=(A,B,C)
于是面π是Ax+By+Cz=D,D常数,通过L2上一个点即可确定D
任取L1上的点M=(xm,ym,zm)
M到π距离是(A*xm+B*ym+C*zm-D)/根号(A²+B²+C²)
不知道最后点面距离有没有记错……
----------编程-----------
(a1,a2,a3),(b1,b2,b3)是L1,L2上两点
方向是T1=(t11,t12,t13),T2=(t21,t22,t23)
t,s为参数,A+tT1,B+sT2分别表示L1,L2上一个动点
要求的是使得
|(a1+t*t11-b1-s*t21,a2+t*t12-b2-s*t22,a3+t*t13-b3-s*t23)|最小的t,s
即|(a1+t*t11-b1-s*t21,a2+t*t12-b2-s*t22,a3+t*t13-b3-s*t23)|²最小
即M(t,s)=∑(ai-bi+t*t1i-s*t2i)²达极小值,即M在所求点(t,s)上对t,s的偏导都为0
即2*∑[t1i*(ai-bi+t*t1i-s*t2i)]=0,2*∑[t2i*(ai-bi+t*t1i-s*t2i)]=0
解出t,s即可
然后直接把这个表达式交给C~
补充:
空间直线间最短距离就是在公垂线上取得的.换句话说,L1各点分别作一条到pi的垂线,一定有一条垂线以L2的点为垂足.
记pi平面的法向量为n
对于L1上的点a,过a的垂线的垂足o(a)就是a沿n方向的投影.
把L1整条投影到pi上面,得到的L3与L1平行,与L2相交于b.
b点就是我们要找的点.
存在点c属于L1,使o(c)=b属于L2
 
 
展开全文阅读
剩余:2000
上一页:解题方法 技巧
下一页:过程3