我正在寫一個定義3D幾何體的小型庫,以及每個幾何體的很多有用的功能。我將Point3D定義爲具有3個雙精度座標,每個座標軸一個,Line3D具有2個Point3D。在Line3D類中,我想要一個方法,它會返回最接近Point作爲參數傳遞的點上的點。3維線上的最近點到另一點
沒有人知道如何做到這一點?
(順便說一句,我不是在尋找的距離,但上線本身
我正在寫一個定義3D幾何體的小型庫,以及每個幾何體的很多有用的功能。我將Point3D定義爲具有3個雙精度座標,每個座標軸一個,Line3D具有2個Point3D。在Line3D類中,我想要一個方法,它會返回最接近Point作爲參數傳遞的點上的點。3維線上的最近點到另一點
沒有人知道如何做到這一點?
(順便說一句,我不是在尋找的距離,但上線本身
查詢從該點垂直於第一線的線實際點。然後,你必須在兩個未知數兩個方程,這可以解決的。解決的辦法是交叉點。實現這一點。有關詳細信息,請參見this。
咱們線兩點P0和P1,以及一些點P 定義查找歸一化的方向向量
d =(P1 - P0)/長度(P1 - P0)
和矢量
W¯¯ = P - P0
最近的點P (b)在線是
鉛 = d * ScalarProduct(W¯¯,d)
這並不是說此方法既適用2D情況和用於3D。
讓行是P0P1
和額外的點Q
。
線的參數方程是
P = P0 + t (P1 - P0)
的平方距離PQ²
是
(P0 - Q + t (P1 - P0))² = t² (P1 - P0)² + 2 (P1 - P0)(P0 - Q) t + (P0 - Q)²
您通過取消拳衍生WRT t
找到最低:
2 t (P1 - P0)² + 2 (P1 - P0)(P0 - Q) = 0
這給你t
,然後P
。
對不起,我還沒有采取計算,這是如何導致在線上的最接近點? (我必須誠實......我不確定這兩者是什麼意思......) – Totalllyrandomguy
那麼你如何找到垂直於該點的線?我爲二維線做了一個類似的方法,並有相同的想法,但它最終更容易做別的事情,但是其他的東西並沒有真正轉化爲3D的東西......得到了其他想法,(或工作代碼爲這一個)? – Totalllyrandomguy