atan与atan2的区别

相比较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函数;

时间: 2024-10-12 14:26:59

atan与atan2的区别的相关文章

atan()与atan2()

Atan2 函数介绍 atan2原型:extern float atan2(float y, float x);用法:#include <math.h>功能:求y/x(弧度表示)的反正切值说明:值域为(-π/2,+π/2).举例:atan 1 //atan2.c 2 #include <syslib.h> 3 #include <math.h> 4 5 main() 6 { 7 float x,y; 8 clrscr(); // clear screen 9 textm

C语言中的atan和atan2

在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轴正方

C/C++中的atan和atan2函数

在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轴正方

atan函数与atan2函数

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:+-π/2,atan2:+-π atan 和 atan2 区别: 1:参数的填写方式不同: 2:ata

常用数学函数篇abs acos asin atan ceil cos exp frexp ldexp log pow sin sinh sqrt tan tanh

abs(计算整型数的绝对值) 相关函数 labs, fabs 表头文件 #include<stdlib.h> 定义函数 int abs (int j) 函数说明 abs()用来计算参数j的绝对值,然后将结果返回. 返回值 返回参数j的绝对值结果. 范例 #ingclude <stdlib.h> main(){ int ansert; answer = abs(-12); printf("|-12| = %d\n", answer); } 执行 |-12| = 1

C++ Objective C Java C 详细比较和区别

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net primitive types | arithmetic and logic | strings | regexes | dates and time | arrays | dictionaries | functions execution control | files | directories | processes and

MATLAB命令大全

一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看.2.who 可以查看当前工作空间变量名, whos 可以查看变量名细节.3.功能键:功能键 快捷键 说明方向上键 Ctrl+P 返回前一行输入方向下键 Ctrl+N 返回下一行输入方向左键 Ctrl+B 光标向后移一个字符方向右键 Ctrl+F 光标向前移一个字符Ctrl+方向右键 Ctrl+R 光标向右移一个字符Ctrl+方向左键 Ctrl+L 光标向左移

[转] MATLAB快捷键

原文地址:MATLAB快捷键大全 (转载)作者:掷地有声 一.索引混排版 备注:删除了如F1(帮助)等类型的常见快捷命令 SHIFT+DELETE永久删除 DELETE删除 ALT+ENTER属性 ALT+F4关闭 CTRL+F4关闭 ALT+TAB切换 ALT+ESC切换 ALT+空格键窗口菜单 CTRL+ESC开始菜单 拖动某一项时按CTRL复制所选项目 拖动某一项时按CTRL+SHIFT创建快捷方式 将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放 Ctrl+1,2,3...

matlab快捷键大全

原文地址,点此查看 一.常用对象操作 除了一般windows窗口的常用功能键外. 1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看. 2.who   可以查看当前工作空间变量名, whos 可以查看变量名细节. 3.功能键: 功能键           快捷键           说明 方向上键      Ctrl+P       返回前一行输入 方向下键      Ctrl+N       返回下一行输入 方向左键      Ctrl+B       光标向后移一