125 lines
2.7 KiB
C++
125 lines
2.7 KiB
C++
/// @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
|