Home | History | Annotate | Download | only in detail
      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 //}