34 # if GLM_HAS_ANONYMOUS_UNION
44 template <
typename T, precision P = defaultp>
50 typedef tvec3<T, P> type;
51 typedef tvec3<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_SWIZZLE3_2_MEMBERS(T, P, tvec2, x, y, z)
78 _GLM_SWIZZLE3_2_MEMBERS(T, P, tvec2, r, g, b)
79 _GLM_SWIZZLE3_2_MEMBERS(T, P, tvec2, s, t, p)
80 _GLM_SWIZZLE3_3_MEMBERS(T, P, tvec3, x, y, z)
81 _GLM_SWIZZLE3_3_MEMBERS(T, P, tvec3, r, g, b)
82 _GLM_SWIZZLE3_3_MEMBERS(T, P, tvec3, s, t, p)
83 _GLM_SWIZZLE3_4_MEMBERS(T, P, tvec4, x, y, z)
84 _GLM_SWIZZLE3_4_MEMBERS(T, P, tvec4, r, g, b)
85 _GLM_SWIZZLE3_4_MEMBERS(T, P, tvec4, s, t, p)
94 GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P, tvec3, tvec2, tvec3, tvec4)
101 GLM_FUNC_DECL T & operator[](length_t i);
102 GLM_FUNC_DECL T
const & operator[](length_t i)
const;
107 GLM_FUNC_DECL tvec3();
108 template <precision Q>
109 GLM_FUNC_DECL tvec3(tvec3<T, Q>
const & v);
114 GLM_FUNC_DECL
explicit tvec3(ctor);
115 GLM_FUNC_DECL
explicit tvec3(T
const & s);
116 GLM_FUNC_DECL tvec3(T
const & a, T
const & b, T
const & c);
122 template <
typename A,
typename B,
typename C>
123 GLM_FUNC_DECL tvec3(A
const & a, B
const & b, C
const & c);
124 template <
typename A,
typename B,
typename C>
125 GLM_FUNC_DECL tvec3(tvec1<A, P>
const & a, tvec1<B, P>
const & b, tvec1<C, P>
const & c);
131 template <
typename A,
typename B, precision Q>
132 GLM_FUNC_DECL
explicit tvec3(tvec2<A, Q>
const & a, B
const & b);
134 template <
typename A,
typename B, precision Q>
135 GLM_FUNC_DECL
explicit tvec3(tvec2<A, Q>
const & a, tvec1<B, Q>
const & b);
137 template <
typename A,
typename B, precision Q>
138 GLM_FUNC_DECL
explicit tvec3(A
const & a, tvec2<B, Q>
const & b);
140 template <
typename A,
typename B, precision Q>
141 GLM_FUNC_DECL
explicit tvec3(tvec1<A, Q>
const & a, tvec2<B, Q>
const & b);
143 template <
typename U, precision Q>
144 GLM_FUNC_DECL
explicit tvec3(tvec4<U, Q>
const & v);
146 # ifdef GLM_FORCE_EXPLICIT_CTOR
147 template <
typename U, precision Q>
149 GLM_FUNC_DECL
explicit tvec3(tvec3<U, Q>
const & v);
151 template <
typename U, precision Q>
153 GLM_FUNC_DECL tvec3(tvec3<U, Q>
const & v);
159 # if GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
160 template <
int E0,
int E1,
int E2>
161 GLM_FUNC_DECL tvec3(detail::_swizzle<3, T, P, tvec3<T, P>, E0, E1, E2, -1>
const & that)
166 template <
int E0,
int E1>
167 GLM_FUNC_DECL tvec3(detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1, -1, -2>
const & v, T
const & s)
169 *
this = tvec3<T, P>(v(), s);
172 template <
int E0,
int E1>
173 GLM_FUNC_DECL tvec3(T
const & s, detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1, -1, -2>
const & v)
175 *
this = tvec3<T, P>(s, v());
177 # endif// GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
182 template <
typename U>
183 GLM_FUNC_DECL tvec3<T, P> & operator=(tvec3<U, P>
const & v);
184 template <
typename U>
185 GLM_FUNC_DECL tvec3<T, P> & operator+=(U s);
186 template <
typename U>
187 GLM_FUNC_DECL tvec3<T, P> & operator+=(tvec1<U, P>
const & v);
188 template <
typename U>
189 GLM_FUNC_DECL tvec3<T, P> & operator+=(tvec3<U, P>
const & v);
190 template <
typename U>
191 GLM_FUNC_DECL tvec3<T, P> & operator-=(U s);
192 template <
typename U>
193 GLM_FUNC_DECL tvec3<T, P> & operator-=(tvec1<U, P>
const & v);
194 template <
typename U>
195 GLM_FUNC_DECL tvec3<T, P> & operator-=(tvec3<U, P>
const & v);
196 template <
typename U>
197 GLM_FUNC_DECL tvec3<T, P> & operator*=(U s);
198 template <
typename U>
199 GLM_FUNC_DECL tvec3<T, P> & operator*=(tvec1<U, P>
const & v);
200 template <
typename U>
201 GLM_FUNC_DECL tvec3<T, P> & operator*=(tvec3<U, P>
const & v);
202 template <
typename U>
203 GLM_FUNC_DECL tvec3<T, P> & operator/=(U s);
204 template <
typename U>
205 GLM_FUNC_DECL tvec3<T, P> & operator/=(tvec1<U, P>
const & v);
206 template <
typename U>
207 GLM_FUNC_DECL tvec3<T, P> & operator/=(tvec3<U, P>
const & v);
212 GLM_FUNC_DECL tvec3<T, P> & operator++();
213 GLM_FUNC_DECL tvec3<T, P> & operator--();
214 GLM_FUNC_DECL tvec3<T, P> operator++(
int);
215 GLM_FUNC_DECL tvec3<T, P> operator--(
int);
220 template <
typename U>
221 GLM_FUNC_DECL tvec3<T, P> & operator%=(U s);
222 template <
typename U>
223 GLM_FUNC_DECL tvec3<T, P> & operator%=(tvec1<U, P>
const & v);
224 template <
typename U>
225 GLM_FUNC_DECL tvec3<T, P> & operator%=(tvec3<U, P>
const & v);
226 template <
typename U>
227 GLM_FUNC_DECL tvec3<T, P> & operator&=(U s);
228 template <
typename U>
229 GLM_FUNC_DECL tvec3<T, P> & operator&=(tvec1<U, P>
const & v);
230 template <
typename U>
231 GLM_FUNC_DECL tvec3<T, P> & operator&=(tvec3<U, P>
const & v);
232 template <
typename U>
233 GLM_FUNC_DECL tvec3<T, P> & operator|=(U s);
234 template <
typename U>
235 GLM_FUNC_DECL tvec3<T, P> & operator|=(tvec1<U, P>
const & v);
236 template <
typename U>
237 GLM_FUNC_DECL tvec3<T, P> & operator|=(tvec3<U, P>
const & v);
238 template <
typename U>
239 GLM_FUNC_DECL tvec3<T, P> & operator^=(U s);
240 template <
typename U>
241 GLM_FUNC_DECL tvec3<T, P> & operator^=(tvec1<U, P>
const & v);
242 template <
typename U>
243 GLM_FUNC_DECL tvec3<T, P> & operator^=(tvec3<U, P>
const & v);
244 template <
typename U>
245 GLM_FUNC_DECL tvec3<T, P> & operator<<=(U s);
246 template <
typename U>
247 GLM_FUNC_DECL tvec3<T, P> & operator<<=(tvec1<U, P>
const & v);
248 template <
typename U>
249 GLM_FUNC_DECL tvec3<T, P> & operator<<=(tvec3<U, P>
const & v);
250 template <
typename U>
251 GLM_FUNC_DECL tvec3<T, P> & operator>>=(U s);
252 template <
typename U>
253 GLM_FUNC_DECL tvec3<T, P> & operator>>=(tvec1<U, P>
const & v);
254 template <
typename U>
255 GLM_FUNC_DECL tvec3<T, P> & operator>>=(tvec3<U, P>
const & v);
258 template <
typename T, precision P>
259 GLM_FUNC_DECL tvec3<T, P> operator+(tvec3<T, P>
const & v, T
const & s);
261 template <
typename T, precision P>
262 GLM_FUNC_DECL tvec3<T, P> operator+(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
264 template <
typename T, precision P>
265 GLM_FUNC_DECL tvec3<T, P> operator+(T
const & s, tvec3<T, P>
const & v);
267 template <
typename T, precision P>
268 GLM_FUNC_DECL tvec3<T, P> operator+(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
270 template <
typename T, precision P>
271 GLM_FUNC_DECL tvec3<T, P> operator+(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
273 template <
typename T, precision P>
274 GLM_FUNC_DECL tvec3<T, P> operator-(tvec3<T, P>
const & v, T
const & s);
276 template <
typename T, precision P>
277 GLM_FUNC_DECL tvec3<T, P> operator-(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
279 template <
typename T, precision P>
280 GLM_FUNC_DECL tvec3<T, P> operator-(T
const & s, tvec3<T, P>
const & v);
282 template <
typename T, precision P>
283 GLM_FUNC_DECL tvec3<T, P> operator-(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
285 template <
typename T, precision P>
286 GLM_FUNC_DECL tvec3<T, P> operator-(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
288 template <
typename T, precision P>
289 GLM_FUNC_DECL tvec3<T, P> operator*(tvec3<T, P>
const & v, T
const & s);
291 template <
typename T, precision P>
292 GLM_FUNC_DECL tvec3<T, P> operator*(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
294 template <
typename T, precision P>
295 GLM_FUNC_DECL tvec3<T, P> operator*(T
const & s, tvec3<T, P>
const & v);
297 template <
typename T, precision P>
298 GLM_FUNC_DECL tvec3<T, P> operator*(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
300 template <
typename T, precision P>
301 GLM_FUNC_DECL tvec3<T, P> operator*(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
303 template <
typename T, precision P>
304 GLM_FUNC_DECL tvec3<T, P> operator/(tvec3<T, P>
const & v, T
const & s);
306 template <
typename T, precision P>
307 GLM_FUNC_DECL tvec3<T, P> operator/(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
309 template <
typename T, precision P>
310 GLM_FUNC_DECL tvec3<T, P> operator/(T
const & s, tvec3<T, P>
const & v);
312 template <
typename T, precision P>
313 GLM_FUNC_DECL tvec3<T, P> operator/(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
315 template <
typename T, precision P>
316 GLM_FUNC_DECL tvec3<T, P> operator/(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
318 template <
typename T, precision P>
319 GLM_FUNC_DECL tvec3<T, P> operator-(tvec3<T, P>
const & v);
321 template <
typename T, precision P>
322 GLM_FUNC_DECL tvec3<T, P> operator%(tvec3<T, P>
const & v, T
const & s);
324 template <
typename T, precision P>
325 GLM_FUNC_DECL tvec3<T, P> operator%(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
327 template <
typename T, precision P>
328 GLM_FUNC_DECL tvec3<T, P> operator%(T
const & s, tvec3<T, P>
const & v);
330 template <
typename T, precision P>
331 GLM_FUNC_DECL tvec3<T, P> operator%(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
333 template <
typename T, precision P>
334 GLM_FUNC_DECL tvec3<T, P> operator%(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
336 template <
typename T, precision P>
337 GLM_FUNC_DECL tvec3<T, P> operator&(tvec3<T, P>
const & v, T
const & s);
339 template <
typename T, precision P>
340 GLM_FUNC_DECL tvec3<T, P> operator&(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
342 template <
typename T, precision P>
343 GLM_FUNC_DECL tvec3<T, P> operator&(T
const & s, tvec3<T, P>
const & v);
345 template <
typename T, precision P>
346 GLM_FUNC_DECL tvec3<T, P> operator&(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
348 template <
typename T, precision P>
349 GLM_FUNC_DECL tvec3<T, P> operator&(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
351 template <
typename T, precision P>
352 GLM_FUNC_DECL tvec3<T, P> operator|(tvec3<T, P>
const & v, T
const & s);
354 template <
typename T, precision P>
355 GLM_FUNC_DECL tvec3<T, P> operator|(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
357 template <
typename T, precision P>
358 GLM_FUNC_DECL tvec3<T, P> operator|(T
const & s, tvec3<T, P>
const & v);
360 template <
typename T, precision P>
361 GLM_FUNC_DECL tvec3<T, P> operator|(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
363 template <
typename T, precision P>
364 GLM_FUNC_DECL tvec3<T, P> operator|(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
366 template <
typename T, precision P>
367 GLM_FUNC_DECL tvec3<T, P> operator^(tvec3<T, P>
const & v, T
const & s);
369 template <
typename T, precision P>
370 GLM_FUNC_DECL tvec3<T, P> operator^(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
372 template <
typename T, precision P>
373 GLM_FUNC_DECL tvec3<T, P> operator^(T
const & s, tvec3<T, P>
const & v);
375 template <
typename T, precision P>
376 GLM_FUNC_DECL tvec3<T, P> operator^(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
378 template <
typename T, precision P>
379 GLM_FUNC_DECL tvec3<T, P> operator^(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
381 template <
typename T, precision P>
382 GLM_FUNC_DECL tvec3<T, P> operator<<(tvec3<T, P>
const & v, T
const & s);
384 template <
typename T, precision P>
385 GLM_FUNC_DECL tvec3<T, P> operator<<(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
387 template <
typename T, precision P>
388 GLM_FUNC_DECL tvec3<T, P> operator<<(T const & s, tvec3<T, P>
const & v);
390 template <
typename T, precision P>
391 GLM_FUNC_DECL tvec3<T, P> operator<<(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
393 template <
typename T, precision P>
394 GLM_FUNC_DECL tvec3<T, P> operator<<(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
396 template <
typename T, precision P>
397 GLM_FUNC_DECL tvec3<T, P> operator>>(tvec3<T, P>
const & v, T
const & s);
399 template <
typename T, precision P>
400 GLM_FUNC_DECL tvec3<T, P> operator>>(tvec3<T, P>
const & v, tvec1<T, P>
const & s);
402 template <
typename T, precision P>
403 GLM_FUNC_DECL tvec3<T, P> operator>>(T
const & s, tvec3<T, P>
const & v);
405 template <
typename T, precision P>
406 GLM_FUNC_DECL tvec3<T, P> operator>>(tvec1<T, P>
const & s, tvec3<T, P>
const & v);
408 template <
typename T, precision P>
409 GLM_FUNC_DECL tvec3<T, P> operator>>(tvec3<T, P>
const & v1, tvec3<T, P>
const & v2);
411 template <
typename T, precision P>
412 GLM_FUNC_DECL tvec3<T, P> operator~(tvec3<T, P>
const & v);
415 #ifndef GLM_EXTERNAL_TEMPLATE
416 #include "type_vec3.inl"
417 #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)