欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第 16 章 C 预处理器和 C 库(直角坐标转换极坐标)

程序员文章站 2022-07-02 20:46:32
1 /* 2 rect_pol.c -- 把直角坐标转换为极坐标 3 */ 4 5 #include 6 #include 7 8 #define RAD_TO_DEG (180 / (4 * atan(1.0))) 9 10 typedef struct po ......
第 16 章 C 预处理器和 C 库(直角坐标转换极坐标)
 1 /*-------------------------------------
 2     rect_pol.c -- 把直角坐标转换为极坐标
 3 -------------------------------------*/
 4 
 5 #include <stdio.h>
 6 #include <math.h>
 7 
 8 #define RAD_TO_DEG    (180 / (4 * atan(1.0)))
 9 
10 typedef struct polar_v
11 {
12     double magnitude;
13     double angle;
14 } Polar_V;
15 
16 typedef struct rect_v
17 {
18     double x;
19     double y;
20 } Rect_V;
21 
22 Polar_V rect_to_polar(Rect_V);
23 
24 int main()
25 {
26     Rect_V input;
27     Polar_V result;
28 
29     puts("Enter x and y coordinates; enter q to quit:");
30     while (scanf("%lf %lf", &input.x, &input.y) == 2)
31     {
32         result = rect_to_polar(input);
33         printf("magnitude = %0.2f, angle = %0.2f\n", result.magnitude, result.angle);
34     }
35     
36     return 0;
37 }
38 
39 Polar_V rect_to_polar(Rect_V rv)
40 {
41     Polar_V pv;
42 
43     pv.magnitude = sqrt(pow(rv.x, 2) + pow(rv.y, 2));
44     if (pv.magnitude == 0)
45         pv.angle = 0;
46     else
47         pv.angle = RAD_TO_DEG * atan2(rv.y, rv.x);
48 
49     return pv;
50 }
rect_pol.c

第 16 章 C 预处理器和 C 库(直角坐标转换极坐标)