C# C Sharp 實現平面直角座標(笛卡爾座標)轉化爲極座標(附源碼)

1.數學知識

平面直角座標系(也稱笛卡爾座標系)與極座標系之間的換算關係

{X=ρcos(θ)Y=ρsin(θ)\left\{ \begin{aligned} X & = \rho \cos( \theta ) \\ Y & = \rho \sin( \theta ) \\ \end{aligned} \right.

其中:
XX表示在平面直角座標系中的橫座標
YY表示在平面直角座標系中的縱座標
ρ\rho表示在極座標中的極徑
θ\theta表示在極座標中的極角
在這裏插入圖片描述

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章