数学函数库
几乎所有语言都会提供数学函数库,数学函数库起码包含幂,对数、三角函数等最基本的运算,C对于基本数学函数还算全面,如下表:
使用数学函数库需要导入math.h,表中所有参数和返回值都是double,对于float, long double类型有对应的函数sqrtf()和sqrtl(),不同编译器提供的类型可能不同。这里要说的是为什么反正切有两个函数atan()和atan2(),当我们通过坐标求夹角时,可以使用反正切函数atan(y/x)求得,如图:
但是atan()的值域为(-π/2, π/2),只能返回一四象限的角,如图:
如果坐标在二三象限就需要根据x,y的正负来判断,当x为负y为正时在第二象限,当x,y都为负时在第三象限。另外当坐标在y轴上时,如果y为正角度为π/2,y为负角度为-π/2,但由于x=0,y/x会导致编译器报错,这些都需要自己编写代码处理,为此math库给出了atan2()函数,它会自动处理这些情况。很多高级语言都效仿C的数学函数库,函数名称几乎相同,也都有atan2()函数。