2009-10-23 138 views
3

如何在3D平面中找到點與線的最小垂直距離?3D平面算法中點與線的最小垂直距離

請給我邏輯,我會嘗試對自己編碼。

請讓我知道如何用座標系下的x,y,z來表示它。

我發現從編碼的角度來看,找到合適的解決方案很容易,有點困難。在線解決方案有點生疏的理解。所以請幫助我。

請注意線是根據三維空間方程給出的。

+0

你在哪個表單中有rect表達式? – Lopoc 2009-10-23 21:44:42

+0

以x,y,z格式表示。 – Test 2009-10-23 21:51:27

+0

一條線不是由三維空間中的一個方程確定的。你的意思是到飛機的距離?否則,該行是如何指定的? – UncleO 2009-10-23 21:56:43

回答

2

對於無限長線,最小距離是線段與通過從線開始到結束點的無限長線成直角的長度。垂線的方向由垂直於平面的單位與沿着該線的單位矢量的叉積給出,垂線的垂足由第一條線的方程的同時求解給出,點。點之間的距離是你所追求的。

對於一條有限線,只有當垂線的腳位於線段上時,纔是一種解決方案;否則它是該點與該段的任一端之間的距離中較短的一個。

13

給定點A和直線,在直線(B和C)上選擇兩個不同的點。使用Heron's formula計算三角形ABC的面積。將區域乘以2,並用[BC]的長度除。你有你需要的結果。

+0

它是否適用於3d平面。 – Test 2009-10-23 21:50:01

+0

三點始終組成一架飛機。三角形總是一個三角形。 @Pavel:順便說一句好話。 – 2009-10-23 21:56:58

+0

如果它們不是全部共線的,則三個點形成一個平面。 – JimN 2009-10-23 22:05:38

1

你說這條線是以3D的方程給出的,但真正的平面是由方程給出的。並且由於該線據說位於3D平面中,可能是由另一個等式給出的,該線實際上是兩個平面的交點。

要獲取線的方向矢量,請將法線的叉積乘以兩個平面。如果你使用Pavel的方法,你不需要這個。

爲了得到一個點,爲x選擇一些值,比如說x = 0。然後在插入該值後求解y和z的兩個方程。要找到在Pavel方法中使用的另一個點,請將x設置爲其他值,比如x = 1,然後再次解決該問題。

如果該行的方向錯誤(垂直於x軸),則x可能是一個固定值。在這種情況下,嘗試將y設置爲兩個固定值。如果仍然不起作用,請嘗試z。另外,請檢查原始平面不平行,以便確實存在交叉線。

要解決沒有Pavel方法的問題,用由給定點和線上找到的點組成的向量交叉線的方向。現在將這個結果與行方向交叉得到一個新的向量。使用原始點將該矢量點和線上的點再次相加。採取差異,併除以矢量的長度。

+0

+1作爲線的心理圖像作爲3D平面。我被卡住了,直到我知道他們的交叉點實際上是這條線。 – karmanaut 2013-03-16 05:30:33

相關問題