37 # if GLM_HAS_ANONYMOUS_UNION
47 template <
typename T, precision P = defaultp>
52 typedef tvec2<T, P> type;
53 typedef tvec2<bool, P> bool_type;
56 # ifdef GLM_META_PROG_HELPERS
57 static GLM_RELAXED_CONSTEXPR length_t components = 2;
58 static GLM_RELAXED_CONSTEXPR precision prec = P;
59 # endif//GLM_META_PROG_HELPERS
63 # if GLM_HAS_ANONYMOUS_UNION
71 _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, x, y)
72 _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, r, g)
73 _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, s, t)
74 _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, x, y)
75 _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, r, g)
76 _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, s, t)
77 _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, x, y)
78 _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, r, g)
79 _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, s, t)
87 GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P, tvec2, tvec2, tvec3, tvec4)
93 # ifdef GLM_FORCE_SIZE_FUNC
94 typedef size_t size_type;
96 GLM_FUNC_DECL GLM_CONSTEXPR size_type size()
const;
98 GLM_FUNC_DECL T & operator[](size_type i);
99 GLM_FUNC_DECL T
const & operator[](size_type i)
const;
101 typedef length_t length_type;
103 GLM_FUNC_DECL GLM_CONSTEXPR length_type
length()
const;
105 GLM_FUNC_DECL T & operator[](length_type i);
106 GLM_FUNC_DECL T
const & operator[](length_type i)
const;
107 # endif//GLM_FORCE_SIZE_FUNC
111 GLM_FUNC_DECL tvec2() GLM_DEFAULT_CTOR;
112 GLM_FUNC_DECL tvec2(tvec2<T, P> const & v) GLM_DEFAULT;
113 template <precision Q>
114 GLM_FUNC_DECL tvec2(tvec2<T, Q> const & v);
118 GLM_FUNC_DECL explicit tvec2(ctor);
119 GLM_FUNC_DECL explicit tvec2(T const & s);
120 GLM_FUNC_DECL tvec2(T const & s1, T const & s2);
125 template <typename A, typename B>
126 GLM_FUNC_DECL tvec2(A const & x, B const & y);
127 template <typename A, typename B>
128 GLM_FUNC_DECL tvec2(tvec1<A, P> const & v1, tvec1<B, P> const & v2);
133 template <typename U, precision Q>
134 GLM_FUNC_DECL explicit tvec2(tvec3<U, Q> const & v);
136 template <typename U, precision Q>
137 GLM_FUNC_DECL explicit tvec2(tvec4<U, Q> const & v);
140 template <typename U, precision Q>
141 GLM_FUNC_DECL GLM_EXPLICIT tvec2(tvec2<U, Q> const & v);
145 # if GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
146 template <
int E0,
int E1>
147 GLM_FUNC_DECL tvec2(detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1,-1,-2>
const & that)
151 # endif// GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
155 GLM_FUNC_DECL tvec2<T, P>& operator=(tvec2<T, P>
const & v) GLM_DEFAULT;
157 template <
typename U>
158 GLM_FUNC_DECL tvec2<T, P>& operator=(tvec2<U, P>
const & v);
159 template <
typename U>
160 GLM_FUNC_DECL tvec2<T, P>& operator+=(U s);
161 template <
typename U>
162 GLM_FUNC_DECL tvec2<T, P>& operator+=(tvec1<U, P>
const & v);
163 template <
typename U>
164 GLM_FUNC_DECL tvec2<T, P>& operator+=(tvec2<U, P>
const & v);
165 template <
typename U>
166 GLM_FUNC_DECL tvec2<T, P>& operator-=(U s);
167 template <
typename U>
168 GLM_FUNC_DECL tvec2<T, P>& operator-=(tvec1<U, P>
const & v);
169 template <
typename U>
170 GLM_FUNC_DECL tvec2<T, P>& operator-=(tvec2<U, P>
const & v);
171 template <
typename U>
172 GLM_FUNC_DECL tvec2<T, P>& operator*=(U s);
173 template <
typename U>
174 GLM_FUNC_DECL tvec2<T, P>& operator*=(tvec1<U, P>
const & v);
175 template <
typename U>
176 GLM_FUNC_DECL tvec2<T, P>& operator*=(tvec2<U, P>
const & v);
177 template <
typename U>
178 GLM_FUNC_DECL tvec2<T, P>& operator/=(U s);
179 template <
typename U>
180 GLM_FUNC_DECL tvec2<T, P>& operator/=(tvec1<U, P>
const & v);
181 template <
typename U>
182 GLM_FUNC_DECL tvec2<T, P>& operator/=(tvec2<U, P>
const & v);
186 GLM_FUNC_DECL tvec2<T, P> & operator++();
187 GLM_FUNC_DECL tvec2<T, P> & operator--();
188 GLM_FUNC_DECL tvec2<T, P> operator++(
int);
189 GLM_FUNC_DECL tvec2<T, P> operator--(
int);
193 template <
typename U>
194 GLM_FUNC_DECL tvec2<T, P> & operator%=(U s);
195 template <
typename U>
196 GLM_FUNC_DECL tvec2<T, P> & operator%=(tvec1<U, P>
const & v);
197 template <
typename U>
198 GLM_FUNC_DECL tvec2<T, P> & operator%=(tvec2<U, P>
const & v);
199 template <
typename U>
200 GLM_FUNC_DECL tvec2<T, P> & operator&=(U s);
201 template <
typename U>
202 GLM_FUNC_DECL tvec2<T, P> & operator&=(tvec1<U, P>
const & v);
203 template <
typename U>
204 GLM_FUNC_DECL tvec2<T, P> & operator&=(tvec2<U, P>
const & v);
205 template <
typename U>
206 GLM_FUNC_DECL tvec2<T, P> & operator|=(U s);
207 template <
typename U>
208 GLM_FUNC_DECL tvec2<T, P> & operator|=(tvec1<U, P>
const & v);
209 template <
typename U>
210 GLM_FUNC_DECL tvec2<T, P> & operator|=(tvec2<U, P>
const & v);
211 template <
typename U>
212 GLM_FUNC_DECL tvec2<T, P> & operator^=(U s);
213 template <
typename U>
214 GLM_FUNC_DECL tvec2<T, P> & operator^=(tvec1<U, P>
const & v);
215 template <
typename U>
216 GLM_FUNC_DECL tvec2<T, P> & operator^=(tvec2<U, P>
const & v);
217 template <
typename U>
218 GLM_FUNC_DECL tvec2<T, P> & operator<<=(U s);
219 template <
typename U>
220 GLM_FUNC_DECL tvec2<T, P> & operator<<=(tvec1<U, P>
const & v);
221 template <
typename U>
222 GLM_FUNC_DECL tvec2<T, P> & operator<<=(tvec2<U, P>
const & v);
223 template <
typename U>
224 GLM_FUNC_DECL tvec2<T, P> & operator>>=(U s);
225 template <
typename U>
226 GLM_FUNC_DECL tvec2<T, P> & operator>>=(tvec1<U, P>
const & v);
227 template <
typename U>
228 GLM_FUNC_DECL tvec2<T, P> & operator>>=(tvec2<U, P>
const & v);
233 template <
typename T, precision P>
234 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v);
238 template <
typename T, precision P>
239 GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P>
const & v, T
const & s);
241 template <
typename T, precision P>
242 GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
244 template <
typename T, precision P>
245 GLM_FUNC_DECL tvec2<T, P> operator+(T
const & s, tvec2<T, P>
const & v);
247 template <
typename T, precision P>
248 GLM_FUNC_DECL tvec2<T, P> operator+(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
250 template <
typename T, precision P>
251 GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
253 template <
typename T, precision P>
254 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v, T
const & s);
256 template <
typename T, precision P>
257 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
259 template <
typename T, precision P>
260 GLM_FUNC_DECL tvec2<T, P> operator-(T
const & s, tvec2<T, P>
const & v);
262 template <
typename T, precision P>
263 GLM_FUNC_DECL tvec2<T, P> operator-(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
265 template <
typename T, precision P>
266 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
268 template <
typename T, precision P>
269 GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P>
const & v, T
const & s);
271 template <
typename T, precision P>
272 GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
274 template <
typename T, precision P>
275 GLM_FUNC_DECL tvec2<T, P> operator*(T
const & s, tvec2<T, P>
const & v);
277 template <
typename T, precision P>
278 GLM_FUNC_DECL tvec2<T, P> operator*(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
280 template <
typename T, precision P>
281 GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
283 template <
typename T, precision P>
284 GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P>
const & v, T
const & s);
286 template <
typename T, precision P>
287 GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
289 template <
typename T, precision P>
290 GLM_FUNC_DECL tvec2<T, P> operator/(T
const & s, tvec2<T, P>
const & v);
292 template <
typename T, precision P>
293 GLM_FUNC_DECL tvec2<T, P> operator/(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
295 template <
typename T, precision P>
296 GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
298 template <
typename T, precision P>
299 GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P>
const & v);
301 template <
typename T, precision P>
302 GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P>
const & v, T
const & s);
304 template <
typename T, precision P>
305 GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
307 template <
typename T, precision P>
308 GLM_FUNC_DECL tvec2<T, P> operator%(T
const & s, tvec2<T, P>
const & v);
310 template <
typename T, precision P>
311 GLM_FUNC_DECL tvec2<T, P> operator%(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
313 template <
typename T, precision P>
314 GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
316 template <
typename T, precision P>
317 GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P>
const & v, T
const & s);
319 template <
typename T, precision P>
320 GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
322 template <
typename T, precision P>
323 GLM_FUNC_DECL tvec2<T, P> operator&(T
const & s, tvec2<T, P>
const & v);
325 template <
typename T, precision P>
326 GLM_FUNC_DECL tvec2<T, P> operator&(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
328 template <
typename T, precision P>
329 GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
331 template <
typename T, precision P>
332 GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P>
const & v, T
const & s);
334 template <
typename T, precision P>
335 GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
337 template <
typename T, precision P>
338 GLM_FUNC_DECL tvec2<T, P> operator|(T
const & s, tvec2<T, P>
const & v);
340 template <
typename T, precision P>
341 GLM_FUNC_DECL tvec2<T, P> operator|(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
343 template <
typename T, precision P>
344 GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
346 template <
typename T, precision P>
347 GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P>
const & v, T
const & s);
349 template <
typename T, precision P>
350 GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
352 template <
typename T, precision P>
353 GLM_FUNC_DECL tvec2<T, P> operator^(T
const & s, tvec2<T, P>
const & v);
355 template <
typename T, precision P>
356 GLM_FUNC_DECL tvec2<T, P> operator^(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
358 template <
typename T, precision P>
359 GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
361 template <
typename T, precision P>
362 GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P>
const & v, T
const & s);
364 template <
typename T, precision P>
365 GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
367 template <
typename T, precision P>
368 GLM_FUNC_DECL tvec2<T, P> operator<<(T const & s, tvec2<T, P>
const & v);
370 template <
typename T, precision P>
371 GLM_FUNC_DECL tvec2<T, P> operator<<(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
373 template <
typename T, precision P>
374 GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
376 template <
typename T, precision P>
377 GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P>
const & v, T
const & s);
379 template <
typename T, precision P>
380 GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P>
const & v1, tvec1<T, P>
const & v2);
382 template <
typename T, precision P>
383 GLM_FUNC_DECL tvec2<T, P> operator>>(T
const & s, tvec2<T, P>
const & v);
385 template <
typename T, precision P>
386 GLM_FUNC_DECL tvec2<T, P> operator>>(tvec1<T, P>
const & v1, tvec2<T, P>
const & v2);
388 template <
typename T, precision P>
389 GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
391 template <
typename T, precision P>
392 GLM_FUNC_DECL tvec2<T, P> operator~(tvec2<T, P>
const & v);
396 template <
typename T, precision P>
397 GLM_FUNC_DECL
bool operator==(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
399 template <
typename T, precision P>
400 GLM_FUNC_DECL
bool operator!=(tvec2<T, P>
const & v1, tvec2<T, P>
const & v2);
403 #ifndef GLM_EXTERNAL_TEMPLATE
404 #include "type_vec2.inl"
405 #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)