34 # if GLM_HAS_ANONYMOUS_UNION
44 template <
typename T, precision P = defaultp>
50 typedef tvec2<T, P> type;
51 typedef tvec2<bool, P> bool_type;
53 typedef int size_type;
58 # ifdef GLM_FORCE_SIZE_FUNC
59 GLM_FUNC_DECL GLM_CONSTEXPR
size_t size()
const;
62 GLM_FUNC_DECL GLM_CONSTEXPR length_t
length()
const;
64 # endif//GLM_FORCE_SIZE_FUNC
69 # if GLM_HAS_ANONYMOUS_UNION
77 _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, x, y)
78 _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, r, g)
79 _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, s, t)
80 _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, x, y)
81 _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, r, g)
82 _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, s, t)
83 _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, x, y)
84 _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, r, g)
85 _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, s, t)
93 GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P, tvec2, tvec2, tvec3, tvec4)
100 GLM_FUNC_DECL T & operator[](length_t i);
101 GLM_FUNC_DECL T
const & operator[](length_t i)
const;
106 GLM_FUNC_DECL tvec2();
107 template <precision Q>
108 GLM_FUNC_DECL tvec2(tvec2<T, Q>
const & v);
113 GLM_FUNC_DECL
explicit tvec2(ctor);
114 GLM_FUNC_DECL
explicit tvec2(T
const & s);
115 GLM_FUNC_DECL tvec2(T
const & s1, T
const & s2);
121 template <
typename A,
typename B>
122 GLM_FUNC_DECL tvec2(A
const & x, B
const & y);
123 template <
typename A,
typename B>
124 GLM_FUNC_DECL tvec2(tvec1<A, P>
const & v1, tvec1<B, P>
const & v2);
130 template <
typename U, precision Q>
131 GLM_FUNC_DECL
explicit tvec2(tvec3<U, Q>
const & v);
133 template <
typename U, precision Q>
134 GLM_FUNC_DECL
explicit tvec2(tvec4<U, Q>
const & v);
136 # ifdef GLM_FORCE_EXPLICIT_CTOR
137 template <
typename U, precision Q>
139 GLM_FUNC_DECL
explicit tvec2(tvec2<U, Q>
const & v);
141 template <
typename U, precision Q>
143 GLM_FUNC_DECL tvec2(tvec2<U, Q>
const & v);
149 # if GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
150 template <
int E0,
int E1>
151 GLM_FUNC_DECL tvec2(detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1,-1,-2>
const & that)
155 # endif// GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
160 template <
typename U>
161 GLM_FUNC_DECL tvec2<T, P> & operator=(tvec2<U, P>
const & v);
162 template <
typename U>
163 GLM_FUNC_DECL tvec2<T, P> & operator+=(U s);
164 template <
typename U>
165 GLM_FUNC_DECL tvec2<T, P> & operator+=(tvec1<U, P>
const & v);
166 template <
typename U>
167 GLM_FUNC_DECL tvec2<T, P> & operator+=(tvec2<U, P>
const & v);
168 template <
typename U>
169 GLM_FUNC_DECL tvec2<T, P> & operator-=(U s);
170 template <
typename U>
171 GLM_FUNC_DECL tvec2<T, P> & operator-=(tvec1<U, P>
const & v);
172 template <
typename U>
173 GLM_FUNC_DECL tvec2<T, P> & operator-=(tvec2<U, P>
const & v);
174 template <
typename U>
175 GLM_FUNC_DECL tvec2<T, P> & operator*=(U s);
176 template <
typename U>
177 GLM_FUNC_DECL tvec2<T, P> & operator*=(tvec1<U, P>
const & v);
178 template <
typename U>
179 GLM_FUNC_DECL tvec2<T, P> & operator*=(tvec2<U, P>
const & v);
180 template <
typename U>
181 GLM_FUNC_DECL tvec2<T, P> & operator/=(U s);
182 template <
typename U>
183 GLM_FUNC_DECL tvec2<T, P> & operator/=(tvec1<U, P>
const & v);
184 template <
typename U>
185 GLM_FUNC_DECL tvec2<T, P> & operator/=(tvec2<U, P>
const & v);
190 GLM_FUNC_DECL tvec2<T, P> & operator++();
191 GLM_FUNC_DECL tvec2<T, P> & operator--();
192 GLM_FUNC_DECL tvec2<T, P> operator++(
int);
193 GLM_FUNC_DECL tvec2<T, P> operator--(
int);
198 template <
typename U>
199 GLM_FUNC_DECL tvec2<T, P> & operator%= (U s);
200 template <
typename U>
201 GLM_FUNC_DECL tvec2<T, P> & operator%= (tvec1<U, P>
const & v);
202 template <
typename U>
203 GLM_FUNC_DECL tvec2<T, P> & operator%= (tvec2<U, P>
const & v);
204 template <
typename U>
205 GLM_FUNC_DECL tvec2<T, P> & operator&= (U s);
206 template <
typename U>
207 GLM_FUNC_DECL tvec2<T, P> & operator&= (tvec1<U, P>
const & v);
208 template <
typename U>
209 GLM_FUNC_DECL tvec2<T, P> & operator&= (tvec2<U, P>
const & v);
210 template <
typename U>
211 GLM_FUNC_DECL tvec2<T, P> & operator|= (U s);
212 template <
typename U>
213 GLM_FUNC_DECL tvec2<T, P> & operator|= (tvec1<U, P>
const & v);
214 template <
typename U>
215 GLM_FUNC_DECL tvec2<T, P> & operator|= (tvec2<U, P>
const & v);
216 template <
typename U>
217 GLM_FUNC_DECL tvec2<T, P> & operator^= (U s);
218 template <
typename U>
219 GLM_FUNC_DECL tvec2<T, P> & operator^= (tvec1<U, P>
const & v);
220 template <
typename U>
221 GLM_FUNC_DECL tvec2<T, P> & operator^= (tvec2<U, P>
const & v);
222 template <
typename U>
223 GLM_FUNC_DECL tvec2<T, P> & operator<<=(U s);
224 template <
typename U>
225 GLM_FUNC_DECL tvec2<T, P> & operator<<=(tvec1<U, P>
const & v);
226 template <
typename U>
227 GLM_FUNC_DECL tvec2<T, P> & operator<<=(tvec2<U, P>
const & v);
228 template <
typename U>
229 GLM_FUNC_DECL tvec2<T, P> & operator>>=(U s);
230 template <
typename U>
231 GLM_FUNC_DECL tvec2<T, P> & operator>>=(tvec1<U, P>
const & v);
232 template <
typename U>
233 GLM_FUNC_DECL tvec2<T, P> & operator>>=(tvec2<U, P>
const & v);
236 template <
typename T, precision P>
237 GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P>
const & v, T
const & s);
239 template <
typename T, precision P>
240 GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
242 template <
typename T, precision P>
243 GLM_FUNC_DECL tvec2<T, P> operator+(T
const & s, tvec2<T, P>
const & v);
245 template <
typename T, precision P>
246 GLM_FUNC_DECL tvec2<T, P> operator+(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
248 template <
typename T, precision P>
249 GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
251 template <
typename T, precision P>
252 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v, T
const & s);
254 template <
typename T, precision P>
255 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
257 template <
typename T, precision P>
258 GLM_FUNC_DECL tvec2<T, P> operator-(T
const & s, tvec2<T, P>
const & v);
260 template <
typename T, precision P>
261 GLM_FUNC_DECL tvec2<T, P> operator-(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
263 template <
typename T, precision P>
264 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
266 template <
typename T, precision P>
267 GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P>
const & v, T
const & s);
269 template <
typename T, precision P>
270 GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
272 template <
typename T, precision P>
273 GLM_FUNC_DECL tvec2<T, P> operator*(T
const & s, tvec2<T, P>
const & v);
275 template <
typename T, precision P>
276 GLM_FUNC_DECL tvec2<T, P> operator*(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
278 template <
typename T, precision P>
279 GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
281 template <
typename T, precision P>
282 GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P>
const & v, T
const & s);
284 template <
typename T, precision P>
285 GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
287 template <
typename T, precision P>
288 GLM_FUNC_DECL tvec2<T, P> operator/(T
const & s, tvec2<T, P>
const & v);
290 template <
typename T, precision P>
291 GLM_FUNC_DECL tvec2<T, P> operator/(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
293 template <
typename T, precision P>
294 GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
296 template <
typename T, precision P>
297 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v);
299 template <
typename T, precision P>
300 GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P>
const & v, T
const & s);
302 template <
typename T, precision P>
303 GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
305 template <
typename T, precision P>
306 GLM_FUNC_DECL tvec2<T, P> operator%(T
const & s, tvec2<T, P>
const & v);
308 template <
typename T, precision P>
309 GLM_FUNC_DECL tvec2<T, P> operator%(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
311 template <
typename T, precision P>
312 GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
314 template <
typename T, precision P>
315 GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P>
const & v, T
const & s);
317 template <
typename T, precision P>
318 GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
320 template <
typename T, precision P>
321 GLM_FUNC_DECL tvec2<T, P> operator&(T
const & s, tvec2<T, P>
const & v);
323 template <
typename T, precision P>
324 GLM_FUNC_DECL tvec2<T, P> operator&(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
326 template <
typename T, precision P>
327 GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
329 template <
typename T, precision P>
330 GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P>
const & v, T
const & s);
332 template <
typename T, precision P>
333 GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
335 template <
typename T, precision P>
336 GLM_FUNC_DECL tvec2<T, P> operator|(T
const & s, tvec2<T, P>
const & v);
338 template <
typename T, precision P>
339 GLM_FUNC_DECL tvec2<T, P> operator|(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
341 template <
typename T, precision P>
342 GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
344 template <
typename T, precision P>
345 GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P>
const & v, T
const & s);
347 template <
typename T, precision P>
348 GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
350 template <
typename T, precision P>
351 GLM_FUNC_DECL tvec2<T, P> operator^(T
const & s, tvec2<T, P>
const & v);
353 template <
typename T, precision P>
354 GLM_FUNC_DECL tvec2<T, P> operator^(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
356 template <
typename T, precision P>
357 GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
359 template <
typename T, precision P>
360 GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P>
const & v, T
const & s);
362 template <
typename T, precision P>
363 GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
365 template <
typename T, precision P>
366 GLM_FUNC_DECL tvec2<T, P> operator<<(T const & s, tvec2<T, P>
const & v);
368 template <
typename T, precision P>
369 GLM_FUNC_DECL tvec2<T, P> operator<<(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
371 template <
typename T, precision P>
372 GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
374 template <
typename T, precision P>
375 GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P>
const & v, T
const & s);
377 template <
typename T, precision P>
378 GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
380 template <
typename T, precision P>
381 GLM_FUNC_DECL tvec2<T, P> operator>>(T
const & s, tvec2<T, P>
const & v);
383 template <
typename T, precision P>
384 GLM_FUNC_DECL tvec2<T, P> operator>>(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
386 template <
typename T, precision P>
387 GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
389 template <
typename T, precision P>
390 GLM_FUNC_DECL tvec2<T, P> operator~(tvec2<T, P>
const & v);
393 #ifndef GLM_EXTERNAL_TEMPLATE
394 #include "type_vec2.inl"
395 #endif//GLM_EXTERNAL_TEMPLATE
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
OpenGL Mathematics (glm.g-truc.net)
OpenGL Mathematics (glm.g-truc.net)
OpenGL Mathematics (glm.g-truc.net)