norm.hpp
00001 
00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
00004 // Created : 2005-12-21
00005 // Updated : 2008-07-24
00006 // Licence : This source is under MIT License
00007 // File    : glm/gtx/norm.hpp
00009 // Dependency:
00010 // - GLM core
00011 // - GLM_GTX_quaternion
00013 // ToDo:
00014 // - Study the validity of the notion of length2 to quaternion
00016 
00017 #ifndef glm_gtx_norm
00018 #define glm_gtx_norm
00019 
00020 // Dependency:
00021 #include "../glm.hpp"
00022 #include "../gtx/quaternion.hpp"
00023 
00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00025 #       pragma message("GLM: GLM_GTX_norm extension included")
00026 #endif
00027 
00028 namespace glm{
00029 namespace gtx{
00030 namespace norm 
00031 {
00034 
00037         template <typename T> 
00038         T length2(
00039                 const T x);
00040 
00043         template <typename T> 
00044         T length2(
00045                 const detail::tvec2<T> & x);
00046 
00049         template <typename T>
00050         T length2(
00051                 const detail::tvec3<T>& x);
00052                 
00055         template <typename T> 
00056         T length2(
00057                 const detail::tvec4<T>& x);
00058                 
00061         template <typename T>
00062         T length2(
00063                 const detail::tquat<T>& q);
00064 
00067         template <typename T>
00068         T distance2(
00069                 const T p0, 
00070                 const T p1);
00071                 
00074         template <typename T> 
00075         T distance2(
00076                 const detail::tvec2<T>& p0, 
00077                 const detail::tvec2<T>& p1);
00078 
00081         template <typename T>
00082         T distance2(
00083                 const detail::tvec3<T>& p0,
00084                 const detail::tvec3<T>& p1);
00085 
00088         template <typename T>
00089         T distance2(
00090                 const detail::tvec4<T>& p0, 
00091                 const detail::tvec4<T>& p1);
00092 
00095         template <typename T>
00096         T l1Norm(
00097                 const detail::tvec3<T>& x,
00098                 const detail::tvec3<T>& y);
00099                 
00102         template <typename T> 
00103         T l1Norm(
00104                 const detail::tvec3<T>& v);
00105                 
00108         template <typename T> 
00109         T l2Norm(
00110                 const detail::tvec3<T>& x, 
00111                 const detail::tvec3<T>& y);
00112                 
00115         template <typename T> 
00116         T l2Norm(
00117                 const detail::tvec3<T>& x);
00118                 
00121         template <typename T> 
00122         T lxNorm(
00123                 const detail::tvec3<T>& x,
00124                 const detail::tvec3<T>& y,
00125                 unsigned int Depth);
00126 
00129         template <typename T>
00130         T lxNorm(
00131                 const detail::tvec3<T>& x,
00132                 unsigned int Depth);
00133 
00135 }//namespace norm
00136 }//namespace gtx
00137 }//namespace glm
00138 
00139 #include "norm.inl"
00140 
00141 namespace glm{using namespace gtx::norm;}
00142 
00143 #endif//glm_gtx_norm