2015-12-16 190 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

我甚至没有注意到:) –