2012-04-23 225 views
-2

如何將三維數組從笛卡爾座標轉換爲球面座標系(假設球面系統中的幾何中心爲0,0,0)?如何將point3d數組從笛卡爾座標轉換爲球面座標系?

+0

座標投影在GIS的心臟......你應該看看有 – 2012-04-23 19:55:26

+2

[百科](http://en.wikipedia.org/wiki/Spherical_coordinate_system)關於這個問題也有一篇不錯的文章。您可能會感興趣的是「座標系統轉化」子標題。 – Servy 2012-04-23 19:59:07

回答

4

Wikipedia從複製式中,應用此陣列中的每個條目:

r = Math.Sqrt(p.X*p.X + p.Y*p.Y + p.Z*p.Z); 
if (r == 0) { 
    theta = 0; 
    phi = 0; 
} else { 
    theta = Math.Acos(p.Z/r); 
    phi = Math.Atan2(p.Y, p.X); 
} 
+0

只是希望原點不是其中之一。 :) – 2012-04-23 21:46:36

+0

不夠公平......我正在修復它 – MiMo 2012-04-24 07:46:31

4

是的,它完全地可能的。所以請看這裏Spherical coordinates和這裏Spherical Coordinates in C#。 你可以實現你想要閱讀這些文章。我沒有發現任何問題。所以請,如果有什麼你不明白的評論。

下面是一些代碼:

public Point3 Spherical(float r, float theta, float phi) 
{ 
    Point3 pt = new Point3(); 
    float snt = (float)Math.Sin(theta * Math.PI/180); 
    float cnt = (float)Math.Cos(theta * Math.PI/180); 
    float snp = (float)Math.Sin(phi * Math.PI/180); 
    float cnp = (float)Math.Cos(phi * Math.PI/180); 
    pt.X = r * snt * cnp; 
    pt.Y = r * cnt; 
    pt.Z = -r * snt * snp; 
    pt.W = 1; 
    return pt; 
} 
+0

什麼是W? xyz我得到了,但是W? – 2017-10-09 08:08:07

相關問題