2012-03-07 253 views
4

如果我有一個點(x,y,z)如何將其投影到球體(x0,y0,z0,radius)(在其表面上)。 我的輸入將是點和球體的座標。 輸出應該是球體上投影點的座標。如何將點投影到球體上

只需從直角座標轉換爲球座標?

+1

你如何投影點?連接球體的點和中心?平行於某個軸?其他投影?點(x,y,z)和球體的中心也是相同的值,或者您只是使用相同的變量名稱? – 2012-03-07 15:22:41

回答

14

對於最簡單的投影(沿着點連接至球體的中心的直線):

  1. 寫入點在球體的中心(X0,Y0,Z0爲中心的座標系):

    P =(X 'Y',Z')=(X - X 0,Y - Y 0,Z - Z 0)

  2. 計算該矢量的長度:

    | P | = SQRT(X '^ 2 + Y'^2 + Z'^ 2)

  3. 量表載體中,使得它具有長度等於所述球體的半徑:

    Q =(半徑/ | P |)* P

  4. 並改回原來的座標系,以獲得投影:

    R = Q +(X0,Y0,Z0)

+0

:好的,謝謝。你能解釋我的(3)嗎?(爲什麼我們縮放?)。 – George 2012-03-07 16:12:50

+1

@George將點直接放置在球的表面上,其大小等於半徑 – 2015-12-13 06:04:49

3

基本上你想要構建一條穿過球體中心和點的線。然後你將這條線與球體相交,並且你有你的投影點。

更詳細地說:

p是點,s球體的中心和r半徑然後x = s + r*(p-s)/(norm(p-s))其中x是你正在尋找的點。實施由您決定。

我同意球面座標方法也可以,但在計算上要求更高。在上面的公式中,唯一不平凡的操作是規範的平方根。

0

如果您將球體中心的座標設置爲系統的原點(x0,y0,z0),它會起作用。所以你將得到與原點相關的點的座標(Xp',Yp',Zp'),並將座標轉換爲極座標,則丟棄半徑(球體中心與點之間的距離)和角度將定義投影。