C++之直角坐标系和极坐标系的转化

C++之直角坐标系和极坐标系的转化
1. 转化思路

       关键在于编写一个将直角坐标转换为极坐标的函数。该函数接受一个rect参数,并返回一个polar结构。这需要 使用数学库中的函数,因此程序必须包含 头文件cmath。根据毕达哥拉斯定理,使用水平和垂直坐标来计算距离,使用数学库中的atan2()函数计算角度:

distance = sqrt(x * x + y * y)
angle = atan2(y,x)
2. 一个例子
#include <iostream>
#include <cmath>

struct polar
{
    double distance;
    double angle;

};

struct  rect
{
    double x;
    double y;

};

polar rect_to_polar(rect xypos);
void show_polar(polar dapos);

int main(int argc, char const *argv[])
{
    using namespace std;
    rect rplace;
    polar pplace;

    cout << "Enter the x and y values: ";
    while (cin >> rplace.x >> rplace.y)
    {
        pplace  = rect_to_polar(rplace);
        show_polar(pplace);
        cout << "Next two numbers (q to quit):";

    }

    cout << "Done.\n";
    return 0;
}

polar rect_to_polar(rect xypos)
{
    using namespace std;
    polar answer;

    answer.distance = sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
    answer.angle = atan2(xypos.y, xypos.x);
    return answer;
}

void show_polar(polar dapos)
{
    using namespace std;
    const double Rad_to_deg = 57.29577951;

    cout << "distance =  " << dapos.distance;
    cout << ", angle =" << dapos.angle * Rad_to_deg;
    cout << " degrees\n";
}


   转载规则


《C++之直角坐标系和极坐标系的转化》 赵小亮 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
C++之递归 C++之递归
C++之递归 1. 递归介绍       C++函数有一种有趣的特点————可以调用自己(然而,与C语言不同的是,C++不允许main()调用自己),这种功能被称为递归。尽管递归在特定的编程(例如人
2020-01-17
下一篇 
C++按值传递结构 C++按值传递结构
C++按值传递结构 1. 传递和返回结构       C++使用结构编程时,最直接的方式是处理基本类型那样来处理结构:也就是说,将结构作为参数传递,并在需要时将结构用作返回值使用。然而,按值传递结构
2020-01-16
  目录