透彻说明反正切atan2函数比反正切atan函数的区别
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函数的区别相关推荐
- 数据的标准化(离差标准化、log函数转换、atan函数转换、z标准化)
源:https://blog.csdn.net/bbbeoy/article/details/70185798 引入 评价是现代社会各领域的一项经常性的工作,是科学做出管理决策的重要依据.随着人们研究 ...
- matlab2c使用c++实现matlab函数系列教程-atan函数
全栈工程师开发手册 (作者:栾鹏) matlab2c动态链接库下载 matlab库函数大全 matlab2c基础教程 matlab2c开发全解教程 matlab2c调用方法: 1.下载动态链接库 2. ...
- atan()函数与atan2()函数
atan函数与atan2函数 一.atan()函数 1. 描述 2. 声明 3. 参数 4. 返回值 5. 头文件 二.atan2()函数 1. 描述 2. 声明 3. 参数 4. 返回值 5. 头文 ...
- chi2inv函数 matlab_MATLAB的所有函数?
展开全部 A a abs 绝对值.模.字32313133353236313431303231363533e78988e69d8331333332633566符的ASCII码值 acos 反余弦 aco ...
- python反正切_Python atan() 函数 - Python 教程 - 自强学堂
Python atan() 函数 描述 atan() 返回x的反正切弧度值. 语法 以下是 atan() 方法的语法:import math math.atan(x) 注意:atan()是不能直接访问 ...
- atan函数与atan2函数的一点区别
atan 和 atan2 都是求反正切函数,如:有两个点 point(x1,y1), 和 point(x2,y2); 那么这两个点形成的斜率的角度计算方法分别是: float angle = atan ...
- atan2和atan函数的区别
atan2函数 atan2: Four-quadrant inverse tangent. 四象限反正切函数. Also known as the "quadrant-sensitive'' ...
- 正切atan2(y,x)与atan(x)
1.atan(x)表示求的是x的反正切,其返回值为[-pi/2,+pi/2]之间的一个数. 2.atan2(y,x)求的是y/x的反正切,其返回值为[-pi,+pi]之间的一个数. 在三角函数中,两个 ...
- atan2(a,b)和atan的区别
atan2(a,b)是4象限反正切,它的取值不仅取决于正切值a/b,还取决于点 (b, a) 落入哪个象限: 当点(b, a) 落入第一象限时,atan2(a,b)的范围是 0 ~ pi/2; ...
最新文章
- Java 二叉树 前序_java实现二叉树前序中序后序层次遍历
- Instagram允许用户管理评论 网络骚扰评论一扫空
- boost::multiprecision模块实现打印出所有的阶乘 这将适合一个 128 位整数相关的测试程序
- 4.6 Kaggle房价预测
- SpringCloudBus(了解)
- sdut2056不敢死队问题
- JavaSelenium处理页面Table以及Table中随机位置的数据
- lucene Collector 文档收集器
- 工作2年跳槽阿里,面试官会问哪些?(免费领取Java面试题)
- vi中跳到文件的第一行和最后一行
- java往jsp页面嵌入弹出框_jsp页面制作弹出框
- 电动执行器平时应该怎么去维护和保养?
- 高中计算机课简单介绍,高中课程介绍
- python自动回复_Python—itchat实现微信自动回复
- Use Eager execution or decorate this function with @tf.function.
- PHP接口_短信发送接口
- 无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它
- leetcode之雪糕的最大数量(C++)
- 关于excel中的超长数字显示方法
- 组建无线网络的六条思路