use FLOAT_ERROR instead of FLOAT_EPSILON

This commit is contained in:
2024-11-05 00:40:39 +08:00
parent 6d9bced95c
commit 2dfcdf0e41
3 changed files with 30 additions and 29 deletions

View File

@@ -263,37 +263,38 @@ namespace hgl
return from + (to - from) * alpha;
}
inline bool IsNearlyEqual(const float v1,const float v2,const float epsilon=HGL_FLOAT_EPSILON)
inline bool IsNearlyEqual(const Vector2f &v1,const Vector2f &v2,const float err=HGL_FLOAT_ERROR)
{
return glm::epsilonEqual(v1,v2,epsilon);
if(!IsNearlyEqual(v1.x,v2.x,err))return(false);
if(!IsNearlyEqual(v1.y,v2.y,err))return(false);
return(true);
}
inline bool IsNearlyEqual(const Vector2f &v1,const Vector2f &v2,const float epsilon=HGL_FLOAT_EPSILON)
inline bool IsNearlyEqual(const Vector2d &v1,const Vector2d &v2,const double err=HGL_DOUBLE_ERROR)
{
glm::bvec2 result=glm::epsilonEqual(v1,v2,epsilon);
if(!IsNearlyEqual(v1.x,v2.x,err))return(false);
if(!IsNearlyEqual(v1.y,v2.y,err))return(false);
return result.x && result.y;
return(true);
}
inline bool IsNearlyEqual(const Vector2d &v1,const Vector2d &v2,const double epsilon=HGL_DOUBLE_EPSILON)
inline bool IsNearlyEqual(const Vector3f &v1,const Vector3f &v2,const float err=HGL_FLOAT_ERROR)
{
glm::bvec2 result=glm::epsilonEqual(v1,v2,epsilon);
if(!IsNearlyEqual(v1.x,v2.x,err))return(false);
if(!IsNearlyEqual(v1.y,v2.y,err))return(false);
if(!IsNearlyEqual(v1.z,v2.z,err))return(false);
return result.x && result.y;
return(true);
}
inline bool IsNearlyEqual(const Vector3f &v1,const Vector3f &v2,const float epsilon=HGL_FLOAT_EPSILON)
inline bool IsNearlyEqual(const Vector3d &v1,const Vector3d &v2,const double err=HGL_DOUBLE_ERROR)
{
glm::bvec3 result=glm::epsilonEqual(v1,v2,epsilon);
if(!IsNearlyEqual(v1.x,v2.x,err))return(false);
if(!IsNearlyEqual(v1.y,v2.y,err))return(false);
if(!IsNearlyEqual(v1.z,v2.z,err))return(false);
return result.x && result.y && result.z;
}
inline bool IsNearlyEqual(const Vector3d &v1,const Vector3d &v2,const double epsilon=HGL_DOUBLE_EPSILON)
{
glm::bvec3 result=glm::epsilonEqual(v1,v2,epsilon);
return result.x && result.y && result.z;
return(true);
}
template<typename T,glm::qualifier Q>