![]() |
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