2015-12-16 191 views
-1

試圖將一些笛卡爾座標轉換爲極座標。不是數學家。開始和結束值是度數。這有意義嗎?簡單的笛卡爾座標到極座標方法

Point outerScreenPointBefore = CartesianToPolar(Start, End); 

轉換方法:

private Point CartesianToPolar(double x, double y) 
    { 
     x = Math.Sqrt((x*x) + (y + y)); 
     y = Math.Atan2(y, x); 

     return new Point(x, y); 
    } 
+4

你應該谷歌「轉換笛卡爾極地」。 –

+1

「開始」和「結束」不是度數,因爲它們不是角度。應該是'y * y'而不是'y + y'。 '點'來存儲極座標,真的嗎? – Graham

+0

剛剛意識到地圖是在笛卡爾的,因此我寫了一個方法polar-Cartesian:私人點PolarToCartesian(雙半徑,雙角) double x = radius * Math.Cos(angle); double y = radius * Math.Sin(angle); 返回新的Point(x,y); }我以前工作中的大多數數學運算是++ 1 ... – Hardgraf

回答

2

不完全是。當你做

y = Math.Atan2(y, x); 

,X已經被賦予了前行的新值:

x = Math.Sqrt((x*x) + (y*y)); 

所以,你需要計算兩個值分配之前他們:

double radius = Math.Sqrt((x*x) + (y*y)); 
double angle = Math.Atan2(y, x); 
return new Point(radius, angle); 

極座標不使用符號x和y,而是使用r和θ,因此讀取代碼的人可能不清楚其含義。
您可能想要創建一個具有屬性「半徑」和「角度」的新結構。

+0

這實際上是錯誤的,半徑計算是這樣的x = Math.Sqrt((x * x)+(y * y)); – OliverAssad

+0

我甚至沒有注意到:) –