Collection of DPF-based plugins for packaging
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.2KB

  1. /// @ref gtc_epsilon
  2. /// @file glm/gtc/epsilon.inl
  3. // Dependency:
  4. #include "quaternion.hpp"
  5. #include "../vector_relational.hpp"
  6. #include "../common.hpp"
  7. #include "../detail/type_vec.hpp"
  8. namespace glm
  9. {
  10. template<>
  11. GLM_FUNC_QUALIFIER bool epsilonEqual
  12. (
  13. float const& x,
  14. float const& y,
  15. float const& epsilon
  16. )
  17. {
  18. return abs(x - y) < epsilon;
  19. }
  20. template<>
  21. GLM_FUNC_QUALIFIER bool epsilonEqual
  22. (
  23. double const& x,
  24. double const& y,
  25. double const& epsilon
  26. )
  27. {
  28. return abs(x - y) < epsilon;
  29. }
  30. template<length_t L, typename T, qualifier Q>
  31. GLM_FUNC_QUALIFIER vec<L, bool, Q> epsilonEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T const& epsilon)
  32. {
  33. return lessThan(abs(x - y), vec<L, T, Q>(epsilon));
  34. }
  35. template<length_t L, typename T, qualifier Q>
  36. GLM_FUNC_QUALIFIER vec<L, bool, Q> epsilonEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon)
  37. {
  38. return lessThan(abs(x - y), vec<L, T, Q>(epsilon));
  39. }
  40. template<>
  41. GLM_FUNC_QUALIFIER bool epsilonNotEqual(float const& x, float const& y, float const& epsilon)
  42. {
  43. return abs(x - y) >= epsilon;
  44. }
  45. template<>
  46. GLM_FUNC_QUALIFIER bool epsilonNotEqual(double const& x, double const& y, double const& epsilon)
  47. {
  48. return abs(x - y) >= epsilon;
  49. }
  50. template<length_t L, typename T, qualifier Q>
  51. GLM_FUNC_QUALIFIER vec<L, bool, Q> epsilonNotEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T const& epsilon)
  52. {
  53. return greaterThanEqual(abs(x - y), vec<L, T, Q>(epsilon));
  54. }
  55. template<length_t L, typename T, qualifier Q>
  56. GLM_FUNC_QUALIFIER vec<L, bool, Q> epsilonNotEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon)
  57. {
  58. return greaterThanEqual(abs(x - y), vec<L, T, Q>(epsilon));
  59. }
  60. template<typename T, qualifier Q>
  61. GLM_FUNC_QUALIFIER vec<4, bool, Q> epsilonEqual(tquat<T, Q> const& x, tquat<T, Q> const& y, T const& epsilon)
  62. {
  63. vec<4, T, Q> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w);
  64. return lessThan(abs(v), vec<4, T, Q>(epsilon));
  65. }
  66. template<typename T, qualifier Q>
  67. GLM_FUNC_QUALIFIER vec<4, bool, Q> epsilonNotEqual(tquat<T, Q> const& x, tquat<T, Q> const& y, T const& epsilon)
  68. {
  69. vec<4, T, Q> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w);
  70. return greaterThanEqual(abs(v), vec<4, T, Q>(epsilon));
  71. }
  72. }//namespace glm