/////////////////////////////////////////////////////////////////////////////////////////////////// // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) /////////////////////////////////////////////////////////////////////////////////////////////////// // Created : 2005-12-21 // Updated : 2006-01-16 // Licence : This source is under MIT License // File : glm/gtx/epsilon.inl /////////////////////////////////////////////////////////////////////////////////////////////////// namespace glm{ namespace gtx{ namespace epsilon{ template GLM_FUNC_QUALIFIER bool equalEpsilon ( genType const & x, genType const & y, genType const & epsilon ) { return abs(x - y) < epsilon; } template GLM_FUNC_QUALIFIER bool notEqualEpsilon ( genType const & x, genType const & y, genType const & epsilon ) { return abs(x - y) >= epsilon; } template GLM_FUNC_QUALIFIER detail::tvec2 equalEpsilon ( detail::tvec2 const & x, detail::tvec2 const & y, valType const & epsilon) { return detail::tvec2( abs(x.x - y.x) < epsilon, abs(x.y - y.y) < epsilon); } template GLM_FUNC_QUALIFIER detail::tvec3 equalEpsilon ( detail::tvec3 const & x, detail::tvec3 const & y, valType const & epsilon) { return detail::tvec3( abs(x.x - y.x) < epsilon, abs(x.y - y.y) < epsilon, abs(x.z - y.z) < epsilon); } template GLM_FUNC_QUALIFIER detail::tvec4 equalEpsilon ( detail::tvec4 const & x, detail::tvec4 const & y, valType const & epsilon ) { return detail::tvec4( abs(x.x - y.x) < epsilon, abs(x.y - y.y) < epsilon, abs(x.z - y.z) < epsilon, abs(x.w - y.w) < epsilon); } template GLM_FUNC_QUALIFIER detail::tvec2 notEqualEpsilon ( detail::tvec2 const & x, detail::tvec2 const & y, valType const & epsilon ) { return detail::tvec2( abs(x.x - y.x) >= epsilon, abs(x.y - y.y) >= epsilon); } template GLM_FUNC_QUALIFIER detail::tvec3 notEqualEpsilon ( detail::tvec3 const & x, detail::tvec3 const & y, valType const & epsilon ) { return detail::tvec3( abs(x.x - y.x) >= epsilon, abs(x.y - y.y) >= epsilon, abs(x.z - y.z) >= epsilon); } template GLM_FUNC_QUALIFIER detail::tvec4 notEqualEpsilon ( detail::tvec4 const & x, detail::tvec4 const & y, valType const & epsilon ) { return detail::tvec4( abs(x.x - y.x) >= epsilon, abs(x.y - y.y) >= epsilon, abs(x.z - y.z) >= epsilon, abs(x.w - y.w) >= epsilon); } template GLM_FUNC_QUALIFIER detail::tvec2 equalEpsilon ( detail::tvec2 const & x, detail::tvec2 const & y, detail::tvec2 const & epsilon ) { return detail::tvec2( abs(x.x - y.x) < epsilon.x, abs(x.y - y.y) < epsilon.y); } template GLM_FUNC_QUALIFIER detail::tvec3 equalEpsilon ( detail::tvec3 const & x, detail::tvec3 const & y, detail::tvec3 const & epsilon ) { return detail::tvec3( abs(x.x - y.x) < epsilon.x, abs(x.y - y.y) < epsilon.y, abs(x.z - y.z) < epsilon.z); } template GLM_FUNC_QUALIFIER detail::tvec4 equalEpsilon ( detail::tvec4 const & x, detail::tvec4 const & y, detail::tvec4 const & epsilon ) { return detail::tvec4( abs(x.x - y.x) < epsilon.x, abs(x.y - y.y) < epsilon.y, abs(x.z - y.z) < epsilon.z, abs(x.w - y.w) < epsilon.w); } template GLM_FUNC_QUALIFIER detail::tvec2 notEqualEpsilon ( detail::tvec2 const & x, detail::tvec2 const & y, detail::tvec2 const & epsilon ) { return detail::tvec2( abs(x.x - y.x) >= epsilon.x, abs(x.y - y.y) >= epsilon.y); } template GLM_FUNC_QUALIFIER detail::tvec3 notEqualEpsilon ( detail::tvec3 const & x, detail::tvec3 const & y, detail::tvec3 const & epsilon ) { return detail::tvec3( abs(x.x - y.x) >= epsilon.x, abs(x.y - y.y) >= epsilon.y, abs(x.z - y.z) >= epsilon.z); } template GLM_FUNC_QUALIFIER detail::tvec4 notEqualEpsilon ( detail::tvec4 const & x, detail::tvec4 const & y, detail::tvec4 const & epsilon ) { return detail::tvec4( abs(x.x - y.x) >= epsilon.x, abs(x.y - y.y) >= epsilon.y, abs(x.z - y.z) >= epsilon.z, abs(x.w - y.w) >= epsilon.w); } }//namespace epsilon }//namespace gtx }//namespace glm