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

    技术2022-08-01  82

    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) //输入一个结构体(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(); } } //}
    Processed: 0.010, SQL: 9