當前位置:編程學習大全網 - 編程語言 - [求助]求空間兩線段之間的最短距離

[求助]求空間兩線段之間的最短距離

------------原來是線段..------------

先把線段延長成直線,求出公垂線跟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

  • 上一篇:臺達觸摸屏控制兩臺變頻器怎樣設置參數
  • 下一篇:現在火熱的 K12 教育到底是指什麽?
  • copyright 2024編程學習大全網