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 {
00030         namespace test{
00031                 void main_gtx_norm();
00032         }//namespace test
00033 
00034         namespace gtx{
00036         namespace norm
00037         {
00040 
00043                 template <typename T> 
00044                 T length2(
00045                         const T x);
00046 
00049                 template <typename T> 
00050                 T length2(
00051                         const detail::tvec2<T> & x);
00052 
00055                 template <typename T>
00056                 T length2(
00057                         const detail::tvec3<T>& x);
00058                 
00061                 template <typename T> 
00062                 T length2(
00063                         const detail::tvec4<T>& x);
00064                 
00067                 template <typename T>
00068                 T length2(
00069                         const detail::tquat<T>& q);
00070 
00073                 template <typename T>
00074                 T distance2(
00075                         const T p0, 
00076                         const T p1);
00077                 
00080                 template <typename T> 
00081                 T distance2(
00082                         const detail::tvec2<T>& p0, 
00083                         const detail::tvec2<T>& p1);
00084 
00087                 template <typename T>
00088                 T distance2(
00089                         const detail::tvec3<T>& p0,
00090                         const detail::tvec3<T>& p1);
00091 
00094                 template <typename T>
00095                 T distance2(
00096                         const detail::tvec4<T>& p0, 
00097                         const detail::tvec4<T>& p1);
00098 
00101                 template <typename T>
00102                 T l1Norm(
00103                         const detail::tvec3<T>& x,
00104                         const detail::tvec3<T>& y);
00105                 
00108                 template <typename T> 
00109                 T l1Norm(
00110                         const detail::tvec3<T>& v);
00111                 
00114                 template <typename T> 
00115                 T l2Norm(
00116                         const detail::tvec3<T>& x, 
00117                         const detail::tvec3<T>& y);
00118                 
00121                 template <typename T> 
00122                 T l2Norm(
00123                         const detail::tvec3<T>& x);
00124                 
00127                 template <typename T> 
00128                 T lxNorm(
00129                         const detail::tvec3<T>& x,
00130                         const detail::tvec3<T>& y,
00131                         unsigned int Depth);
00132 
00135                 template <typename T>
00136                 T lxNorm(
00137                         const detail::tvec3<T>& x,
00138                         unsigned int Depth);
00139 
00141 
00142         }//namespace norm
00143         }//namespace gtx
00144 }//namespace glm
00145 
00146 #include "norm.inl"
00147 
00148 namespace glm{using namespace gtx::norm;}
00149 
00150 #endif//glm_gtx_norm