2019-08-19 19:19:58 +08:00
|
|
|
|
#ifndef HGL_ALGORITHM_MATH_FAST_TRIANGLE_FUNCTION_INCLUDE
|
|
|
|
|
#define HGL_ALGORITHM_MATH_FAST_TRIANGLE_FUNCTION_INCLUDE
|
|
|
|
|
|
|
|
|
|
namespace hgl
|
|
|
|
|
{
|
|
|
|
|
double Lsin(int angle); ///<低精度sin计算,注意传入的参数为角度而非弧度
|
|
|
|
|
double Lcos(int angle); ///<低精度cos计算,注意传入的参数为角度而非弧度
|
|
|
|
|
void Lsincos(int angle, double &s, double &c); ///<低精度sin+cos计算,注意传入的参数为角度而非弧度
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 低精度atan函数
|
|
|
|
|
*/
|
|
|
|
|
double inline Latan(double z)
|
|
|
|
|
{
|
|
|
|
|
constexpr double n1 = 0.97239411f;
|
|
|
|
|
constexpr double n2 = -0.19194795f;
|
|
|
|
|
|
|
|
|
|
return (n1 + n2 * z * z) * z;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double Latan2(double y, double x); ///<低精度atan2函数
|
2020-01-20 16:57:33 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 近似Pow2.2,使用此函数等于pow(x,2.2)
|
|
|
|
|
*/
|
2020-01-20 17:05:13 +08:00
|
|
|
|
double inline LPow22(double x)
|
2020-01-20 16:57:33 +08:00
|
|
|
|
{
|
2020-01-20 17:05:13 +08:00
|
|
|
|
return x*(1.12*x - 0.12);
|
2020-01-20 16:57:33 +08:00
|
|
|
|
}
|
2019-08-19 19:19:58 +08:00
|
|
|
|
}//namespace hgl
|
|
|
|
|
#endif//HGL_ALGORITHM_MATH_FAST_TRIANGLE_FUNCTION_INCLUDE
|