Rev Author Line No. Line
23 ovan 1 ///////////////////////////////////////////////////////////////////////////////////
2 /// OpenGL Mathematics (glm.g-truc.net)
3 ///
4 /// Copyright (c) 2005 - 2015 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/detail/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 tvec2<T, P>::bool_type lessThan
32 //(
33 // tvec2<T, P> const & x,
34 // 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 tvec2<bool>::bool_type(x.x < y.x, x.y < y.y);
43 //}
44 //
45 //template <typename valType>
46 //GLM_FUNC_QUALIFIER typename tvec3<T, P>::bool_type lessThan
47 //(
48 // tvec3<T, P> const & x,
49 // 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 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 tvec4<T, P>::bool_type lessThan
62 //(
63 // tvec4<T, P> const & x,
64 // 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 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 tvec2<T, P>::bool_type lessThanEqual
78 //(
79 // tvec2<T, P> const & x,
80 // 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 tvec2<bool>::bool_type(x.x <= y.x, x.y <= y.y);
89 //}
90 //
91 //template <typename valType>
92 //GLM_FUNC_QUALIFIER typename tvec3<T, P>::bool_type lessThanEqual
93 //(
94 // tvec3<T, P> const & x,
95 // 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 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 tvec4<T, P>::bool_type lessThanEqual
108 //(
109 // tvec4<T, P> const & x,
110 // 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 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 tvec2<T, P>::bool_type greaterThan
124 //(
125 // tvec2<T, P> const & x,
126 // 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 tvec2<bool>::bool_type(x.x > y.x, x.y > y.y);
135 //}
136 //
137 //template <typename valType>
138 //GLM_FUNC_QUALIFIER typename tvec3<T, P>::bool_type greaterThan
139 //(
140 // tvec3<T, P> const & x,
141 // 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 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 tvec4<T, P>::bool_type greaterThan
154 //(
155 // tvec4<T, P> const & x,
156 // 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 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 tvec2<T, P>::bool_type greaterThanEqual
170 //(
171 // tvec2<T, P> const & x,
172 // 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 tvec2<bool>::bool_type(x.x >= y.x, x.y >= y.y);
181 //}
182 //
183 //template <typename valType>
184 //GLM_FUNC_QUALIFIER typename tvec3<T, P>::bool_type greaterThanEqual
185 //(
186 // tvec3<T, P> const & x,
187 // 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 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 tvec4<T, P>::bool_type greaterThanEqual
200 //(
201 // tvec4<T, P> const & x,
202 // 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 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 tvec2<T, P>::bool_type equal
216 //(
217 // tvec2<T, P> const & x,
218 // 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 tvec2<T, P>::bool_type(x.x == y.x, x.y == y.y);
228 //}
229 //
230 //template <typename valType>
231 //GLM_FUNC_QUALIFIER typename tvec3<T, P>::bool_type equal
232 //(
233 // tvec3<T, P> const & x,
234 // 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 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 tvec4<T, P>::bool_type equal
248 //(
249 // tvec4<T, P> const & x,
250 // 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 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 tvec2<T, P>::bool_type notEqual
265 //(
266 // tvec2<T, P> const & x,
267 // 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 tvec2<T, P>::bool_type(x.x != y.x, x.y != y.y);
277 //}
278 //
279 //template <typename valType>
280 //GLM_FUNC_QUALIFIER typename tvec3<T, P>::bool_type notEqual
281 //(
282 // tvec3<T, P> const & x,
283 // 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 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 tvec4<T, P>::bool_type notEqual
297 //(
298 // tvec4<T, P> const & x,
299 // 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 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(tvec2<bool> const & x)
313 //{
314 // return x.x || x.y;
315 //}
316 //
317 //GLM_FUNC_QUALIFIER bool any(tvec3<bool> const & x)
318 //{
319 // return x.x || x.y || x.z;
320 //}
321 //
322 //GLM_FUNC_QUALIFIER bool any(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 tvec2<bool>& x)
329 //{
330 // return x.x && x.y;
331 //}
332 //
333 //GLM_FUNC_QUALIFIER bool all(const tvec3<bool>& x)
334 //{
335 // return x.x && x.y && x.z;
336 //}
337 //
338 //GLM_FUNC_QUALIFIER bool all(const tvec4<bool>& x)
339 //{
340 // return x.x && x.y && x.z && x.w;
341 //}
342 //
343 //// not
344 //GLM_FUNC_QUALIFIER tvec2<bool>::bool_type not_
345 //(
346 // tvec2<bool> const & v
347 //)
348 //{
349 // return tvec2<bool>::bool_type(!v.x, !v.y);
350 //}
351 //
352 //GLM_FUNC_QUALIFIER tvec3<bool>::bool_type not_
353 //(
354 // tvec3<bool> const & v
355 //)
356 //{
357 // return tvec3<bool>::bool_type(!v.x, !v.y, !v.z);
358 //}
359 //
360 //GLM_FUNC_QUALIFIER tvec4<bool>::bool_type not_
361 //(
362 // tvec4<bool> const & v
363 //)
364 //{
365 // return tvec4<bool>::bool_type(!v.x, !v.y, !v.z, !v.w);
366 //}