#ifndef HGL_MATH_CONST_INCLUDE #define HGL_MATH_CONST_INCLUDE #include namespace hgl { constexpr const float HGL_FLOAT_MIN =1.175494351e-38f; ///<最小浮点数 constexpr const float HGL_FLOAT_MAX =3.402823466e+38f; ///<最大浮点数 constexpr const float HGL_FLOAT_EPSILON =1.192092896e-07f; ///<浮点数精度 constexpr const float HGL_FLOAT_ZERO =0.000001f; ///<浮点数零值 constexpr const float HGL_FLOAT_KINDA_SMALL =1.e-4f; ///<浮点数很小值 constexpr const float HGL_FLOAT_SMALL =1.e-8f; ///<浮点数小值 template bool IsNearlyZero(const T value) { return(abs(value) inline constexpr T deg2rad(const T deg) { return T(deg*(HGL_PI/180.0f)); } /** * 弧度转角度 */ template inline constexpr T rad2deg(const T rad) { return T(rad*(180.0f/HGL_PI)); } /** * 浮点数截取小数点后指定位度 * @param value 要截取的浮点数 * @param num 要截取的位数 */ template inline T hgl_clip_float(const T value,const int num) { if(num<=0) return int64(value); if(value==0)return(0); double per=pow(10,num); return double(floor(value*per))/per; } /** * 正圆面积计算 * @param radius 半径 */ inline constexpr double CircleArea(const double radius) { return(radius*radius*HGL_PI); } /** * 椭圆面积计算 * @param l_radius 长半径 * @param s_radius 短半径 */ inline constexpr double ElipseArea(const double l_radius,const double s_radius) { return(l_radius*s_radius*HGL_PI); } /** * 球体积计算 * @param radius 球半径 */ inline constexpr double SphereVolume(const double radius) { return(radius*radius*radius*(HGL_PI*4.0f))/3.0f; } /** * 椭球体积计算 * @param x_radius x半径 * @param y_radius y半径 * @param z_radius z半径 */ inline constexpr double EllipsoidVolume(const double x_radius,const double y_radius,const double z_radius) { return(x_radius*y_radius*z_radius*(HGL_PI*4.0f))/3.0f; } }//namespace hgl #endif//HGL_MATH_CONST_INCLUDE