转载自:http://hi.baidu.com/proworkspace/blog/item/fde37587aa3b3a22c65cc3e0.html
我们可以使用正切操作将角度转变为斜率,那么怎样利用斜率来转换为角度呢?可以利用斜率的反正切函数将他转换为相应的角度.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
//这个函数的用处非常的大,我们下面会用一个很重要的实例来给大家演示一下它的用法.
分享到:
相关推荐
采用优化的单片机查表法计算atan角度的方法,重点解决了几个问题: (1)且用asin曲线计算代替难以描述的atan曲线,快速开方函数 (2)全部采用整形运算,加快了运算速度,返回的角度范围是0~360.00,包含4个象限...
三角函数:(所有参数必须为... 用途:用来返回给定的 X 的反正切函数。 4.sin 函数声明:sin (double x); 用途:用来返回给定的 X 的正弦值。 5.cos 函数声明:cos (double x); 用途:用来返回给定的 X 的余弦值。
C语言常用函数库详细的使用说明 字符串函数 bcmp bcopy bzero memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn ...
在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下。 前者接受的是一个正切值(直线的斜率)得到夹角,但是由于正切的...
C语言常见的函数速查 字符串函数 bcmp bcopy bzero memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup ...
采用优化的单片机查表法计算atan角度的方法,重点解决了几个问题: (1)且用asin曲线计算代替难以描述的atan曲线,快速开方函数 (2)全部采用整形运算,加快了运算速度,返回的角度范围是0~360.00,包含4个象限,...
设计了一种基于CORDIC算法计算浮点反正切函数的的硬件结构,并在Altera公司的FPGA芯片上进行了验证,最后在Nios II处理器系统中以用户自定义指令的形式实现,通过C语言程序验证了浮点反正切模块的正确性。
C语言中之数学函数 C语言提供了以下的数学函数,要使用这些函数时,在程序文件头必须加入: #include 编译时,必须加上参数「-lm」(表示连结至数学函式库),例如「gcc -lm test.c」。 函数之自变量与传回之值型别...
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。 #include 函数原型说明 功能 ...
资源简介 第1章 数据结构. 1 1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 ...范例1-2 一维数组应用 3 ...∷相关函数:c函数 8 ...∷相关函数:InitArray...2.1.6 求反正切 ...
atan2 ceil cos cosh exp fabs floor fmod frexp hypot ldexp log log10 modf pow pow10 sin sinh sqrt tan tanh 输入输出函数 getchar kbhit printf putchar 系统函数 ClearScreen...
C语言函数及相关知识 函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 程序例: #include #include <stdlib.h> int main(void) { printf("Calling abort()\n"); abort(); return 0; /* This ...
第1章 数据结构. 1 1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 ...1.1.2 一维数组应用 3 ...范例1-2 一维数组应用 3 ...∷相关函数:c函数 8 ...2.1.6 求反正切 402 ...
函数名称: atan 函数原型: double atan(double x); 函数功能: 计算tan^-1(x)的值. 函数返回: 计算结果 函数说明: 切记单位为弧度,如果想输入为度数,请转换.方法:弧度=度数*3.14159/180 所属文件: <math.h>
atan2 ceil cos cosh exp fabs floor fmod frexp hypot ldexp log log10 modf pow pow10 sin sinh sqrt tan tanh 输入输出函数 getchar kbhit printf putchar 系统函数 ClearScreen ...
第五部分显示了两个应用C++和面向对象编程的实际例子。 本书内容全面、翔实,是学习C++编程语言的广大学生的一部有用的工具书,也是对C++感兴趣的读者的必备参考书。 第一部分 C++基础:C子集 第1章 C语言概述 1.1...
atan2 ceil cos cosh exp fabs floor fmod frexp hypot ldexp log log10 modf pow pow10 sin sinh sqrt tan tanh 输入输出函数 getchar kbhit printf putchar 系统库函数 Clear...
keil c51的库函数一部分是c语言写的,一部分是汇编写的,c语言写的全部逆向完成,绝大部分生成的汇编和原来的函数一个字节不差 下面是逆向的函数列表: memccpy isalnum isalpha iscntrl isdigit isgraph islower ...
所有的 C / C++ 函数 Constructors (cppstring) Constructors (cppvector) Operators (cppbitset) Operators (cppdeque) Operators (cppstack) Operators (cppstring) Operators (cppvector) abort (stdother...
“格式前缀”与C/C++的printf函数基本相同,但不支持%s或%S。 当省略格式前缀时,默认按%g方式输出。此时对较小的数按原样输出,较大的数按科学计数法输出。 2-整型的输出格式 当按二、八、十六进制输出时,是按...