GLM Version 0.9.0

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
00012 // - GLM_GTC_double_float
00014 // ToDo:
00015 // - Study the validity of the notion of length2 to quaternion
00017 
00018 #ifndef glm_gtx_norm
00019 #define glm_gtx_norm
00020 
00021 // Dependency:
00022 #include "../glm.hpp"
00023 #include "../gtc/double_float.hpp"
00024 #include "../gtx/quaternion.hpp"
00025 
00026 namespace glm
00027 {
00028         namespace test{
00029                 void main_gtx_norm();
00030         }//namespace test
00031 
00032         namespace gtx{
00034         namespace norm
00035         {
00038                 template <typename T> 
00039                 T length2(
00040                         const T x);
00041 
00044                 template <typename T> 
00045                 T length2(
00046                         const detail::tvec2<T> & x);
00047 
00050                 template <typename T>
00051                 T length2(
00052                         const detail::tvec3<T>& x);
00053                 
00056                 template <typename T> 
00057                 T length2(
00058                         const detail::tvec4<T>& x);
00059                 
00062                 template <typename T>
00063                 T length2(
00064                         const detail::tquat<T>& q);
00065 
00068                 template <typename T>
00069                 T distance2(
00070                         const T p0, 
00071                         const T p1);
00072                 
00075                 template <typename T> 
00076                 T distance2(
00077                         const detail::tvec2<T>& p0, 
00078                         const detail::tvec2<T>& p1);
00079 
00082                 template <typename T>
00083                 T distance2(
00084                         const detail::tvec3<T>& p0,
00085                         const detail::tvec3<T>& p1);
00086 
00089                 template <typename T>
00090                 T distance2(
00091                         const detail::tvec4<T>& p0, 
00092                         const detail::tvec4<T>& p1);
00093 
00096                 template <typename T>
00097                 T l1Norm(
00098                         const detail::tvec3<T>& x,
00099                         const detail::tvec3<T>& y);
00100                 
00103                 template <typename T> 
00104                 T l1Norm(
00105                         const detail::tvec3<T>& v);
00106                 
00109                 template <typename T> 
00110                 T l2Norm(
00111                         const detail::tvec3<T>& x, 
00112                         const detail::tvec3<T>& y);
00113                 
00116                 template <typename T> 
00117                 T l2Norm(
00118                         const detail::tvec3<T>& x);
00119                 
00122                 template <typename T> 
00123                 T lxNorm(
00124                         const detail::tvec3<T>& x,
00125                         const detail::tvec3<T>& y,
00126                         unsigned int Depth);
00127 
00130                 template <typename T>
00131                 T lxNorm(
00132                         const detail::tvec3<T>& x,
00133                         unsigned int Depth);
00134 
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