【c++】atan2()和atan()函数

atan2()

(1)定义:

double atan2(double y,double x);
atan2() 函数的功能是求 y/x 的反正切值。atan2() 是 atan() 的增强版,能够确定角度所在的象限。

反正切函数 atan2() 和正切函数 tan() 的功能恰好相反:tan() 是已知一个角的弧度值,求该角的正切值;而 atan2() 是已知一个角的正切值(也就是 y/x),求该角的弧度值。

  • 其中 参数y:表示位于 Y 轴上的值;参数x:表示位于 X 轴上的值
  • 注意,x 和 y 同时为 0 时将导致域错误(domain error),因为此时的角度是不存在的,或者说是没有意义的。

(2)返回值:

返回 y/x 的反正切值,以弧度表示,取值范围为(-π,π]。如上图所示,tan(θ) = y/x,θ = atan2(y, x)。

当 (x, y) 在象限中时:

当 (x, y) 在第一象限,0 < θ < π/2
当 (x, y) 在第二象限,π/2 < θ ≤ π
当 (x, y) 在第三象限,-π < θ < -π/2
当 (x, y) 在第四象限,-π/2 < θ < 0

当 (x, y) 在象限的边界(也就是坐标轴)上时:

当 y 是 0,且 x 为非负值,θ = 0
当 y 是 0,且 x 是负值,θ = π
当 y 是正值,且 x 是 0,θ = π/2
当 y 是负值,且 x 是 0,θ = -π/2

由此可知,一般情况下用 atan() 即可,当对所求出角度的象限有特殊要求时,应使用 atan2()。

(3)实例:

/* atan2 example */
#include <stdio.h>      /* printf */
#include <math.h>       /* atan2 */
#define PI 3.14159265
int main ()
{
    double x, y, result;
    x = -10.0;
    y = 10.0;
    result = atan2 (y,x) * 180 / PI;
    printf ("The arc tangent for (x=%f, y=%f) is %f degrees\n", x, y, result );
    return 0;
}

输出结果:

The arc tangent for (x=-10.000000, y=10.000000) is 135.000000 degrees
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值