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 //}