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 θ表示在极坐标中的极角
在这里插入图片描述

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

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值