1.數學知識
平面直角座標系(也稱笛卡爾座標系)與極座標系之間的換算關係
其中:
表示在平面直角座標系中的橫座標
表示在平面直角座標系中的縱座標
表示在極座標中的極徑
表示在極座標中的極角
2核心代碼:
public Polar_y TestMethod1(Rect_v rv) //輸入一個結構體(x,y)點(笛卡爾座標系)的座標
{
Polar_y pv;
pv.magnitude = Math.Sqrt(rv.x * rv.x + rv.y * rv.y);//開根
if (pv.magnitude == 0)//位於極點 magnitude表示極徑
pv.angle = 0.0; //angle 表示極角
else
pv.angle = (180 / (4 * Math.Atan(1))) * Math.Atan2(rv.y, rv.x);//atan2()返回弧度值,此爲轉換爲角度的公式
return pv; //返回一個結構體,包括極角和極徑
}
3 完整可運行代碼
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MathNet.Numerics;
//namespace PolarCoordinates
//{
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) //輸入數一個結構體(x,y)點的座標
{
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);//atan2()返回弧度值,此爲轉換爲角度的公式
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();
}
}
//}