我们平时在进行数学计算是,往往会用到三角函数和反三角函数,最常用的反三角函数大概就是atan了,因为这个相当于给定两点之间直线的夹角了。
1, 正切函数图像
这时正切函数图像,高中的我们就应该知道,正切函数是周期函数,即同一个值,有很多角度值对应,那么我们用math.h 数学库里的函数atan2(y,x)的时候,返回的到底是什么呢?
2, 弧度制和角度制转换
反三角函数的返回值都是弧度制,要换成角度制,需要 *180/π 。 π为3.1415926......
3, 反正切函数atan2的返回值
解决疑惑最好的办法就是实践啦。因为工作中要计算两点的夹角,对于(y,x)为(+,+),(+,-),(-,+),(-,-)的时候,返回的角度到底是多少,不太确定,所以用以下程序验证.
#include "stdafx.h"
#include <iostream>
using namespace std;
//#define F_PATH "D:\\project\\testtest\\test_tan\\test_tan\\1.txt"
#define PI 3.1415926
int _tmain(int argc, _TCHAR* argv[])
{
double ang = 0.0 ;
double angle = 0.0 ;
angle = atan2(2.0,1.0); //63
ang = angle*180/PI ;
cout << ang <<endl ;
angle = atan2(-2.0,1.0) ; // -63 , 4象限
ang = angle*180/PI ;
cout << ang <<endl ;
angle = atan2(2.0,-1.0) ; // 116 ,2象限
ang = angle*180/PI ;
cout << ang <<endl ;
angle = atan2(-2.0,-1.0) ; // -116 3象限
ang = angle*180/PI ;
cout << ang <<endl ;
cin.get();
return 0;
}
程序运行结果为:
其实结果也很好理解,程序根据(x,y)的正负确定象限值,一二象限的为正,三四象限为负。返回角度范围为(-180,180)。