`
xumingrencai
  • 浏览: 1180320 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

转载自: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

//这个函数的用处非常的大,我们下面会用一个很重要的实例来给大家演示一下它的用法.
分享到:
评论

相关推荐

    单片机C语言查表法实现arctan arcsin 反正切 反正弦计算(不使用库函数)

    采用优化的单片机查表法计算atan角度的方法,重点解决了几个问题: (1)且用asin曲线计算代替难以描述的atan曲线,快速开方函数 (2)全部采用整形运算,加快了运算速度,返回的角度范围是0~360.00,包含4个象限...

    C语言三角函数应用

    三角函数:(所有参数必须为... 用途:用来返回给定的 X 的反正切函数。 4.sin 函数声明:sin (double x); 用途:用来返回给定的 X 的正弦值。 5.cos 函数声明:cos (double x); 用途:用来返回给定的 X 的余弦值。

    C语言函数库函数详细介绍手册

    C语言常用函数库详细的使用说明 字符串函数 bcmp bcopy bzero memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn ...

    C/C++中的atan和atan2函数实例用法

    在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下。 前者接受的是一个正切值(直线的斜率)得到夹角,但是由于正切的...

    C语言函数速查手册

    C语言常见的函数速查 字符串函数 bcmp bcopy bzero memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup ...

    (不使用库函数)单片机C语言查表法实现arctan arcsin 反正切 反正弦计算

    采用优化的单片机查表法计算atan角度的方法,重点解决了几个问题: (1)且用asin曲线计算代替难以描述的atan曲线,快速开方函数 (2)全部采用整形运算,加快了运算速度,返回的角度范围是0~360.00,包含4个象限,...

    浮点反正切函数的FPGA实现

    设计了一种基于CORDIC算法计算浮点反正切函数的的硬件结构,并在Altera公司的FPGA芯片上进行了验证,最后在Nios II处理器系统中以用户自定义指令的形式实现,通过C语言程序验证了浮点反正切模块的正确性。

    c语言函数库.doc

    C语言中之数学函数 C语言提供了以下的数学函数,要使用这些函数时,在程序文件头必须加入: #include 编译时,必须加上参数「-lm」(表示连结至数学函式库),例如「gcc -lm test.c」。 函数之自变量与传回之值型别...

    c语言函数大全及详解 -供大家学习研究参考

    尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。 #include 函数原型说明 功能 ...

    C语言通用范例开发金典.part2.rar

    资源简介 第1章 数据结构. 1 1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 ...范例1-2 一维数组应用 3 ...∷相关函数:c函数 8 ...∷相关函数:InitArray...2.1.6 求反正切 ...

    C语言函数速查

    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语言函数及相关知识 函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 程序例: #include #include <stdlib.h> int main(void) { printf("Calling abort()\n"); abort(); return 0; /* This ...

    C语言通用范例开发金典.part1.rar

    第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 ...

    C语言教程-函数总结

    函数名称: atan 函数原型: double atan(double x); 函数功能: 计算tan^-1(x)的值. 函数返回: 计算结果 函数说明: 切记单位为弧度,如果想输入为度数,请转换.方法:弧度=度数*3.14159/180 所属文件: <math.h>

    C语言库函数速查 CHM

    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++参考大全(第四版) (2010 年度畅销榜

    第五部分显示了两个应用C++和面向对象编程的实际例子。 本书内容全面、翔实,是学习C++编程语言的广大学生的一部有用的工具书,也是对C++感兴趣的读者的必备参考书。 第一部分 C++基础:C子集 第1章 C语言概述 1.1...

    C 语言库函数使用手册

    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 库函数源码

    keil c51的库函数一部分是c语言写的,一部分是汇编写的,c语言写的全部逆向完成,绝大部分生成的汇编和原来的函数一个字节不差 下面是逆向的函数列表: memccpy isalnum isalpha iscntrl isdigit isgraph islower ...

    c/c++函数库说明(api)html版

    所有的 C / C++ 函数 Constructors (cppstring) Constructors (cppvector) Operators (cppbitset) Operators (cppdeque) Operators (cppstack) Operators (cppstring) Operators (cppvector) abort (stdother...

    程序员二进制计算器 v1.36

    “格式前缀”与C/C++的printf函数基本相同,但不支持%s或%S。 当省略格式前缀时,默认按%g方式输出。此时对较小的数按原样输出,较大的数按科学计数法输出。 2-整型的输出格式 当按二、八、十六进制输出时,是按...

Global site tag (gtag.js) - Google Analytics