相比较ATan,ATan2究竟有什么不同?本篇介绍一下ATan2的用法及使用条件。

对于tan(θ) = y / x:

θ = ATan(y / x)求出的θ取值范围是[-PI/2, PI/2]。

θ = ATan2(y, x)求出的θ取值范围是[-PI, PI]。

  • 当 (x, y) 在第一象限, 0 < θ < PI/2.

  • 当 (x, y) 在第二象限 PI/2 < θ≤PI.

  • 当 (x, y) 在第三象限, -PI < θ < -PI/2.

  • 当 (x, y) 在第四象限, -PI/2 < θ < 0.

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

  • 当 y 是 0,x 为非负值, θ = 0.

  • 当 y 是 0, x 是 负值, θ = PI.

  • 当 y 是 正值, x 是 0, θ = PI/2.

  • 当 y 是 负值, x 是 0, θ = -PI/2.

由此可知,一般情况下用ATan即可,当对所求出角度的取值范围有特殊要求时,应使用ATan2。

atan 和 atan2 都是求反正切函数,如:有两个点 point(x1,y1), 和 point(x2,y2);

那么这两个点形成的斜率的角度计算方法分别是:

float angle = atan( (y2-y1)/(x2-x1) );

float angle = atan2( y2-y1, x2-x1 );

atan 和 atan2 区别:

1:参数的填写方式不同;

2:atan2 的优点在于 如果 x2-x1等于0 依然可以计算,但是atan函数就会导致程序出错;

结论: atan 和 atan2函数,建议用 atan2函数;

转载于:https://www.cnblogs.com/13224ACMer/p/4693060.html

atan与atan2的区别相关推荐

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

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

  2. C语言math.h库函数中atan与atan2的区别

    今天做图像旋转练习的时候,要根据鼠标的移动轨迹来确定转过的角度,于是就很自然的想到通过三个点来确定这个转过的角度:图像的中心,鼠标按下的点,鼠标拖到的点.想到使用斜率来计算角度,于是联想到数学公式中的 ...

  3. c语言math.atan,C语言math.h库函数中atan与atan2的区别

    今天做图像旋转练习的时候,要根据鼠标的移动轨迹来确定转过的角度,于是就很自然的想到通过三个点来确定这个转过的角度:图像的中心,鼠标按下的点,鼠标拖到的点.想到使用斜率来计算角度,于是联想到数学公式中的 ...

  4. [转载] numpy.arctan, math.atan, math.atan2的区别

    参考链接: Python中的numpy.arctan2 numpy.arctan与math.atan的结果的取值范围是一样的,是从-90度到90度,而math.atan2的结果的取值范围是从-180到 ...

  5. numpy.arctan, math.atan, math.atan2的区别

    numpy.arctan与math.atan的结果的取值范围是一样的,是从-90度到90度,而math.atan2的结果的取值范围是从-180到180度.所以当你需要的结果是需要超出-90度到90度的 ...

  6. Matlab 函数atan 函数atan2 的区别

    double atan(  double x  ); //计算x的反正切值 double  atan2 ( double y, double x ); //计算y/x的反正切值

  7. C语言中两个反正切函数atan与atan2的区别

    我们可以使用正切操作将角度转变为斜率,那么怎样利用斜率来转换为角度呢?可以利用斜率的反正切函数将他转换为相应的角度.as中有两个函数可以计算反正切,我们来看一下. 1.as中Math.atan() M ...

  8. c语言atan的作用,C语言中的atan和atan2

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

  9. 反正切函数atan,atan2

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

最新文章

  1. quartz java web_java web定时任务---quartz
  2. 消费者最关心的就是你的用户体验,以及保证产品品质,保证价格和服务
  3. Cannot add or update a child row:
  4. html中写css代码,开发DIV CSS时 先写CSS代码还是先写HTML代码
  5. 第七十期:IT技术人员的自我修养
  6. java正则表达式及api_Java API 之 正则表达式
  7. BZOJ1031: [JSOI2007]字符加密Cipher
  8. c++ 多态 运行时多态和编译时多态_C++学习笔记之多态
  9. android 自定义进度条 水量,Android自定义带水滴的进度条样式(带渐变色效果)...
  10. java复习系列[3] - Java虚拟机
  11. Netty 5 io.netty.util.IllegalReferenceCountException 异常
  12. mysql 省份名排序_MySQL:如何利用用户变量进行分组排序并取top1数据
  13. 易语言远程查询oracle数据库连接,易语言如何连接远程服务器上的数据库,并读取数据...
  14. 三维偏序:CDQ分治
  15. steam当前计算机无法,steam无法打开【操作思路】
  16. 知乎7万赞回答:你思考问题的方式,决定了你的层次
  17. 如何用30分钟快速优化家中Wi-Fi?阿里工程师有绝招
  18. vue开发很难?不存在的,可视化开发神器mxdev0.4版更新
  19. mysql got signal 6_[ERROR] mysqld got signal 6 错误
  20. centos7 “v篇n“工具

热门文章

  1. 宝马计算机考试答案,宝马BMW旅程电脑功能键的说明与测试程序
  2. python正则表达式判断数字_Python机器学习之手写数字辨识及正则表达式
  3. 反转链表 IIPython解法
  4. 并行程序设计(MPICH环境配置)win10
  5. java radiobutton获取信息_如何获取JRadioButton的文本值
  6. 电脑word在哪_求职必会!她是微软Office Word认证大师,想教你成为效率10倍提升的Word高手...
  7. 有一个包含主函数的java类_重新认识Java中的程序入口即主函数各组成部分
  8. mysql 分词搜索_打造一个蓝奏云网盘搜索引擎
  9. php detect unicode,php-functions/unicode.php at master · xiilei/php-functions · GitHub
  10. java二维码生成_如何使用 Java 生成二维码?