[心得] 極座標資料點換成直角座標

作者: Plot3D (3D做圖)   2014-11-17 01:04:47
前幾天我遇到的問題是怎樣把一堆極座標的資料點,
換成直角坐標
polartest = Table[{10 Random[], 2 Pi Random[]}, {i, 1, 10}]
首先我用這個建立了10個 r,theta格式的資料點
p2x = CoordinateTransformData["Polar" -> "Cartesian", "Mapping"]
這是個Mathematica的內建座標轉換函數,"Polar"也可以是"Spherical"
其實也等價於{Cos[#1[[2]]] #1[[1]], Sin[#1[[2]]] #1[[1]]} &
carttest = p2x /@ polartest
xtick = Table[i, {i, -10, 10, 2}];
ytick = xtick;
ListPolarPlot[Reverse /@ polartest, Ticks -> {xtick, ytick},
PlotRange -> All, PlotLabel -> "PolarCoordinate"]
我在這邊始終沒有得到正確的結果是因為,ListPolarPlot吃的是theta,r的list
因此必須在這裡使用Reverse把list裡面的兩個函數反過來
ListPlot[carttest, Ticks -> {xtick, ytick}, PlotRange -> All,
PlotLabel -> "XY Coordinate", AspectRatio -> 1]
再用ListPlot畫出來就可以看到這個轉換是成功的了
作者: chungyuandye (養花種魚數月亮賞星星)   2014-11-17 08:25:00
偷懶的作法: ListPolarPlot[data][[1, 3, 2, 1]]
作者: ntust661 (TOEFL_5!)   2014-11-20 18:55:00
推~

Links booklink

Contact Us: admin [ a t ] ucptt.com