在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x)  他们返回的值是弧度 要转化为角度再自己处理下。

前者接受的是一个正切值(直线的斜率)得到夹角,但是由于正切的规律性本可以有两个角度的但它却只返回一个,因为atan的值域是从-90~90 也就是它只处理一四象限,所以一般不用它。

第二个atan2(double y,double x) 其中y代表已知点的Y坐标 同理x ,返回值是此点与远点连线与x轴正方向的夹角,这样它就可以处理四个象限的任意情况了,它的值域相应的也就是-180~180了

例如:

例1:斜率是1的直线的夹角

cout<<atan(1.0)*180/PI;//45°

cout<<atan2(1.0,1.0)*180/PI;//45° 第一象限

cout<<atan2(-1.0,-1.0)*180/PI;//-135°第三象限

后两个斜率都是1 但是atan只能求出一个45°

例2:斜率是-1的直线的角度

cout<<atan(-1.0)*180/PI;//-45°

cout<<atan2(-1.0,1.0)*180/PI;//-45° y为负 在第四象限

cout<<atan2(1.0,-1.0)*180/PI;//135° x为负 在第二象限

常用的不是求过原点的直线的夹角 往往是求一个线段的夹角 这对于atan2就更是如鱼得水了

例如求A(1.0,1.0) B(3.0,3.0)这个线段AB与x轴正方向的夹角

用atan2表示为 atan2(y2-y1,x2-x1) 即 atan2(3.0-1.0,3.0-1.0)

它的原理就相当于把A点平移到原点B点相应变成B'(x2-x1,y2-y1)点 这样就又回到先前了

例三:

A(0.0,5.0) B(5.0,10.0)

线段AB的夹角为

cout<<atan2(5.0,5.0)*180/PI;//45°

^_^

C/C++中的atan和atan2函数相关推荐

  1. c语言atan2函数赋值程序,C/C++中的atan和atan2函数实例用法

    在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下. 前者接 ...

  2. atan和atan2函数

    atan和atan2函数 一.atan函数 二.atan2函数 三.代码 一.atan函数 atan范围是[-pi/2,pi/2],如果角度不在这个范围还得再判断 二.atan2函数 atan2函数范 ...

  3. c语言atan2函数赋值程序,实例讲解C语言atan和atan2函数

    使用时需要预包含#include (1)atan(x) 不包括角度的象限信息,返回值在[-pi/2,pi/2] The atan function computes the principal val ...

  4. C语言怎么实现atan2函数,实例讲解C语言atan和atan2函数

    http://anony3721.blog.163.com/blog/static/51197420114962425307/ 使用时需要预包含#include (1)atan(x) 不包括角度的象限 ...

  5. 通过atan实现atan2函数

    参考MATLAB函数--atan(x)和atan2(x)的区别 在有的情况下只提供了atan的内置函数而没有atan2,先要判断象限再调整. import torch import mathpi = ...

  6. MATLAB中atan与atan2角度讲解

    atan2求的是一个点所对应的角的大小 ,且输出角度范围是[-π, π] atan求的是一个数值对应的角,且输出角度范围是[-π/2, π/2] 例如: atan(1)=0.7854 atan(1,1 ...

  7. python中 math模块下 atan 和 atan2的区别

    atan 和 atan2 都是反正切函数,返回的都是弧度 对于两点形成的直线,两点分别是 point(x1,y1) 和 point(x2,y2),其斜率对应角度的计算方法可以是: angle = at ...

  8. atan函数与atan2函数的一点区别

    atan 和 atan2 都是求反正切函数,如:有两个点 point(x1,y1), 和 point(x2,y2); 那么这两个点形成的斜率的角度计算方法分别是: float angle = atan ...

  9. atan与atan2的区别

    相比较ATan,ATan2究竟有什么不同?本篇介绍一下ATan2的用法及使用条件. 对于tan(θ) = y / x: θ = ATan(y / x)求出的θ取值范围是[-PI/2, PI/2]. θ ...

最新文章

  1. ip转换软件在五八上能用吗?_交换机能当路由器用吗?浅谈交换器和路由器的区别...
  2. 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
  3. 为什么要学Win32及Win32程序框架
  4. 【Elasticsearch】es 一个数据精度引发的血案
  5. forEach,for in,for of循环的用法
  6. LAMP架构调优(九)——Apache Rewrite功能实战
  7. [转]更改windows 2003远程桌面连接的端口
  8. datatable自定义搜索和导出按钮并解决在后端分页无法导出全部数据的问题
  9. 江西政务服务“掌上办”新模式分享
  10. 2018 抖音热门歌曲大全
  11. 手机软件设计大赛报名信息
  12. radix tree
  13. PyQt5 Qt Designer 新手教程(一)—— 软件界面介绍
  14. irobot擦地机器人故障_Irobot Braava380t擦地机器人 操作使用说明
  15. sqlite3错误原因
  16. 计算机单片机实训报告,计算器单片机实训报告.doc
  17. 基于微信小程序的短视频管理系统
  18. 总结:云计算的4种部署模型
  19. Python三国华容道程序-广度优先
  20. 深度学习中的优化方法-AdaGrad

热门文章

  1. vConsole:H5控制台调试工具
  2. 春季瘦身燃烧脂肪14种妙法
  3. 异常 | ARM _data_abort 异常处理流程
  4. Springboot 2.0.x Redis缓存Key生成器,自定义生成器
  5. 数据链路层 随机接入-CSMA/CA协议
  6. SMB服务搭建与访问
  7. MobaXterm连接虚拟机Ubuntu
  8. python验证身份证最后一位数字代表什么_身份证号最后一位是“X”,代表什么意思?...
  9. WordPress 不修改代码通过sql语句修改数据库批量增加文章阅读量
  10. 在C++中检测和转换字节序(ENDIAN)