c/c++中atan和atan2区别

在目标定位过程中,为了计算同一目标在不同坐标系下的坐标值,可能需要用到角度计算函数atan或atan2.
例如:毫米波雷达给出目标在自身直角坐标系下的坐标(x,y),以及雷达自身的经纬度(longitude,latitude),为了计算目标点的经纬度,可以利用(x,y)计算目标距离和方位角,根据一点经纬度和目标点距离和方位角(ps:一般方位角指与正北方向夹角)得到目标点经纬度。

后续文章会给出具体经纬度、距离、方位角计算的方法,本文只关注atan和atan2函数
根据雷达坐标计算目标点经纬度坐标

atan:

double atan(double x/y);
函数计算正切值为 x/y 的角的度数,以弧度表示,区间为(-π/2, π/2),也就是说atan()函数不能确定目标所在的象限,例如求得的度数是 45°,并不能说明是第一象限的角度,还有可能是第三象限的角度。如果想进一步确定角度所在的象限,请使用 atan2()。
ps:不过单个毫米波雷达也探测不到第三第四象限。

atan2

double atan2(double x,double y);
atan2() 函数的功能是求 x/y 的反正切值,以弧度表示,取值范围为(-π,π]。atan2() 是 atan() 的增强版,能够确定角度所在的象限。注意,x 和 y 同时为 0 时将导致域错误(domain error),因为此时的角度是不存在的,或者说是没有意义的。

个人理解atan2小技巧:atan2(x,y)得到的角度是和后一参数y坐标轴正方向的夹角,前一参数x坐标轴的方向决定了夹角的正负方向(即y轴正向逆时针旋转为正还是为负)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值