C# | [极坐标] 与 [平面直角系坐标] 的相互转换

极坐标与平面直角系坐标的相互转换方法及C#代码实现

文章目录

前言

极坐标和平面直角系坐标是常见的坐标系统,它们在不同的应用场景中都有重要的作用。而在计算机图形学、物理模拟和机器人控制等领域,我们经常需要在极坐标和平面直角系坐标之间进行转换。
极坐标 使用极径极角 来表示点的位置,而平面直角系坐标 使用x和y坐标表示点的位置。本文将介绍如何进行这两种坐标系统的相互转换,并提供了使用C#编写的代码示例。

极坐标转换为平面直角系坐标

计算公式

将极坐标(r, θ)转换为平面直角系坐标(x, y)的公式如下:

复制代码
x = r * cos(θ)
y = r * sin(θ)

示例代码

以下是使用C#实现的代码示例:

csharp 复制代码
using System;

public class PolarToCartesianConverter
{
    public static void Convert(double r, double theta, out double x, out double y)
    {
        x = r * Math.Cos(theta);
        y = r * Math.Sin(theta);
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        double r = 5.0;
        double theta = Math.PI / 4.0;
        double x, y;

        PolarToCartesianConverter.Convert(r, theta, out x, out y);

        Console.WriteLine("极坐标({0}, {1}) 转换为平面直角系坐标为 ({2}, {3})", r, theta, x, y);
    }
}

运行结果

极坐标(5, 0.785398163397448) 转换为平面直角系坐标为 (3.53553390593274, 3.53553390593274)


平面直角系坐标转换为极坐标

将平面直角系坐标(x, y)转换为极坐标(r, θ)的公式如下:

计算公式

复制代码
r = sqrt(x^2 + y^2)
θ = atan2(y, x)

示例代码

以下是使用C#实现的代码示例:

csharp 复制代码
using System;

public class CartesianToPolarConverter
{
    public static void Convert(double x, double y, out double r, out double theta)
    {
        r = Math.Sqrt(x * x + y * y);
        theta = Math.Atan2(y, x);
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        double x = 3.0;
        double y = 4.0;
        double r, theta;

        CartesianToPolarConverter.Convert(x, y, out r, out theta);

        Console.WriteLine("平面直角系坐标({0}, {1}) 转换为极坐标为 ({2}, {3})", x, y, r, theta);
    }
}

运行结果

平面直角系坐标(3, 4) 转换为极坐标为 (5, 0.927295218001612)


结束语

关于三角函数的计算方法请参考微软的官方文档,希望本文能你处理坐标转换时提供帮助。
C# Math.Cos 方法
C# Math.Sin 方法
C# Math.Sqrt 方法
C# Math.Atan2 方法

相关推荐
SteveDraw2 小时前
C++动态链接库封装,供C#/C++ 等编程语言使用——C++动态链接库概述(总)
开发语言·c++·c#·封装·动态链接库
十五年专注C++开发2 小时前
设计模式之单例模式(二): 心得体会
开发语言·c++·单例模式·设计模式
flyair_China2 小时前
【云架构】
开发语言·php
Kookoos2 小时前
性能剖析:在 ABP 框架中集成 MiniProfiler 实现性能可视化诊断
后端·c#·.net·abp vnext·miniprofiler
Chef_Chen2 小时前
从0开始学习R语言--Day20-ARIMA与格兰杰因果检验
开发语言·学习·r语言
zh_xuan2 小时前
c++ std::pair
开发语言·c++
CodeWithMe3 小时前
【C/C++】EBO空基类优化介绍
开发语言·c++
404.Not Found3 小时前
Day46 Python打卡训练营
开发语言·python
love530love3 小时前
【PyCharm必会基础】正确移除解释器及虚拟环境(以 Poetry 为例 )
开发语言·ide·windows·笔记·python·pycharm
凌辰揽月3 小时前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法