| /////////////////////////////////////////////////////////////////////////////////////////////////// |
| // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) |
| /////////////////////////////////////////////////////////////////////////////////////////////////// |
| // Created : 2005-12-21 |
| // Updated : 2008-07-24 |
| // Licence : This source is under MIT License |
| // File : glm/gtx/norm.inl |
| /////////////////////////////////////////////////////////////////////////////////////////////////// |
| |
| namespace glm |
| { |
| template <typename T> |
| GLM_FUNC_QUALIFIER T length2 |
| ( |
| T const & x |
| ) |
| { |
| return x * x; |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T length2 |
| ( |
| detail::tvec2<T, P> const & x |
| ) |
| { |
| return dot(x, x); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T length2 |
| ( |
| detail::tvec3<T, P> const & x |
| ) |
| { |
| return dot(x, x); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T length2 |
| ( |
| detail::tvec4<T, P> const & x |
| ) |
| { |
| return dot(x, x); |
| } |
| |
| template <typename T> |
| GLM_FUNC_QUALIFIER T distance2 |
| ( |
| T const & p0, |
| T const & p1 |
| ) |
| { |
| return length2(p1 - p0); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T distance2 |
| ( |
| detail::tvec2<T, P> const & p0, |
| detail::tvec2<T, P> const & p1 |
| ) |
| { |
| return length2(p1 - p0); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T distance2 |
| ( |
| detail::tvec3<T, P> const & p0, |
| detail::tvec3<T, P> const & p1 |
| ) |
| { |
| return length2(p1 - p0); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T distance2 |
| ( |
| detail::tvec4<T, P> const & p0, |
| detail::tvec4<T, P> const & p1 |
| ) |
| { |
| return length2(p1 - p0); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T l1Norm |
| ( |
| detail::tvec3<T, P> const & a, |
| detail::tvec3<T, P> const & b |
| ) |
| { |
| return abs(b.x - a.x) + abs(b.y - a.y) + abs(b.z - a.z); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T l1Norm |
| ( |
| detail::tvec3<T, P> const & v |
| ) |
| { |
| return abs(v.x) + abs(v.y) + abs(v.z); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T l2Norm |
| ( |
| detail::tvec3<T, P> const & a, |
| detail::tvec3<T, P> const & b |
| ) |
| { |
| return length(b - a); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T l2Norm |
| ( |
| detail::tvec3<T, P> const & v |
| ) |
| { |
| return length(v); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T lxNorm |
| ( |
| detail::tvec3<T, P> const & x, |
| detail::tvec3<T, P> const & y, |
| unsigned int Depth |
| ) |
| { |
| return pow(pow(y.x - x.x, T(Depth)) + pow(y.y - x.y, T(Depth)) + pow(y.z - x.z, T(Depth)), T(1) / T(Depth)); |
| } |
| |
| template <typename T, precision P> |
| GLM_FUNC_QUALIFIER T lxNorm |
| ( |
| detail::tvec3<T, P> const & v, |
| unsigned int Depth |
| ) |
| { |
| return pow(pow(v.x, T(Depth)) + pow(v.y, T(Depth)) + pow(v.z, T(Depth)), T(1) / T(Depth)); |
| } |
| |
| }//namespace glm |