diff --git a/glm/gtx/norm.hpp b/glm/gtx/norm.hpp index cdf60e05..dfaebb7a 100644 --- a/glm/gtx/norm.hpp +++ b/glm/gtx/norm.hpp @@ -3,6 +3,7 @@ /// /// @see core (dependence) /// @see gtx_quaternion (dependence) +/// @see gtx_component_wise (dependence) /// /// @defgroup gtx_norm GLM_GTX_norm /// @ingroup gtx @@ -16,6 +17,7 @@ // Dependency: #include "../geometric.hpp" #include "../gtx/quaternion.hpp" +#include "../gtx/component_wise.hpp" #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) # ifndef GLM_ENABLE_EXPERIMENTAL @@ -70,6 +72,16 @@ namespace glm template GLM_FUNC_DECL T lxNorm(vec<3, T, Q> const& x, unsigned int Depth); + //! Returns the LMax norm between x and y. + //! From GLM_GTX_norm extension. + template + GLM_FUNC_DECL T lMaxNorm(vec<3, T, Q> const& x, vec<3, T, Q> const& y); + + //! Returns the LMax norm of v. + //! From GLM_GTX_norm extension. + template + GLM_FUNC_DECL T lMaxNorm(vec<3, T, Q> const& x); + /// @} }//namespace glm diff --git a/glm/gtx/norm.inl b/glm/gtx/norm.inl index c3f468c3..59b79ac2 100644 --- a/glm/gtx/norm.inl +++ b/glm/gtx/norm.inl @@ -80,4 +80,16 @@ namespace detail return pow(pow(v.x, T(Depth)) + pow(v.y, T(Depth)) + pow(v.z, T(Depth)), T(1) / T(Depth)); } + template + GLM_FUNC_QUALIFIER T lMaxNorm(vec<3, T, Q> const& a, vec<3, T, Q> const& b) + { + return compMax(abs(b - a)); + } + + template + GLM_FUNC_QUALIFIER T lMaxNorm(vec<3, T, Q> const& v) + { + return compMax(abs(v)); + } + }//namespace glm