2020年3月28日
弧度与角度互转
- 弧度与角度
1° = π / 180 ≈ 0.01745 rad
1rad = 180 / π = 57.30°角度制,就是用角的大小来度量角的大小的方法。在角度制中,把周角的1/360看作1度,那么,半周就是180度,一周就是360度。由于1度的大小不因为圆的大小而改变,所以角度大小是一个与圆的半径无关的量。
弧度制,顾名思义,就是用弧的长度来度量角的大小的方法。单位弧度定义为圆周上长度等于半径的圆弧与圆心构成的角。由于圆弧长短与圆半径之比,不因为圆的大小而改变,所以弧度数也是一个与圆的半径无关的量。角度以弧度给出时,通常不写弧度单位,有时记为rad或R。
- 宏定义方式
#define PI 3.1415926 // 度分秒转弧度 #define AngleToRadian(d,m,s) ((d)+((m)+(s)/60)/60)/180*PI // 角度转弧度 #define ANGLE_TO_RADIAN(a) (a/180*PI) // 弧度转角度 #define RADIAN_TO_ANGLE(r) (r*180/PI)
- 函数方式
/** * @brief 角度转换为弧度 * * @param [in] angle 角度 * * @return 转换后的弧度 */ double angle_to_radian(double angle) { return (angle*PI)/180; } /** * @brief 弧度转换为角度 * * @param [in] rad 弧度 * * @return 转换后的角度 */ double radian_to_angle(double rad) { return (rad*180)/PI; }
- 函数方式(度分秒)
/** * @brief 角度(度分秒)转换为弧度 * * @param [in] degree 度 * @param [in] minute 分 * @param [in] second 秒 * * @return 转换后的弧度 */ double angle_to_radian(double degree, double minute, double second) { double flag = (degree < 0)? -1.0 : 1.0; //判断正负 if(degree<0) { degree = degree * (-1.0); } double angle = degree + minute/60 + second/3600; double result =flag * (angle * PI)/180; return result; } /** * @brief 弧度转换为角度 * * @param [in] rad 弧度 * * @param [out] 转换后的角度数组[度, 分, 秒] * * @return */ void radian_to_angle(double rad, double ang[]) { double flag = (rad < 0)? -1.0 : 1.0; if(rad<0) { rad = rad * (-1.0); } double result = (rad*180)/PI; double degree = int(result); double minute =(result - degree)*60; double second = (min - int(minute)) * 60; ang[0] = flag * degree; ang[1] = int(minute); ang[2] = second; }
- 参考:https://blog.csdn.net/shanchuan2012/article/details/13509511
https://blog.csdn.net/sxhelijian/article/details/53169094?utm_source=blogkpcl1