1.数学知识
平面直角坐标系(也称笛卡尔坐标系)与极坐标系之间的换算关系
{
X
=
ρ
cos
(
θ
)
Y
=
ρ
sin
(
θ
)
\left\{ \begin{aligned} X & = \rho \cos( \theta ) \\ Y & = \rho \sin( \theta ) \\ \end{aligned} \right.
{XY=ρcos(θ)=ρsin(θ)
其中:
X
X
X表示在平面直角坐标系中的横坐标
Y
Y
Y表示在平面直角坐标系中的纵坐标
ρ
\rho
ρ表示在极坐标中的极径
θ
\theta
θ表示在极坐标中的极角
2核心代码:
public Polar_y TestMethod1(Rect_v rv
)
{
Polar_y pv
;
pv
.magnitude
= Math
.Sqrt(rv
.x
* rv
.x
+ rv
.y
* rv
.y
);
if (pv
.magnitude
== 0)
pv
.angle
= 0.0;
else
pv
.angle
= (180 / (4 * Math
.Atan(1))) * Math
.Atan2(rv
.y
, rv
.x
);
return pv
;
}
3 完整可运行代码
using System
;
using Microsoft
.VisualStudio
.TestTools
.UnitTesting
;
using MathNet
.Numerics
;
public struct Polar_y
{
public double magnitude
;
public double angle
;
};
public struct Rect_v
{
public double x
;
public double y
;
};
[TestClass]
public class UnitTest
{
[TestMethod]
public Polar_y TestMethod1(Rect_v rv
)
{
Polar_y pv
;
pv
.magnitude
= Math
.Sqrt(rv
.x
* rv
.x
+ rv
.y
* rv
.y
);
if (pv
.magnitude
== 0)
pv
.angle
= 0.0;
else
pv
.angle
= (180 / (4 * Math
.Atan(1))) * Math
.Atan2(rv
.y
, rv
.x
);
return pv
;
}
}
public class Polar
{
public static void Main(String
[] args
)
{
Rect_v input
;
Polar_y result
;
input
.x
= 2.0;
input
.y
= 3.0;
UnitTest unit
= new UnitTest();
result
=unit
.TestMethod1(input
);
Console
.WriteLine(result
.angle
);
Console
.WriteLine(result
.magnitude
);
Console
.ReadKey();
}
}