你可以用拉格朗日乘子法來解決這一問題:
你知道飛機上的最近點必須是這樣的形式:
c = p + v
哪裏c
是最近點與v
是一個向量沿着飛機(因此與正常的n
正交)。您正在嘗試尋找具有最小范數(或範數平方)的c
。因此,您正試圖最小化dot(c,c)
,但v
與n
正交(因此dot(v,n) = 0
)。
因此,設置拉格朗日:
L = dot(c,c) + lambda * (dot(v,n))
L = dot(p+v,p+v) + lambda * (dot(v,n))
L = dot(p,p) + 2*dot(p,v) + dot(v,v) * lambda * (dot(v,n))
並採取相對於所述衍生物v
(和設置爲0)來獲得:
2 * p + 2 * v + lambda * n = 0
可以由以下等式在求解拉姆達以上由點生產雙方n
得到
2 * dot(p,n) + 2 * dot(v,n) + lambda * dot(n,n) = 0
2 * dot(p,n) + lambda = 0
lambda = - 2 * dot(p,n)
再次請注意,dot(n,n) = 1
和dot(v,n) = 0
(因爲v
在平面中,並且n
與其正交)。然後subtitute lambda
早在獲得:
2 * p + 2 * v - 2 * dot(p,n) * n = 0
和解決v
獲得:
v = dot(p,n) * n - p
,接着再將這回c = p + v
獲得:
c = dot(p,n) * n
這個向量的長度是|dot(p,n)|
並且符號告訴您該點是否在從原點開始的法向矢量的方向上,還是與第e起源。
儘管法線是從表面平面的法線。如果該點已經是飛機上的一個點,那麼它們將處於90度角,因此,答案將始終爲0.我不明白這是從原點到飛機的距離,特別是如果飛機是飛機距離原點的隨機距離。 此外,我確實從邏輯上和幾何學角度上找出了點與表面的關係。唯一讓我陷入困境的是這個。 – Ilya 2011-12-16 22:07:11