• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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//}