2014-06-11 24 views
1

,有一個點p(x', y', z')其是內部或外部S
我想找到點q,使得qS|pq|是最小。其中|pq|表示pq之間的歐幾里德距離。最近點到給定的球體<code>S(c,r)</code>,<code>c</code>爲中心點<code>(x,y,z)</code>和<code>r</code>爲半徑的另一個點

我試圖創建一個射線,從c開始,並通過p並找到射線與球體的交點。

但是,由於我正在爲這個問題實現一個Java代碼,所以我無法一步步地克服它。你可以幫我嗎?

+0

這個問題似乎是題外話題,因爲它是關於3D幾何體而不是專門關於編程。在你編寫代碼之前,你需要定義數學算法,看起來你還沒有。 –

回答

2

您只需將矢量p - c歸一化,然後乘以r並添加c

Vector v = p - c; // v.x = p.x - c.x, v.y = p.y - c.y, v.z = p.z - c.z 
length = v.length; // = sqrt(v.x * v.x + v.y * v.y + v.z * v.z); 
v = v.normalize; //v.x = v.x/length , v.y = v.y/length, v.z = v.z/length 
v = v * r // v.x = v.x * r , v.y = v.y * r, v.z = v.z * r 
q = v + c // q.x = v.x + c.x, q.y = v.y + c.y, q.z = v.z + c.z 
相關問題