flash里,反正切atan2函数比反正切atan函数(即角的对边比邻边)更为有用,它可以让我们做出对物体正确的旋转.请记住Flash里的y轴 坐标与数学的是颠倒的.(上面演示所示),Flash是以弧度来计算的!坐标上的刻度值位置不太准,没校对大家就大概移到相应的点的位置上就可以验证下面 的列表值
atan(val:Number) atan2(y:Number,x:Number)
弧度角度换算公式:
弧度转为角度
degree = radians * 180 / PI
角度转为弧度
radians = degree * PI / 180

---------------------------------------------------------------------------------------------------------

atan2(Math.atan2 方法)

public static atan2(y:Number, x:Number) : Number

以弧度为单位计算并返回点 y /x 的角度,该角度从圆的 x 轴(0 点在其上,0 表示圆心)沿逆时针方向测量。返回值介于正 pi 和负 pi 之间。

可用性: ActionScript 1.0;Flash Player 5

x :Number - 指定点的 x 坐标的数字。

---------------------------------------------------------------------------------------------------------

我们可以使用正切操作将角度转变为斜率,那么怎样利用斜率来转换为角度呢?可以利用斜率的反正切函数将他转换为相应的角度.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

---------------------------------------------------------------------------------------------------------

trace(Math.atan2(10, 0)); // output: 1.5707963267949
注意:很多人研究很久都搞不明白这个atan2(y,x)是什么意思,其实很简单:
Q=180*(atan2(y,x)/Math.PI);
Q为真实的角度,当y=x时,Q为45度,当x=0,y!=0时,Q为90度,符合几何上的角度了。

透彻说明反正切atan2函数比反正切atan函数的区别相关推荐

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

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

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

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

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

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

  4. chi2inv函数 matlab_MATLAB的所有函数?

    展开全部 A a abs 绝对值.模.字32313133353236313431303231363533e78988e69d8331333332633566符的ASCII码值 acos 反余弦 aco ...

  5. python反正切_Python atan() 函数 - Python 教程 - 自强学堂

    Python atan() 函数 描述 atan() 返回x的反正切弧度值. 语法 以下是 atan() 方法的语法:import math math.atan(x) 注意:atan()是不能直接访问 ...

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

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

  7. atan2和atan函数的区别

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

  8. 正切atan2(y,x)与atan(x)

    1.atan(x)表示求的是x的反正切,其返回值为[-pi/2,+pi/2]之间的一个数. 2.atan2(y,x)求的是y/x的反正切,其返回值为[-pi,+pi]之间的一个数. 在三角函数中,两个 ...

  9. atan2(a,b)和atan的区别

    atan2(a,b)是4象限反正切,它的取值不仅取决于正切值a/b,还取决于点 (b, a) 落入哪个象限:    当点(b, a) 落入第一象限时,atan2(a,b)的范围是 0 ~ pi/2; ...

最新文章

  1. Java 二叉树 前序_java实现二叉树前序中序后序层次遍历
  2. Instagram允许用户管理评论 网络骚扰评论一扫空
  3. boost::multiprecision模块实现打印出所有的阶乘 这将适合一个 128 位整数相关的测试程序
  4. 4.6 Kaggle房价预测
  5. SpringCloudBus(了解)
  6. sdut2056不敢死队问题
  7. JavaSelenium处理页面Table以及Table中随机位置的数据
  8. lucene Collector 文档收集器
  9. 工作2年跳槽阿里,面试官会问哪些?(免费领取Java面试题)
  10. vi中跳到文件的第一行和最后一行
  11. java往jsp页面嵌入弹出框_jsp页面制作弹出框
  12. 电动执行器平时应该怎么去维护和保养?
  13. 高中计算机课简单介绍,高中课程介绍
  14. python自动回复_Python—itchat实现微信自动回复
  15. Use Eager execution or decorate this function with @tf.function.
  16. PHP接口_短信发送接口
  17. 无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它
  18. leetcode之雪糕的最大数量(C++)
  19. 关于excel中的超长数字显示方法
  20. 组建无线网络的六条思路

热门文章

  1. ORA-00600[6711]错误一例
  2. 蚂蚁金服电话面试小结。
  3. OFCMS 模板开发手册 java 版cms系统
  4. This tool must be run as root
  5. C#构造函数和析构函数
  6. Jquery实现全选和反选
  7. [连通块]leetcode2316:统计无向图中无法互相到达点对数(medium)
  8. silabs系列51单片机使用printf函数
  9. SCMS中的蝴蝶密钥扩展算法(CCSA版本)
  10. 如何搭建普罗米修斯 Prometheus