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 反正切函数 2 atan2(y,x) asinh 反双曲余弦函数 asinh(x) atanh 反双曲正切函数 atanh(x) sinh 双曲正弦函数 sinh(x) cosh 双曲余弦函数 cosh(x) tanh 双曲正切函数 tanh(x) even 偶数函数(整数部分为
基于dsPIC33F的快速CORDIC法计算反正切值
MATLAB中atan函数介绍文档。tan函数的说明及其定义域和值域介绍。
python教程三⾓函数_Python⼊门之三⾓函数atan2()函数详 解 描述 atan2() 返回给定的 X 及 Y 坐标值的反正切值。 语法 以下是 atan2() ⽅法的语法: import math math.atan2(y, x) 注意:atan2()是不能直接访问的,...
matlab的滑膜框图 反正切的滑膜算法
描述:matlab的Atan2函数与vb.net的Atan2函数计算结果并不一致。该程序用vb.net实现了matlab的Atan2函数。
设计了一种基于CORDIC算法计算浮点反正切函数的的硬件结构,并在Altera公司的FPGA芯片上进行了验证,最后在Nios II处理器系统中以用户自定义指令的形式实现,通过C语言程序验证了浮点反正切模块的正确性。
在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下。 前者接受的是一个正切值(直线的斜率)得到夹角,但是由于正切的...
(1)且用asin曲线计算代替难以描述的atan曲线,快速开方函数 (2)全部采用整形运算,加快了运算速度,返回的角度范围是0~360.00,包含4个象限,输出角度值 (3)asin曲线使用了一半的曲线,解决了asin邻近90度时...
atan 和 atan2 都是反正切函数,返回的都是弧度 对于两点形成的直线,两点分别是 point(x1,y1) 和 point(x2,y2),其斜率对应角度的计算方法可以是: angle = atan( (y2-y1)/(x2-x1) ) 或 angle = atan2( y2-y1, x2...
atan2的查表法实现,支持宏定义调整精度,非常适合没有带FPU的MCU使用。
matlab中atan2函数用法
写J2ME程序时,如果想使用反正切函数是必须自己写算法的.因为J2ME的Math类里没有的反正功函数.修改里面的n值可更改精度和性能.
sqlserver中常用函数----字符串函数---- ASCII() --函数返回字符表达式最左端字符的ASCII 码值 CHAR() --函数用于将ASCII 码转换为字符 --如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值 ...
本文主要介绍了C语言中的atan和atan2的用法,希望对你的学习有所帮助。
A a abs 绝对值, 模 acos 反余弦 acosh 反双曲余弦 acot ...asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红、黄浓淡色 axis 轴的刻度和表现
atan2() 返回给定的 X 及 Y 坐标值的反正切值。 语法 以下是 atan2() 方法的语法: import math math.atan2(y, x) 注意:atan2()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。 参数...
函数计算 y/x 的反正切并将结果放在 [0..360] 的范围内。 要查找类似的示例和资源,请访问www.smallsats.org
这将执行与 Matlab 内置函数 ATAN2 相同的功能,但当输入非常小时(接近机器零)时,可以安全地防止错误结果。 由于数值计算中的舍入误差,两个ATAN2、Y 和 X 的输入最好被认为是 x=x_exact +(或-)rand*eps; y=...