126 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			2.5 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
 |