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

1、as中Math.atan()

Math.atan()接受一个参数:用法如下:

angel=Math.atan(slope)

angel为一个角度的弧度值,slope为直线的斜率,是一个数字,这个数字可以是负的无穷大到正无穷大之间的任何一个值.

不过,利用他进行计算比较复杂.因为他的周期性,一个数字的反正切值不止一个.例如atan(-1)的值可能是45度,也可能是225度.这样就是他的周期性,对于正切函数来说,他的周期是180度,所以两个相差180度的角具有相同的正切和斜率:

tanθ=tan(θ+180)

然而,Math.atan()只能返回一个角度值,因此确定他的角度非常的复杂,而且,90度和270度的正切是无穷大,因为除数为零,我们也是比较难以处理的~!因此我们更多的会采用第二个函数.

2、Math.atan2()

Math.atan2()接受两个参数x和y,方法如下:

angel=Math.atan2(y,x)

x 指定点的 x 坐标的数字。

y 指定点的 y 坐标的数字。

计算出来的结果angel是一个弧度值,也可以表示相对直角三角形对角的角,其中 x 是临边边长,而 y 是对边边长。

下面我们来测试一下这两个函数:

x=Math.atan(1)  //计算正切值为1的数字对应的弧度值

trace(x)  //输出一个弧度值0.785398163397448

x=180*x/Math.PI   //转换为角度值

trace(x)  //输出45

x=Math.atan2(7,7)

trace(x)   //输出0.785398163397448

x=180*x/Math.PI   //转换为角度值

trace(x)    //输出45

x=Math.atan2(7,-7)

trace(x)//2.35619449019234

x=180*x/Math.PI    //转换为角度值

trace(x)135

x=Math.atan2(-7,7)

trace(x)   //输出-0.785398163397448

x=180*x/Math.PI   //转换为角度值

trace(x)  //输出-45

x=Math.atan2(-7,-7)

trace(x)   //输出-2.35619449019234

x=180*x/Math.PI   //转换为角度值

trace(x)   //输出-135

//从这些测试可以看出,通过坐标系的自动调整,我们可以很自由的计算出处于不同象限的位置相对应的角度.

3、计算两点间连线的倾斜角.

这种方法非常的有用.

Math.atan2()函数返回点(x,y)和原点(0,0)之间直线的倾斜角.那么如何计算任意两点间直线的倾斜角呢?只需要将两点x,y坐标分别相减得到一个新的点(x2-x1,y2-y1).然后利用他求出角度就可以了.使用下面的一个转换可以实现计算出两点间连线的夹角.Math.atan2(y2-y1,x2-x1)

不过这样我们得到的是一个弧度值,在一般情况下我们需要把它转换为一个角度.

下面我们用一段代码来测试一下这样的转换.

//测试,计算点(3,3)和(5,5)构成的连线的夹角

x=Math.atan2(5-3,5-3)

trace(x)//输出0.785398163397448

x=x*180/Math.PI//转换为角度

trace(x)//输出45

C语言中两个反正切函数atan与atan2的区别相关推荐

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

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

  2. c语言宏定义比较三个数大小,C语言中两个宏进行大小对比,其中一个没有定义,这种行为如何定义。...

    1.C语言中两个宏进行大小对比,其中一个没有定义,这种行为如何定义呢? 在学习U-boot的过程中遇到这么一个定义: # if (CONFIG_ENV_ADDR >= CONFIG_SYS_MO ...

  3. C语言两个同名头文件,C lang: C语言中两个头文件引入相同的头文件(Header.h)

    C lang: C语言中两个头文件引入相同的头文件(Header.h) C lang: C语言中两个头文件引入相同的头文件(Header.h) [var1] For example: Header.h ...

  4. c语言汉字的ascii,C语言中两位ASCII码可以表示汉字

    ******************************************************** 现在开始分析: 资料一说: "206 210 176 174 214 236 ...

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

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

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

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

  7. C语言中两个数交换组成新的数

    对于新手,C语言中将两个两位数的正整数a.b合并成一个整数放在c中的问题.合并的方式是:将a中的十位和个位数一次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上(这块以两个十位数4 ...

  8. c语言中两个数最大公约数怎么求,C语言求两个数中最大公约数

    在C语言中如何求两个数的最大公约数呢?下面用三种方法进行求解. 方法一:穷举法. 先比较两个数的大小,然后找出较小数t,最后判断t为何值时两个数都能整除,此方法效率较低. 代码如下:#include ...

  9. C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换

    使用gmtime函数或localtime函数将time_t类型的时间日期转换为structtm类型: 使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年.月.日 ...

最新文章

  1. 天才也勤奋!DeepMind哈萨比斯自述:领导400名博士向前,每天工作至凌晨4点
  2. python圣诞树代码成品图片动态_Python 圣诞树和樱花树源码
  3. 网站SEO优化没有捷径!
  4. html表ge模板_16款用户体验优秀的HTML CSS价格表格模板 附演示及下载
  5. Android Studio中关于9-patch格式图片的编译错误
  6. 我的工作日志 - 2020年11月11日星期三 阴
  7. nginx配置文件中的location中文详解
  8. bash知识点:文件测试
  9. 《linux c编程指南》学习手记4
  10. torch.bmm() 与 torch.matmul()==>张量的相乘运算
  11. [SDOI2006]二进制方程 并查集
  12. 数据库中常见的面试问题(转)
  13. 1.1.1 计算机网络的概念、组成、功能和分类(转载)
  14. 企业与黑客攻击 就是一场军备竞赛
  15. M8的USB工作模式切换工具
  16. sql prompt插件的安装
  17. 需求调研第二篇--调研准备阶段避免哪些错误
  18. java关于Exception(异常)的详解
  19. 类似京东商城客户端应用源码
  20. 令人匪夷所思的 Magic 之魔数,你真的不会

热门文章

  1. CanalServerException: rollback error, clientId:1001 batchId:xxx (2022-05-13)
  2. 明星热图|宋轶、辛芷蕾、王丽坤等演绎服饰新品;肖战代言李宁;林俊杰献唱迪士尼经典歌曲...
  3. 大数据与区块链相关好文章整理
  4. ANSI/UL 94 5-V级垂直燃烧试验
  5. 马云布局阿里金融 “虚拟信用卡”先行
  6. EternalBlue 永恒之蓝 SMB 漏洞底层实现介绍
  7. 2021年11月29日yolov3害虫检测
  8. 数据密集型应用系统设计-第七章分布式系统的麻烦-笔记
  9. KMP算法讲解(next数组求解)
  10. 什么是模板引擎?常见的模板引擎有哪些?thymeleaf的常用指令介绍