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轴正方向的夹角,这样它就可以处理四个象限的任意情况了,它的值域相应的也就是-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函数相关推荐
- c语言atan2函数赋值程序,C/C++中的atan和atan2函数实例用法
在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下. 前者接 ...
- atan和atan2函数
atan和atan2函数 一.atan函数 二.atan2函数 三.代码 一.atan函数 atan范围是[-pi/2,pi/2],如果角度不在这个范围还得再判断 二.atan2函数 atan2函数范 ...
- c语言atan2函数赋值程序,实例讲解C语言atan和atan2函数
使用时需要预包含#include (1)atan(x) 不包括角度的象限信息,返回值在[-pi/2,pi/2] The atan function computes the principal val ...
- C语言怎么实现atan2函数,实例讲解C语言atan和atan2函数
http://anony3721.blog.163.com/blog/static/51197420114962425307/ 使用时需要预包含#include (1)atan(x) 不包括角度的象限 ...
- 通过atan实现atan2函数
参考MATLAB函数--atan(x)和atan2(x)的区别 在有的情况下只提供了atan的内置函数而没有atan2,先要判断象限再调整. import torch import mathpi = ...
- MATLAB中atan与atan2角度讲解
atan2求的是一个点所对应的角的大小 ,且输出角度范围是[-π, π] atan求的是一个数值对应的角,且输出角度范围是[-π/2, π/2] 例如: atan(1)=0.7854 atan(1,1 ...
- python中 math模块下 atan 和 atan2的区别
atan 和 atan2 都是反正切函数,返回的都是弧度 对于两点形成的直线,两点分别是 point(x1,y1) 和 point(x2,y2),其斜率对应角度的计算方法可以是: angle = at ...
- atan函数与atan2函数的一点区别
atan 和 atan2 都是求反正切函数,如:有两个点 point(x1,y1), 和 point(x2,y2); 那么这两个点形成的斜率的角度计算方法分别是: float angle = atan ...
- atan与atan2的区别
相比较ATan,ATan2究竟有什么不同?本篇介绍一下ATan2的用法及使用条件. 对于tan(θ) = y / x: θ = ATan(y / x)求出的θ取值范围是[-PI/2, PI/2]. θ ...
最新文章
- ip转换软件在五八上能用吗?_交换机能当路由器用吗?浅谈交换器和路由器的区别...
- 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
- 为什么要学Win32及Win32程序框架
- 【Elasticsearch】es 一个数据精度引发的血案
- forEach,for in,for of循环的用法
- LAMP架构调优(九)——Apache Rewrite功能实战
- [转]更改windows 2003远程桌面连接的端口
- datatable自定义搜索和导出按钮并解决在后端分页无法导出全部数据的问题
- 江西政务服务“掌上办”新模式分享
- 2018 抖音热门歌曲大全
- 手机软件设计大赛报名信息
- radix tree
- PyQt5 Qt Designer 新手教程(一)—— 软件界面介绍
- irobot擦地机器人故障_Irobot Braava380t擦地机器人 操作使用说明
- sqlite3错误原因
- 计算机单片机实训报告,计算器单片机实训报告.doc
- 基于微信小程序的短视频管理系统
- 总结:云计算的4种部署模型
- Python三国华容道程序-广度优先
- 深度学习中的优化方法-AdaGrad
热门文章
- vConsole:H5控制台调试工具
- 春季瘦身燃烧脂肪14种妙法
- 异常 | ARM _data_abort 异常处理流程
- Springboot 2.0.x Redis缓存Key生成器,自定义生成器
- 数据链路层 随机接入-CSMA/CA协议
- SMB服务搭建与访问
- MobaXterm连接虚拟机Ubuntu
- python验证身份证最后一位数字代表什么_身份证号最后一位是“X”,代表什么意思?...
- WordPress 不修改代码通过sql语句修改数据库批量增加文章阅读量
- 在C++中检测和转换字节序(ENDIAN)