1/////////////////////////////////////////////////////////////////////////////////// 2/// OpenGL Mathematics (glm.g-truc.net) 3/// 4/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 5/// Permission is hereby granted, free of charge, to any person obtaining a copy 6/// of this software and associated documentation files (the "Software"), to deal 7/// in the Software without restriction, including without limitation the rights 8/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9/// copies of the Software, and to permit persons to whom the Software is 10/// furnished to do so, subject to the following conditions: 11/// 12/// The above copyright notice and this permission notice shall be included in 13/// all copies or substantial portions of the Software. 14/// 15/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21/// THE SOFTWARE. 22/// 23/// @ref core 24/// @file glm/core/intrinsic_vector_relational.inl 25/// @date 2009-06-09 / 2011-06-15 26/// @author Christophe Riccio 27/////////////////////////////////////////////////////////////////////////////////// 28// 29//// lessThan 30//template <typename valType> 31//GLM_FUNC_QUALIFIER typename detail::tvec2<T, P>::bool_type lessThan 32//( 33// detail::tvec2<T, P> const & x, 34// detail::tvec2<T, P> const & y 35//) 36//{ 37// GLM_STATIC_ASSERT( 38// detail::type<valType>::is_float || 39// detail::type<valType>::is_int || 40// detail::type<valType>::is_uint); 41// 42// return typename detail::tvec2<bool>::bool_type(x.x < y.x, x.y < y.y); 43//} 44// 45//template <typename valType> 46//GLM_FUNC_QUALIFIER typename detail::tvec3<T, P>::bool_type lessThan 47//( 48// detail::tvec3<T, P> const & x, 49// detail::tvec3<T, P> const & y 50//) 51//{ 52// GLM_STATIC_ASSERT( 53// detail::type<valType>::is_float || 54// detail::type<valType>::is_int || 55// detail::type<valType>::is_uint); 56// 57// return typename detail::tvec3<bool>::bool_type(x.x < y.x, x.y < y.y, x.z < y.z); 58//} 59// 60//template <typename valType> 61//GLM_FUNC_QUALIFIER typename detail::tvec4<T, P>::bool_type lessThan 62//( 63// detail::tvec4<T, P> const & x, 64// detail::tvec4<T, P> const & y 65//) 66//{ 67// GLM_STATIC_ASSERT( 68// detail::type<valType>::is_float || 69// detail::type<valType>::is_int || 70// detail::type<valType>::is_uint); 71// 72// return typename detail::tvec4<bool>::bool_type(x.x < y.x, x.y < y.y, x.z < y.z, x.w < y.w); 73//} 74// 75//// lessThanEqual 76//template <typename valType> 77//GLM_FUNC_QUALIFIER typename detail::tvec2<T, P>::bool_type lessThanEqual 78//( 79// detail::tvec2<T, P> const & x, 80// detail::tvec2<T, P> const & y 81//) 82//{ 83// GLM_STATIC_ASSERT( 84// detail::type<valType>::is_float || 85// detail::type<valType>::is_int || 86// detail::type<valType>::is_uint); 87// 88// return typename detail::tvec2<bool>::bool_type(x.x <= y.x, x.y <= y.y); 89//} 90// 91//template <typename valType> 92//GLM_FUNC_QUALIFIER typename detail::tvec3<T, P>::bool_type lessThanEqual 93//( 94// detail::tvec3<T, P> const & x, 95// detail::tvec3<T, P> const & y 96//) 97//{ 98// GLM_STATIC_ASSERT( 99// detail::type<valType>::is_float || 100// detail::type<valType>::is_int || 101// detail::type<valType>::is_uint); 102// 103// return typename detail::tvec3<bool>::bool_type(x.x <= y.x, x.y <= y.y, x.z <= y.z); 104//} 105// 106//template <typename valType> 107//GLM_FUNC_QUALIFIER typename detail::tvec4<T, P>::bool_type lessThanEqual 108//( 109// detail::tvec4<T, P> const & x, 110// detail::tvec4<T, P> const & y 111//) 112//{ 113// GLM_STATIC_ASSERT( 114// detail::type<valType>::is_float || 115// detail::type<valType>::is_int || 116// detail::type<valType>::is_uint); 117// 118// return typename detail::tvec4<bool>::bool_type(x.x <= y.x, x.y <= y.y, x.z <= y.z, x.w <= y.w); 119//} 120// 121//// greaterThan 122//template <typename valType> 123//GLM_FUNC_QUALIFIER typename detail::tvec2<T, P>::bool_type greaterThan 124//( 125// detail::tvec2<T, P> const & x, 126// detail::tvec2<T, P> const & y 127//) 128//{ 129// GLM_STATIC_ASSERT( 130// detail::type<valType>::is_float || 131// detail::type<valType>::is_int || 132// detail::type<valType>::is_uint); 133// 134// return typename detail::tvec2<bool>::bool_type(x.x > y.x, x.y > y.y); 135//} 136// 137//template <typename valType> 138//GLM_FUNC_QUALIFIER typename detail::tvec3<T, P>::bool_type greaterThan 139//( 140// detail::tvec3<T, P> const & x, 141// detail::tvec3<T, P> const & y 142//) 143//{ 144// GLM_STATIC_ASSERT( 145// detail::type<valType>::is_float || 146// detail::type<valType>::is_int || 147// detail::type<valType>::is_uint); 148// 149// return typename detail::tvec3<bool>::bool_type(x.x > y.x, x.y > y.y, x.z > y.z); 150//} 151// 152//template <typename valType> 153//GLM_FUNC_QUALIFIER typename detail::tvec4<T, P>::bool_type greaterThan 154//( 155// detail::tvec4<T, P> const & x, 156// detail::tvec4<T, P> const & y 157//) 158//{ 159// GLM_STATIC_ASSERT( 160// detail::type<valType>::is_float || 161// detail::type<valType>::is_int || 162// detail::type<valType>::is_uint); 163// 164// return typename detail::tvec4<bool>::bool_type(x.x > y.x, x.y > y.y, x.z > y.z, x.w > y.w); 165//} 166// 167//// greaterThanEqual 168//template <typename valType> 169//GLM_FUNC_QUALIFIER typename detail::tvec2<T, P>::bool_type greaterThanEqual 170//( 171// detail::tvec2<T, P> const & x, 172// detail::tvec2<T, P> const & y 173//) 174//{ 175// GLM_STATIC_ASSERT( 176// detail::type<valType>::is_float || 177// detail::type<valType>::is_int || 178// detail::type<valType>::is_uint); 179// 180// return typename detail::tvec2<bool>::bool_type(x.x >= y.x, x.y >= y.y); 181//} 182// 183//template <typename valType> 184//GLM_FUNC_QUALIFIER typename detail::tvec3<T, P>::bool_type greaterThanEqual 185//( 186// detail::tvec3<T, P> const & x, 187// detail::tvec3<T, P> const & y 188//) 189//{ 190// GLM_STATIC_ASSERT( 191// detail::type<valType>::is_float || 192// detail::type<valType>::is_int || 193// detail::type<valType>::is_uint); 194// 195// return typename detail::tvec3<bool>::bool_type(x.x >= y.x, x.y >= y.y, x.z >= y.z); 196//} 197// 198//template <typename valType> 199//GLM_FUNC_QUALIFIER typename detail::tvec4<T, P>::bool_type greaterThanEqual 200//( 201// detail::tvec4<T, P> const & x, 202// detail::tvec4<T, P> const & y 203//) 204//{ 205// GLM_STATIC_ASSERT( 206// detail::type<valType>::is_float || 207// detail::type<valType>::is_int || 208// detail::type<valType>::is_uint); 209// 210// return typename detail::tvec4<bool>::bool_type(x.x >= y.x, x.y >= y.y, x.z >= y.z, x.w >= y.w); 211//} 212// 213//// equal 214//template <typename valType> 215//GLM_FUNC_QUALIFIER typename detail::tvec2<T, P>::bool_type equal 216//( 217// detail::tvec2<T, P> const & x, 218// detail::tvec2<T, P> const & y 219//) 220//{ 221// GLM_STATIC_ASSERT( 222// detail::type<valType>::is_float || 223// detail::type<valType>::is_int || 224// detail::type<valType>::is_uint || 225// detail::type<valType>::is_bool); 226// 227// return typename detail::tvec2<T, P>::bool_type(x.x == y.x, x.y == y.y); 228//} 229// 230//template <typename valType> 231//GLM_FUNC_QUALIFIER typename detail::tvec3<T, P>::bool_type equal 232//( 233// detail::tvec3<T, P> const & x, 234// detail::tvec3<T, P> const & y 235//) 236//{ 237// GLM_STATIC_ASSERT( 238// detail::type<valType>::is_float || 239// detail::type<valType>::is_int || 240// detail::type<valType>::is_uint || 241// detail::type<valType>::is_bool); 242// 243// return typename detail::tvec3<T, P>::bool_type(x.x == y.x, x.y == y.y, x.z == y.z); 244//} 245// 246//template <typename valType> 247//GLM_FUNC_QUALIFIER typename detail::tvec4<T, P>::bool_type equal 248//( 249// detail::tvec4<T, P> const & x, 250// detail::tvec4<T, P> const & y 251//) 252//{ 253// GLM_STATIC_ASSERT( 254// detail::type<valType>::is_float || 255// detail::type<valType>::is_int || 256// detail::type<valType>::is_uint || 257// detail::type<valType>::is_bool); 258// 259// return typename detail::tvec4<T, P>::bool_type(x.x == y.x, x.y == y.y, x.z == y.z, x.w == y.w); 260//} 261// 262//// notEqual 263//template <typename valType> 264//GLM_FUNC_QUALIFIER typename detail::tvec2<T, P>::bool_type notEqual 265//( 266// detail::tvec2<T, P> const & x, 267// detail::tvec2<T, P> const & y 268//) 269//{ 270// GLM_STATIC_ASSERT( 271// detail::type<valType>::is_float || 272// detail::type<valType>::is_int || 273// detail::type<valType>::is_uint || 274// detail::type<valType>::is_bool); 275// 276// return typename detail::tvec2<T, P>::bool_type(x.x != y.x, x.y != y.y); 277//} 278// 279//template <typename valType> 280//GLM_FUNC_QUALIFIER typename detail::tvec3<T, P>::bool_type notEqual 281//( 282// detail::tvec3<T, P> const & x, 283// detail::tvec3<T, P> const & y 284//) 285//{ 286// GLM_STATIC_ASSERT( 287// detail::type<valType>::is_float || 288// detail::type<valType>::is_int || 289// detail::type<valType>::is_uint || 290// detail::type<valType>::is_bool); 291// 292// return typename detail::tvec3<T, P>::bool_type(x.x != y.x, x.y != y.y, x.z != y.z); 293//} 294// 295//template <typename valType> 296//GLM_FUNC_QUALIFIER typename detail::tvec4<T, P>::bool_type notEqual 297//( 298// detail::tvec4<T, P> const & x, 299// detail::tvec4<T, P> const & y 300//) 301//{ 302// GLM_STATIC_ASSERT( 303// detail::type<valType>::is_float || 304// detail::type<valType>::is_int || 305// detail::type<valType>::is_uint || 306// detail::type<valType>::is_bool); 307// 308// return typename detail::tvec4<T, P>::bool_type(x.x != y.x, x.y != y.y, x.z != y.z, x.w != y.w); 309//} 310// 311//// any 312//GLM_FUNC_QUALIFIER bool any(detail::tvec2<bool> const & x) 313//{ 314// return x.x || x.y; 315//} 316// 317//GLM_FUNC_QUALIFIER bool any(detail::tvec3<bool> const & x) 318//{ 319// return x.x || x.y || x.z; 320//} 321// 322//GLM_FUNC_QUALIFIER bool any(detail::tvec4<bool> const & x) 323//{ 324// return x.x || x.y || x.z || x.w; 325//} 326// 327//// all 328//GLM_FUNC_QUALIFIER bool all(const detail::tvec2<bool>& x) 329//{ 330// return x.x && x.y; 331//} 332// 333//GLM_FUNC_QUALIFIER bool all(const detail::tvec3<bool>& x) 334//{ 335// return x.x && x.y && x.z; 336//} 337// 338//GLM_FUNC_QUALIFIER bool all(const detail::tvec4<bool>& x) 339//{ 340// return x.x && x.y && x.z && x.w; 341//} 342// 343//// not 344//GLM_FUNC_QUALIFIER detail::tvec2<bool>::bool_type not_ 345//( 346// detail::tvec2<bool> const & v 347//) 348//{ 349// return detail::tvec2<bool>::bool_type(!v.x, !v.y); 350//} 351// 352//GLM_FUNC_QUALIFIER detail::tvec3<bool>::bool_type not_ 353//( 354// detail::tvec3<bool> const & v 355//) 356//{ 357// return detail::tvec3<bool>::bool_type(!v.x, !v.y, !v.z); 358//} 359// 360//GLM_FUNC_QUALIFIER detail::tvec4<bool>::bool_type not_ 361//( 362// detail::tvec4<bool> const & v 363//) 364//{ 365// return detail::tvec4<bool>::bool_type(!v.x, !v.y, !v.z, !v.w); 366//}