/// @ref gtc_epsilon | |
/// @file glm/gtc/epsilon.inl | |
// Dependency: | |
#include "quaternion.hpp" | |
#include "../vector_relational.hpp" | |
#include "../common.hpp" | |
#include "../vec2.hpp" | |
#include "../vec3.hpp" | |
#include "../vec4.hpp" | |
namespace glm | |
{ | |
template <> | |
GLM_FUNC_QUALIFIER bool epsilonEqual | |
( | |
float const & x, | |
float const & y, | |
float const & epsilon | |
) | |
{ | |
return abs(x - y) < epsilon; | |
} | |
template <> | |
GLM_FUNC_QUALIFIER bool epsilonEqual | |
( | |
double const & x, | |
double const & y, | |
double const & epsilon | |
) | |
{ | |
return abs(x - y) < epsilon; | |
} | |
template <> | |
GLM_FUNC_QUALIFIER bool epsilonNotEqual | |
( | |
float const & x, | |
float const & y, | |
float const & epsilon | |
) | |
{ | |
return abs(x - y) >= epsilon; | |
} | |
template <> | |
GLM_FUNC_QUALIFIER bool epsilonNotEqual | |
( | |
double const & x, | |
double const & y, | |
double const & epsilon | |
) | |
{ | |
return abs(x - y) >= epsilon; | |
} | |
template <typename T, precision P, template <typename, precision> class vecType> | |
GLM_FUNC_QUALIFIER vecType<bool, P> epsilonEqual | |
( | |
vecType<T, P> const & x, | |
vecType<T, P> const & y, | |
T const & epsilon | |
) | |
{ | |
return lessThan(abs(x - y), vecType<T, P>(epsilon)); | |
} | |
template <typename T, precision P, template <typename, precision> class vecType> | |
GLM_FUNC_QUALIFIER vecType<bool, P> epsilonEqual | |
( | |
vecType<T, P> const & x, | |
vecType<T, P> const & y, | |
vecType<T, P> const & epsilon | |
) | |
{ | |
return lessThan(abs(x - y), vecType<T, P>(epsilon)); | |
} | |
template <typename T, precision P, template <typename, precision> class vecType> | |
GLM_FUNC_QUALIFIER vecType<bool, P> epsilonNotEqual | |
( | |
vecType<T, P> const & x, | |
vecType<T, P> const & y, | |
T const & epsilon | |
) | |
{ | |
return greaterThanEqual(abs(x - y), vecType<T, P>(epsilon)); | |
} | |
template <typename T, precision P, template <typename, precision> class vecType> | |
GLM_FUNC_QUALIFIER vecType<bool, P> epsilonNotEqual | |
( | |
vecType<T, P> const & x, | |
vecType<T, P> const & y, | |
vecType<T, P> const & epsilon | |
) | |
{ | |
return greaterThanEqual(abs(x - y), vecType<T, P>(epsilon)); | |
} | |
template <typename T, precision P> | |
GLM_FUNC_QUALIFIER tvec4<bool, P> epsilonEqual | |
( | |
tquat<T, P> const & x, | |
tquat<T, P> const & y, | |
T const & epsilon | |
) | |
{ | |
tvec4<T, P> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w); | |
return lessThan(abs(v), tvec4<T, P>(epsilon)); | |
} | |
template <typename T, precision P> | |
GLM_FUNC_QUALIFIER tvec4<bool, P> epsilonNotEqual | |
( | |
tquat<T, P> const & x, | |
tquat<T, P> const & y, | |
T const & epsilon | |
) | |
{ | |
tvec4<T, P> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w); | |
return greaterThanEqual(abs(v), tvec4<T, P>(epsilon)); | |
} | |
}//namespace glm |