2014-02-13 146 views
1

如何繪製R中的球座標(r,theta和phi)?如何繪製R中的球座標?

是否可以使用persp()函數?

我有點以及網格的集合。

+0

我做了一些谷歌進行搜索,發現沒有R代碼。但是,我確實找到了顯示如何在系統間轉換的頁面。也許你可以使用這些公式來轉換你的數據,並用標準的3D繪圖代碼來繪製:http://tutorial.math.lamar.edu/Classes/CalcIII/SphericalCoords.aspx –

+2

有一些函數'cart2sph','sph2cart' ,'cart2pol'和'pol2cart'包裝在'pracma'中,它們將爲您執行這些轉換。 –

回答

3

只要你知道your math,這是一個相當瑣碎的轉變:

spher_to_cart <- function(r, theta, phi) list(x=r*cos(phi)*sin(theta), 
               y=r*sin(theta)*sin(phi), 
               z=r*cos(theta)) 

#An example dataset 
data <- data.frame(r=1:10, 
        theta = seq(0,2*pi,length=10), 
        phi = seq(2*pi, 0,length=10)) 
spher_to_cart(data$r, data$theta, data$phi) 
$x 
[1] 0.000000e+00 9.848078e-01 5.130302e-01 -1.732051e+00 -1.606969e+00 1.928363e+00 3.031089e+00 -1.368081e+00 -4.431635e+00 -2.449294e-15 

$y 
[1] 0.0000000 -0.8263518 -2.9095389 -3.0000000 -0.5848889 -0.7018667 -5.2500000 -7.7587705 -3.7185832 0.0000000 

$z 
[1] 1.0000000 1.5320889 0.5209445 -2.0000000 -4.6984631 -5.6381557 -3.5000000 1.3891854 6.8944000 10.0000000 

小心使用theta和披值的弧度,不度。
然後你可以用繪製爲plot3drgl例如:

s <- spher_to_cart(data$r, data$theta, data$phi) 
library(rgl) 
plot3d(s$x,s$y,s$z) 
+0

但是,爲什麼不使用'pracma'函數呢?他們有一些錯誤檢查的東西,這往往是有幫助的。 –

+2

@CarlWitthoft爲什麼不當然。這很簡單,我只是喜歡從頭開始做事。 – plannapus

+0

事實上,對於某人(wink wink)來說,爲了完整起見,將「pracma」解決方案添加爲另一個答案並不是一個壞主意。 – plannapus