Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 简单笛卡尔极坐标法_C#_Wpf_Trigonometry - Fatal编程技术网

C# 简单笛卡尔极坐标法

C# 简单笛卡尔极坐标法,c#,wpf,trigonometry,C#,Wpf,Trigonometry,尝试将笛卡尔坐标转换为极坐标。不是数学家。起始值和结束值为度。这有意义吗 Point outerScreenPointBefore = CartesianToPolar(Start, End); 转换器方法: private Point CartesianToPolar(double x, double y) { x = Math.Sqrt((x*x) + (y + y)); y = Math.Atan2(y, x); retur

尝试将笛卡尔坐标转换为极坐标。不是数学家。起始值和结束值为度。这有意义吗

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);
    }

不完全是。当你这样做的时候

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和θ,因此阅读代码的人可能不清楚其含义。

您可能需要创建一个具有属性“半径”和“角度”的新结构。

不完全如此。当你这样做的时候

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和θ,因此阅读代码的人可能不清楚其含义。

您可能需要创建一个具有属性Radius和Angle的新结构。

您应该在谷歌上搜索“将笛卡尔坐标转换为极坐标”。
Start
End
不是度,因为它们不是角度。应该是
y*y
而不是
y+y
Point
存储极坐标,真的吗?刚刚意识到地图是笛卡尔坐标的,所以我写了一个极坐标笛卡尔方法:专用点PolarToCartesian(双半径,双角度){double x=radiusMath.Cos(角度);double y=radiusMath.Sin(角度);返回新点(x,y)在我以前的工作中,大多数数学是++1…你应该在谷歌上搜索“将笛卡尔坐标转换为极坐标”。
Start
End
不是度,因为它们不是角度。应该是
y*y
而不是
y+y
Point
存储极坐标,真的吗?刚刚意识到地图是笛卡尔坐标的,所以我写了一个极坐标笛卡尔方法:专用点PolarToCartesian(双半径,双角度){double x=radiusMath.Cos(角度);double y=radiusMath.Sin(角度);返回新点(x,y)}我上一份工作中的大多数数学是++1…这实际上是错误的,半径是这样计算的:x=Math.Sqrt((x*x)+(y*y));我甚至没有注意到:)这实际上是错误的,半径是这样计算的:x=Math.Sqrt((x*x)+(y*y));我甚至没有注意到:)