5# if GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE
6 template<
typename T, qualifier Q>
7 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat()
8# if GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST
9 : value{col_type(1, 0), col_type(0, 1), col_type(0, 0)}
12# if GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION
13 this->value[0] = col_type(1, 0);
14 this->value[1] = col_type(0, 1);
15 this->value[2] = col_type(0, 0);
20 template<
typename T, qualifier Q>
22 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<3, 2, T, P>
const& m)
23# if GLM_HAS_INITIALIZER_LISTS
24 : value{col_type(m[0]), col_type(m[1]), col_type(m[2])}
27# if !GLM_HAS_INITIALIZER_LISTS
28 this->value[0] = m[0];
29 this->value[1] = m[1];
30 this->value[2] = m[2];
34 template<
typename T, qualifier Q>
35 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(T s)
36# if GLM_HAS_INITIALIZER_LISTS
37 : value{col_type(s, 0), col_type(0, s), col_type(0, 0)}
40# if !GLM_HAS_INITIALIZER_LISTS
41 this->value[0] = col_type(s, 0);
42 this->value[1] = col_type(0, s);
43 this->value[2] = col_type(0, 0);
47 template<
typename T, qualifier Q>
48 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat
54# if GLM_HAS_INITIALIZER_LISTS
55 : value{col_type(x0, y0), col_type(x1, y1), col_type(x2, y2)}
58# if !GLM_HAS_INITIALIZER_LISTS
59 this->value[0] = col_type(x0, y0);
60 this->value[1] = col_type(x1, y1);
61 this->value[2] = col_type(x2, y2);
65 template<
typename T, qualifier Q>
66 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(col_type
const& v0, col_type
const& v1, col_type
const& v2)
67# if GLM_HAS_INITIALIZER_LISTS
68 : value{col_type(v0), col_type(v1), col_type(v2)}
71# if !GLM_HAS_INITIALIZER_LISTS
80 template<
typename T, qualifier Q>
82 typename X0,
typename Y0,
83 typename X1,
typename Y1,
84 typename X2,
typename Y2>
85 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat
91# if GLM_HAS_INITIALIZER_LISTS
92 : value{col_type(x0, y0), col_type(x1, y1), col_type(x2, y2)}
95# if !GLM_HAS_INITIALIZER_LISTS
96 this->value[0] = col_type(x0, y0);
97 this->value[1] = col_type(x1, y1);
98 this->value[2] = col_type(x2, y2);
102 template<
typename T, qualifier Q>
103 template<
typename V0,
typename V1,
typename V2>
104 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(vec<2, V0, Q>
const& v0, vec<2, V1, Q>
const& v1, vec<2, V2, Q>
const& v2)
105# if GLM_HAS_INITIALIZER_LISTS
106 : value{col_type(v0), col_type(v1), col_type(v2)}
109# if !GLM_HAS_INITIALIZER_LISTS
110 this->value[0] = col_type(v0);
111 this->value[1] = col_type(v1);
112 this->value[2] = col_type(v2);
118 template<
typename T, qualifier Q>
119 template<
typename U, qualifier P>
120 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<3, 2, U, P>
const& m)
121# if GLM_HAS_INITIALIZER_LISTS
122 : value{col_type(m[0]), col_type(m[1]), col_type(m[2])}
125# if !GLM_HAS_INITIALIZER_LISTS
126 this->value[0] = col_type(m[0]);
127 this->value[1] = col_type(m[1]);
128 this->value[2] = col_type(m[2]);
132 template<
typename T, qualifier Q>
133 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<2, 2, T, Q>
const& m)
134# if GLM_HAS_INITIALIZER_LISTS
135 : value{col_type(m[0]), col_type(m[1]), col_type(0)}
138# if !GLM_HAS_INITIALIZER_LISTS
139 this->value[0] = m[0];
140 this->value[1] = m[1];
141 this->value[2] = col_type(0);
145 template<
typename T, qualifier Q>
146 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<3, 3, T, Q>
const& m)
147# if GLM_HAS_INITIALIZER_LISTS
148 : value{col_type(m[0]), col_type(m[1]), col_type(m[2])}
151# if !GLM_HAS_INITIALIZER_LISTS
152 this->value[0] = col_type(m[0]);
153 this->value[1] = col_type(m[1]);
154 this->value[2] = col_type(m[2]);
158 template<
typename T, qualifier Q>
159 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<4, 4, T, Q>
const& m)
160# if GLM_HAS_INITIALIZER_LISTS
161 : value{col_type(m[0]), col_type(m[1]), col_type(m[2])}
164# if !GLM_HAS_INITIALIZER_LISTS
165 this->value[0] = col_type(m[0]);
166 this->value[1] = col_type(m[1]);
167 this->value[2] = col_type(m[2]);
171 template<
typename T, qualifier Q>
172 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<2, 3, T, Q>
const& m)
173# if GLM_HAS_INITIALIZER_LISTS
174 : value{col_type(m[0]), col_type(m[1]), col_type(0)}
177# if !GLM_HAS_INITIALIZER_LISTS
178 this->value[0] = col_type(m[0]);
179 this->value[1] = col_type(m[1]);
180 this->value[2] = col_type(0);
184 template<
typename T, qualifier Q>
185 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<2, 4, T, Q>
const& m)
186# if GLM_HAS_INITIALIZER_LISTS
187 : value{col_type(m[0]), col_type(m[1]), col_type(0)}
190# if !GLM_HAS_INITIALIZER_LISTS
191 this->value[0] = col_type(m[0]);
192 this->value[1] = col_type(m[1]);
193 this->value[2] = col_type(0);
197 template<
typename T, qualifier Q>
198 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<3, 4, T, Q>
const& m)
199# if GLM_HAS_INITIALIZER_LISTS
200 : value{col_type(m[0]), col_type(m[1]), col_type(m[2])}
203# if !GLM_HAS_INITIALIZER_LISTS
204 this->value[0] = col_type(m[0]);
205 this->value[1] = col_type(m[1]);
206 this->value[2] = col_type(m[2]);
210 template<
typename T, qualifier Q>
211 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<4, 2, T, Q>
const& m)
212# if GLM_HAS_INITIALIZER_LISTS
213 : value{col_type(m[0]), col_type(m[1]), col_type(m[2])}
216# if !GLM_HAS_INITIALIZER_LISTS
217 this->value[0] = m[0];
218 this->value[1] = m[1];
219 this->value[2] = m[2];
223 template<
typename T, qualifier Q>
224 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<4, 3, T, Q>
const& m)
225# if GLM_HAS_INITIALIZER_LISTS
226 : value{col_type(m[0]), col_type(m[1]), col_type(m[2])}
229# if !GLM_HAS_INITIALIZER_LISTS
230 this->value[0] = col_type(m[0]);
231 this->value[1] = col_type(m[1]);
232 this->value[2] = col_type(m[2]);
238 template<
typename T, qualifier Q>
239 GLM_FUNC_QUALIFIER
typename mat<3, 2, T, Q>::col_type & mat<3, 2, T, Q>::operator[](
typename mat<3, 2, T, Q>::length_type i)
241 assert(i < this->length());
242 return this->value[i];
245 template<
typename T, qualifier Q>
246 GLM_FUNC_QUALIFIER GLM_CONSTEXPR
typename mat<3, 2, T, Q>::col_type
const& mat<3, 2, T, Q>::operator[](
typename mat<3, 2, T, Q>::length_type i)
const
248 assert(i < this->length());
249 return this->value[i];
254 template<
typename T, qualifier Q>
256 GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator=(mat<3, 2, U, Q>
const& m)
258 this->value[0] = m[0];
259 this->value[1] = m[1];
260 this->value[2] = m[2];
264 template<
typename T, qualifier Q>
266 GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator+=(U s)
274 template<
typename T, qualifier Q>
276 GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator+=(mat<3, 2, U, Q>
const& m)
278 this->value[0] += m[0];
279 this->value[1] += m[1];
280 this->value[2] += m[2];
284 template<
typename T, qualifier Q>
286 GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator-=(U s)
294 template<
typename T, qualifier Q>
296 GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator-=(mat<3, 2, U, Q>
const& m)
298 this->value[0] -= m[0];
299 this->value[1] -= m[1];
300 this->value[2] -= m[2];
304 template<
typename T, qualifier Q>
306 GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator*=(U s)
314 template<
typename T, qualifier Q>
316 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> & mat<3, 2, T, Q>::operator/=(U s)
326 template<
typename T, qualifier Q>
327 GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator++()
335 template<
typename T, qualifier Q>
336 GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator--()
344 template<
typename T, qualifier Q>
345 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> mat<3, 2, T, Q>::operator++(
int)
347 mat<3, 2, T, Q> Result(*
this);
352 template<
typename T, qualifier Q>
353 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> mat<3, 2, T, Q>::operator--(
int)
355 mat<3, 2, T, Q> Result(*
this);
362 template<
typename T, qualifier Q>
363 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator+(mat<3, 2, T, Q>
const& m)
368 template<
typename T, qualifier Q>
369 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator-(mat<3, 2, T, Q>
const& m)
371 return mat<3, 2, T, Q>(
379 template<
typename T, qualifier Q>
380 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator+(mat<3, 2, T, Q>
const& m, T scalar)
382 return mat<3, 2, T, Q>(
388 template<
typename T, qualifier Q>
389 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator+(mat<3, 2, T, Q>
const& m1, mat<3, 2, T, Q>
const& m2)
391 return mat<3, 2, T, Q>(
397 template<
typename T, qualifier Q>
398 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator-(mat<3, 2, T, Q>
const& m, T scalar)
400 return mat<3, 2, T, Q>(
406 template<
typename T, qualifier Q>
407 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator-(mat<3, 2, T, Q>
const& m1, mat<3, 2, T, Q>
const& m2)
409 return mat<3, 2, T, Q>(
415 template<
typename T, qualifier Q>
416 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<3, 2, T, Q>
const& m, T scalar)
418 return mat<3, 2, T, Q>(
424 template<
typename T, qualifier Q>
425 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(T scalar, mat<3, 2, T, Q>
const& m)
427 return mat<3, 2, T, Q>(
433 template<
typename T, qualifier Q>
434 GLM_FUNC_QUALIFIER
typename mat<3, 2, T, Q>::col_type operator*(mat<3, 2, T, Q>
const& m,
typename mat<3, 2, T, Q>::row_type
const& v)
436 return typename mat<3, 2, T, Q>::col_type(
437 m[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z,
438 m[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z);
441 template<
typename T, qualifier Q>
442 GLM_FUNC_QUALIFIER
typename mat<3, 2, T, Q>::row_type operator*(
typename mat<3, 2, T, Q>::col_type
const& v, mat<3, 2, T, Q>
const& m)
444 return typename mat<3, 2, T, Q>::row_type(
445 v.x * m[0][0] + v.y * m[0][1],
446 v.x * m[1][0] + v.y * m[1][1],
447 v.x * m[2][0] + v.y * m[2][1]);
450 template<
typename T, qualifier Q>
451 GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<3, 2, T, Q>
const& m1, mat<2, 3, T, Q>
const& m2)
453 const T SrcA00 = m1[0][0];
454 const T SrcA01 = m1[0][1];
455 const T SrcA10 = m1[1][0];
456 const T SrcA11 = m1[1][1];
457 const T SrcA20 = m1[2][0];
458 const T SrcA21 = m1[2][1];
460 const T SrcB00 = m2[0][0];
461 const T SrcB01 = m2[0][1];
462 const T SrcB02 = m2[0][2];
463 const T SrcB10 = m2[1][0];
464 const T SrcB11 = m2[1][1];
465 const T SrcB12 = m2[1][2];
467 mat<2, 2, T, Q> Result;
468 Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;
469 Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;
470 Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12;
471 Result[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12;
475 template<
typename T, qualifier Q>
476 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<3, 2, T, Q>
const& m1, mat<3, 3, T, Q>
const& m2)
478 return mat<3, 2, T, Q>(
479 m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],
480 m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
481 m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
482 m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
483 m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],
484 m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2]);
487 template<
typename T, qualifier Q>
488 GLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<3, 2, T, Q>
const& m1, mat<4, 3, T, Q>
const& m2)
490 return mat<4, 2, T, Q>(
491 m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],
492 m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
493 m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
494 m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
495 m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],
496 m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2],
497 m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2],
498 m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2]);
501 template<
typename T, qualifier Q>
502 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator/(mat<3, 2, T, Q>
const& m, T scalar)
504 return mat<3, 2, T, Q>(
510 template<
typename T, qualifier Q>
511 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator/(T scalar, mat<3, 2, T, Q>
const& m)
513 return mat<3, 2, T, Q>(
521 template<
typename T, qualifier Q>
522 GLM_FUNC_QUALIFIER
bool operator==(mat<3, 2, T, Q>
const& m1, mat<3, 2, T, Q>
const& m2)
524 return (m1[0] == m2[0]) && (m1[1] == m2[1]) && (m1[2] == m2[2]);
527 template<
typename T, qualifier Q>
528 GLM_FUNC_QUALIFIER
bool operator!=(mat<3, 2, T, Q>
const& m1, mat<3, 2, T, Q>
const& m2)
530 return (m1[0] != m2[0]) || (m1[1] != m2[1]) || (m1[2] != m2[2]);
Core features
Definition common.hpp:21