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

【c++】atan2()和atan()函数相关推荐

  1. atan2和atan函数的区别

    atan2函数 atan2: Four-quadrant inverse tangent. 四象限反正切函数. Also known as the "quadrant-sensitive'' ...

  2. atan()函数与atan2()函数

    atan函数与atan2函数 一.atan()函数 1. 描述 2. 声明 3. 参数 4. 返回值 5. 头文件 二.atan2()函数 1. 描述 2. 声明 3. 参数 4. 返回值 5. 头文 ...

  3. 透彻说明反正切atan2函数比反正切atan函数的区别

    flash里,反正切atan2函数比反正切atan函数(即角的对边比邻边)更为有用,它可以让我们做出对物体正确的旋转.请记住Flash里的y轴 坐标与数学的是颠倒的.(上面演示所示),Flash是以弧 ...

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

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

  5. C++中的atan2与atan

    C++中的atan2与atan 1. atan(x) 2. atan2(y,x) 3. atan(y/x)与atan2(y,x)的区别 反正切函数 atan(double x)与 atan2(doub ...

  6. atan2 vs atan

    atan2函数 atan2(y,x)所表达的意思是以坐标原点为起点,指向(x,y)坐标处的射线在坐标平面上与x轴正向之间的夹角的角度.在我们轨迹跟踪过程中,我们车辆的横摆角定义为车辆纵轴与X轴正向之间 ...

  7. matlab2c使用c++实现matlab函数系列教程-atan函数

    全栈工程师开发手册 (作者:栾鹏) matlab2c动态链接库下载 matlab库函数大全 matlab2c基础教程 matlab2c开发全解教程 matlab2c调用方法: 1.下载动态链接库 2. ...

  8. atan2与atan的区别

    目录 总结 atan2: Four-quadrant inverse tangent. atan 距离对比 总结 简而言之,atan2与atan的区别体现在两个方面: (1) atan2接收两个输入参 ...

  9. 数据的标准化(离差标准化、log函数转换、atan函数转换、z标准化)

    源:https://blog.csdn.net/bbbeoy/article/details/70185798 引入 评价是现代社会各领域的一项经常性的工作,是科学做出管理决策的重要依据.随着人们研究 ...

最新文章

  1. 解决OpenCV问题:OpenCV Error: Assertion failed (!empty()) in cv::CascadeClassifier::detectMultiScale,
  2. Spring 钩子之BeanFactoryPostProcessor和BeanPostProcessor
  3. 企业级php第三方支付平台,ThinkPHP新版企业级php第三方api第四方支付平台程序源码商业版 带接口文件等 某宝售价3000元...
  4. problem a: 简单的整数排序_python里的排序
  5. Microsoft Edge 83 稳定版发布
  6. Qt知识点、疑难杂症的治疗
  7. mongodb 笔记
  8. java 图片渐变消失_在线等:java图片怎样使之渐变消失
  9. 腾讯视频怎么获得html代码,如何获取腾讯视频等九大视频网站的视频分享代码...
  10. Android 加载数据等待时 小人奔跑进度动画
  11. 在上海乐字节学习CRM项目管理
  12. 我的阿里三面,四面分享给大家
  13. app逆向案例分析-极速抖音
  14. 录屏 java_Java小程序—录屏小程序(上半场)
  15. mysql创建表时出现10064错误
  16. 深夜街头被偷拍的扎心瞬间:成年人的体面,都是易碎品
  17. 微信扫码下载APP(带有蒙层)
  18. Python常用字符编码
  19. Python Keras ValueError: Layer sequential expects 1 input(s), but it received 2 input tensors. 解决方法
  20. HTTPS证书基本概述

热门文章

  1. YUI 3 学习笔记:YUI Base
  2. Python栈的实现
  3. 【数据结构】栈和对应的python栈的常用操作
  4. 区块链保护玩家虚拟财产
  5. CorelDRAW_X4使用总结
  6. CSS文字真正两端对齐(俩字和三字对齐)
  7. 闲鱼项目靠谱吗?小白入坑全指南!
  8. 【Unity3D Shader编程】之七 静谧之秋篇: 表面着色器的写法(二)—— 自定义光照模式
  9. Gradle 使用 Maven 本地仓库。
  10. 让用户输入一个宠物名字,然后检查该名字是否在宠物列表中