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));我甚至没有注意到:)