C++中atan()与atan2()的区别和用法 您所在的位置:网站首页 c语言中atan2与atan的区别 C++中atan()与atan2()的区别和用法

C++中atan()与atan2()的区别和用法

2024-07-11 11:34| 来源: 网络整理| 查看: 265

区别

atan(x)函数接收一个参数。参数类型可参考下列函数声明。

double atan (double x); float atan (float x); long double atan (long double x); double atan (T x); // additional overloads for integral types

若有一个坐标A(a,b),则函数参数x=b/a。 atan(x)函数返回以弧度为单位的角度,范围为[-pi/2,+pi/2],注意是包含-pi/2和+pi/2的。该角度为A点和原点的连线与X轴正方向之间的夹角。上方夹角为正,下方夹角为负。由此可以看出,atan()函数只能区分一象限和四象限的点。取一象限和三象限任意一点Ai(ai,bi)计算x=bi/ai,x均为正值。对于二象限和四象限则均为负值。 atan参考 atan2(y,x)函数接收两个参数,即一个坐标值。参数类型可参考下列函数声明。

double atan2 (double y , double x); float atan2 (float y , float x); long double atan2 (long double y, long double x); double atan2 (Type1 y , Type2 x); // additional overloads

atan2(x)函数返回以弧度为单位的角度,范围为[-pi,+pi],注意是包含-pi和+pi的。函数内部考虑了参数x,y 的符号。所以可以区分坐标点在哪个象限。

atan2参考

使用示例 static double normalize(double z) { return atan2(sin(z),cos(z)); }

上述代码实现了不管输入多大的角度值(以弧度为单位),输出均落在[-pi,+pi]里。

static double angle_diff(double a, double b) { double d1, d2; a = normalize(a); b = normalize(b); d1 = a-b; d2 = 2*M_PI - fabs(d1); if(d1 > 0) d2 *= -1.0; if(fabs(d1)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有