C# C Sharp 实现平面直角坐标(笛卡尔坐标)转化为极坐标(附源码)

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 θ表示在极坐标中的极角
C# C Sharp 实现平面直角坐标(笛卡尔坐标)转化为极坐标(附源码)_第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();
    }
    }
//}

你可能感兴趣的:(C#)