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°
以上就是我们整理的相关内容,希望能够帮助到大家。
相关推荐
-
对python中 math模块下 atan 和 atan2的区别详解
atan 和 atan2 都是反正切函数,返回的都是弧度 对于两点形成的直线,两点分别是 point(x1,y1) 和 point(x2,y2),其斜率对应角度的计算方法可以是: angle = atan( (y2-y1)/(x2-x1) ) 或 angle = atan2( y2-y1, x2-x1 ) 因此可以看出 atan 和 atan2 的区别: 1.参数的个数不同:atan 为单个参数,atan2为两个参数 2.atan2 的优点在于: 如果 x2-x1等于0 ,角度依然可以计算,但是
-
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轴正方向
-
ES6中Array.find()和findIndex()函数的用法详解
ES6为Array增加了find(),findIndex函数. find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined. findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1. 他们的都是一个查找回调函数. [1, 2, 3, 4].find((value, index, arr) => { }) 查找函数有三个参数. value:每一次迭代查找的数组元素. index:每一次迭代查找的数组元素索引. arr:被查找的数组. 例: 1.查找
-
JavaScript中常见的字符串操作函数及用法汇总
本文实例总结了JavaScript中常见的字符串操作函数及用法.分享给大家供大家参考.具体分析如下: 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信你也跟我一样,发现字符串的处理是前端招聘过程中最常见的题型之一.这些题有一个特点,站在考官的角度去考虑,它考的不是你会不会,而是你能不能在不借用XX手册或者XX指南再或者百度谷歌的情况下,用比较简洁的方式写出答案来.可惜的是,很多开发人员,当然我也
-
C++中getline()、gets()等函数的用法详解
在学习C++的过程中,经常会遇到输入输出的问题,以下总结一下下面几个函数的用法: 1).cin 2).cin.get() 3).cin.getline() 4).getline() 5).gets() 1.cin>> 用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream> using namespace std; main () { int a,b; cin>>a>>b; cout<<a+b<<end
-
Python中常用的高阶函数实例详解
前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. lambda 当在使用一些函数的时候,我们不需要显式定义函数名称,直接传入lambda匿名函数即可.lambda匿名函数通常和其他函数搭配使用. 比如可以直接使用如下的lambda表达式计算当x=3时,y = x * 3 + 5的函数值. In [1]: (lambda x: x * 3 + 5)(3) Out[1]: 14 map map函数将一个函数和序列/迭代器(可以传
-
php中rsort函数实例用法
在讲到升序的数组方法后,那么对应的就会出现降序的方法.在我们正式揭晓方法之前,大家已经学习了sort函数的用法,那么对应的降序函数名称就是rsort() .两个函数在结构语法上都非常相似,下面我们就rsort() 函数的概念.语法.返回值.降序实例带来介绍,具体使用方法如下. 1.概念 rsort() 函数行为与 sort() 相反,对数组单元进行由高到低排序. 注意: 如果数组元素是数字,则根据数字排序:如果数组元素是字符串,则根据字母排序:如果数组包含数字值和文本/字符串,则根据字母排序.
-
python使用numpy中的size()函数实例用法详解
在python中,提到如何计算多维数组和矩阵,那一定会想到numpy.numpy定义了矩阵和数组,为它们提供了相关的运算.size中文解释为大家.尺寸的意思,如果想要统计矩阵元素个数,使用size()函数就可以解决. 1.Numpy size()函数 主要是用来统计矩阵元素个数,或矩阵某一维上的元素个数的函数. 2.使用语法 numpy.size(a, axis=None) 3.使用参数 a:输入的矩阵 axis:int型的可选参数,指定返回哪一维的元素个数.当没有指定时,返回整个矩阵的元素个数
-
python中time tzset()函数实例用法
在时间的设置方面,为了能够跟系统时间有更好的区分,我们有时会借用一些函数方法来实现.就拿tzset()来说是设置时间的一种方法,其内在的变量依靠TZ的控制,如果没有设置TZ则以系统时间为准.接下来我们简单就time tzset().TZ进行说明,并对函数的语法.参数.返回值.实例带来使用介绍. 1.说明 tzset()主要用于设置时间变量,它通过获取TZ环境变量初始化tzname变量,在类System-V系统中,它同时设置timezone(相对UTC以西的秒数,向西为正,向东为负)和daylig
-
python中os.path.join()函数实例用法
1.说明 拼接文件路径,可以有多个参数. 2.语法 os.path.join(path1,path2,*) path1 初始路径. path2 需要拼接在其后的路径.初始路径文件夹下的文件或文件夹.可以有多个需要拼接的参数,依次拼接. 3.注意 如果拼接在后的参数中含有'\'开头的参数,将从'\'开头的参数开始,前面的参数均将失效,并且路径将从对应磁盘的根目录开始. 4.实例 >>> import os >>> path='D:\dataset' >>>
-
php中trim函数实例用法
我们在编写代码的时候,会遇到需要去除字符串的空格情况,这个时候,就需要用到函数才可以实现,在php中有一个函数系列是专门提供使用的,这就是trim函数,其中系统中ltrim函数可以实现去掉字符串首部字符,rtrim函数只去除字符串尾部的字符. 下面就来详细了解操作方法吧. trim用法: string trim ( string $str [, string $character_mask = " tnrx0B" ] ) trim参数: character_mask 运行使用: $st
随机推荐
- 在Vue.js中使用Mixins的方法
- 线上MYSQL同步报错故障处理方法总结(必看篇)
- 用PHP读取RSS feed的代码
- Java反射机制的实现详解
- Android中ListView下拉刷新的实现方法实例分析
- Yii2搭建后台并实现rbac权限控制完整实例教程
- FormatRemoteUrl函数之asp实现格式化成当前网站完整的URL-将相对地址转换为绝对地址的代码
- Javascript调试工具(下载)
- MySQL修改默认存储引擎的实现方法
- PHP实现判断数组是一维、二维或几维的方法
- Add Formatted Text to a Word Document
- 初学Python实用技巧两则
- Python实现把utf-8格式的文件转换成gbk格式的文件
- 详解Android内存泄漏检测与MAT使用
- Android中的Fragment类使用进阶
- Java新特性之Nashorn_动力节点Java学院整理
- 关于移位操作的一点重要说明
- 微软 Visual Studio 2010官方下载地址给大家
- C#中@的用法总结
- 微信小程序 数据封装,参数传值等经验分享