00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00023
00024 #ifndef BTK_MATH_COMMON_FUNCTIONS_HPP
00025 #define BTK_MATH_COMMON_FUNCTIONS_HPP
00026
00027 #include <cmath>
00028
00029 #include <btk/core/math/constants.hpp>
00030
00031 namespace BTK {
00032 namespace MATH {
00033
00035 template <typename T>
00036 inline T square(T val) { return val * val; }
00037
00039 template <typename T>
00040 inline T cube(T val) { return val * val * val; }
00041
00042 template <typename T>
00043 inline bool equivalent(T x, T y, T precision)
00044 {
00045 return std::fabs(x - y) <= precision * std::fabs(x);
00046 }
00047
00048 template <typename T>
00049 bool equivalent(T x, T y);
00050
00051 template <>
00052 inline bool equivalent(float x, float y)
00053 {
00054 return equivalent(x,y,FLOAT_EPSILON);
00055 }
00056
00057 template <>
00058 inline bool equivalent(double x, double y)
00059 {
00060 return equivalent(x,y,DOUBLE_EPSILON);
00061 }
00062
00063 inline double deg2rad(double angle_in_degrees)
00064 {
00065 return RADIANS_PER_DEGREE*angle_in_degrees;
00066 }
00067
00068 inline double rad2deg(double angle_in_radians)
00069 {
00070 return DEGREES_PER_RADIAN*angle_in_radians;
00071 }
00072
00073 }
00074 }
00075
00076 #endif // BTK_MATH_COMMON_FUNCTIONS_HPP