5# if GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE
6 template<
typename T, qualifier Q>
7 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat()
8# if GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST
9 : value{col_type(1, 0, 0), col_type(0, 1, 0)}
12# if GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION
13 this->value[0] = col_type(1, 0, 0);
14 this->value[1] = col_type(0, 1, 0);
19 template<
typename T, qualifier Q>
21 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<2, 3, T, P>
const& m)
22# if GLM_HAS_INITIALIZER_LISTS
23 : value{m.value[0], m.value[1]}
26# if !GLM_HAS_INITIALIZER_LISTS
27 this->value[0] = m.value[0];
28 this->value[1] = m.value[1];
32 template<
typename T, qualifier Q>
33 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(T scalar)
34# if GLM_HAS_INITIALIZER_LISTS
35 : value{col_type(scalar, 0, 0), col_type(0, scalar, 0)}
38# if !GLM_HAS_INITIALIZER_LISTS
39 this->value[0] = col_type(scalar, 0, 0);
40 this->value[1] = col_type(0, scalar, 0);
44 template<
typename T, qualifier Q>
45 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat
50# if GLM_HAS_INITIALIZER_LISTS
51 : value{col_type(x0, y0, z0), col_type(x1, y1, z1)}
54# if !GLM_HAS_INITIALIZER_LISTS
55 this->value[0] = col_type(x0, y0, z0);
56 this->value[1] = col_type(x1, y1, z1);
60 template<
typename T, qualifier Q>
61 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(col_type
const& v0, col_type
const& v1)
62# if GLM_HAS_INITIALIZER_LISTS
63 : value{col_type(v0), col_type(v1)}
66# if !GLM_HAS_INITIALIZER_LISTS
67 this->value[0] = col_type(v0);
68 this->value[1] = col_type(v1);
74 template<
typename T, qualifier Q>
76 typename X1,
typename Y1,
typename Z1,
77 typename X2,
typename Y2,
typename Z2>
78 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat
83# if GLM_HAS_INITIALIZER_LISTS
84 : value{col_type(x1, y1, z1), col_type(x2, y2, z2)}
87# if !GLM_HAS_INITIALIZER_LISTS
88 this->value[0] = col_type(x1, y1, z1);
89 this->value[1] = col_type(x2, y2, z2);
93 template<
typename T, qualifier Q>
94 template<
typename V1,
typename V2>
95 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(vec<3, V1, Q>
const& v1, vec<3, V2, Q>
const& v2)
96# if GLM_HAS_INITIALIZER_LISTS
97 : value{col_type(v1), col_type(v2)}
100# if !GLM_HAS_INITIALIZER_LISTS
101 this->value[0] = col_type(v1);
102 this->value[1] = col_type(v2);
108 template<
typename T, qualifier Q>
109 template<
typename U, qualifier P>
110 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<2, 3, U, P>
const& m)
111# if GLM_HAS_INITIALIZER_LISTS
112 : value{col_type(m[0]), col_type(m[1])}
115# if !GLM_HAS_INITIALIZER_LISTS
116 this->value[0] = col_type(m[0]);
117 this->value[1] = col_type(m[1]);
121 template<
typename T, qualifier Q>
122 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<2, 2, T, Q>
const& m)
123# if GLM_HAS_INITIALIZER_LISTS
124 : value{col_type(m[0], 0), col_type(m[1], 0)}
127# if !GLM_HAS_INITIALIZER_LISTS
128 this->value[0] = col_type(m[0], 0);
129 this->value[1] = col_type(m[1], 0);
133 template<
typename T, qualifier Q>
134 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<3, 3, T, Q>
const& m)
135# if GLM_HAS_INITIALIZER_LISTS
136 : value{col_type(m[0]), col_type(m[1])}
139# if !GLM_HAS_INITIALIZER_LISTS
140 this->value[0] = col_type(m[0]);
141 this->value[1] = col_type(m[1]);
145 template<
typename T, qualifier Q>
146 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<4, 4, T, Q>
const& m)
147# if GLM_HAS_INITIALIZER_LISTS
148 : value{col_type(m[0]), col_type(m[1])}
151# if !GLM_HAS_INITIALIZER_LISTS
152 this->value[0] = col_type(m[0]);
153 this->value[1] = col_type(m[1]);
157 template<
typename T, qualifier Q>
158 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<2, 4, T, Q>
const& m)
159# if GLM_HAS_INITIALIZER_LISTS
160 : value{col_type(m[0]), col_type(m[1])}
163# if !GLM_HAS_INITIALIZER_LISTS
164 this->value[0] = col_type(m[0]);
165 this->value[1] = col_type(m[1]);
169 template<
typename T, qualifier Q>
170 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<3, 2, T, Q>
const& m)
171# if GLM_HAS_INITIALIZER_LISTS
172 : value{col_type(m[0], 0), col_type(m[1], 0)}
175# if !GLM_HAS_INITIALIZER_LISTS
176 this->value[0] = col_type(m[0], 0);
177 this->value[1] = col_type(m[1], 0);
181 template<
typename T, qualifier Q>
182 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<3, 4, T, Q>
const& m)
183# if GLM_HAS_INITIALIZER_LISTS
184 : value{col_type(m[0]), col_type(m[1])}
187# if !GLM_HAS_INITIALIZER_LISTS
188 this->value[0] = col_type(m[0]);
189 this->value[1] = col_type(m[1]);
193 template<
typename T, qualifier Q>
194 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<4, 2, T, Q>
const& m)
195# if GLM_HAS_INITIALIZER_LISTS
196 : value{col_type(m[0], 0), col_type(m[1], 0)}
199# if !GLM_HAS_INITIALIZER_LISTS
200 this->value[0] = col_type(m[0], 0);
201 this->value[1] = col_type(m[1], 0);
205 template<
typename T, qualifier Q>
206 GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<4, 3, T, Q>
const& m)
207# if GLM_HAS_INITIALIZER_LISTS
208 : value{col_type(m[0]), col_type(m[1])}
211# if !GLM_HAS_INITIALIZER_LISTS
212 this->value[0] = col_type(m[0]);
213 this->value[1] = col_type(m[1]);
219 template<
typename T, qualifier Q>
220 GLM_FUNC_QUALIFIER
typename mat<2, 3, T, Q>::col_type & mat<2, 3, T, Q>::operator[](
typename mat<2, 3, T, Q>::length_type i)
222 assert(i < this->length());
223 return this->value[i];
226 template<
typename T, qualifier Q>
227 GLM_FUNC_QUALIFIER GLM_CONSTEXPR
typename mat<2, 3, T, Q>::col_type
const& mat<2, 3, T, Q>::operator[](
typename mat<2, 3, T, Q>::length_type i)
const
229 assert(i < this->length());
230 return this->value[i];
235 template<
typename T, qualifier Q>
237 GLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator=(mat<2, 3, U, Q>
const& m)
239 this->value[0] = m[0];
240 this->value[1] = m[1];
244 template<
typename T, qualifier Q>
246 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> & mat<2, 3, T, Q>::operator+=(U s)
253 template<
typename T, qualifier Q>
255 GLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator+=(mat<2, 3, U, Q>
const& m)
257 this->value[0] += m[0];
258 this->value[1] += m[1];
262 template<
typename T, qualifier Q>
264 GLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator-=(U s)
271 template<
typename T, qualifier Q>
273 GLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator-=(mat<2, 3, U, Q>
const& m)
275 this->value[0] -= m[0];
276 this->value[1] -= m[1];
280 template<
typename T, qualifier Q>
282 GLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator*=(U s)
289 template<
typename T, qualifier Q>
291 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> & mat<2, 3, T, Q>::operator/=(U s)
300 template<
typename T, qualifier Q>
301 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> & mat<2, 3, T, Q>::operator++()
308 template<
typename T, qualifier Q>
309 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> & mat<2, 3, T, Q>::operator--()
316 template<
typename T, qualifier Q>
317 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> mat<2, 3, T, Q>::operator++(
int)
319 mat<2, 3, T, Q> Result(*
this);
324 template<
typename T, qualifier Q>
325 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> mat<2, 3, T, Q>::operator--(
int)
327 mat<2, 3, T, Q> Result(*
this);
334 template<
typename T, qualifier Q>
335 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q>
const& m)
340 template<
typename T, qualifier Q>
341 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q>
const& m)
343 return mat<2, 3, T, Q>(
350 template<
typename T, qualifier Q>
351 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q>
const& m, T scalar)
353 return mat<2, 3, T, Q>(
358 template<
typename T, qualifier Q>
359 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q>
const& m1, mat<2, 3, T, Q>
const& m2)
361 return mat<2, 3, T, Q>(
366 template<
typename T, qualifier Q>
367 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q>
const& m, T scalar)
369 return mat<2, 3, T, Q>(
374 template<
typename T, qualifier Q>
375 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q>
const& m1, mat<2, 3, T, Q>
const& m2)
377 return mat<2, 3, T, Q>(
382 template<
typename T, qualifier Q>
383 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<2, 3, T, Q>
const& m, T scalar)
385 return mat<2, 3, T, Q>(
390 template<
typename T, qualifier Q>
391 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(T scalar, mat<2, 3, T, Q>
const& m)
393 return mat<2, 3, T, Q>(
398 template<
typename T, qualifier Q>
399 GLM_FUNC_QUALIFIER
typename mat<2, 3, T, Q>::col_type
operator*
401 mat<2, 3, T, Q>
const& m,
402 typename mat<2, 3, T, Q>::row_type
const& v)
404 return typename mat<2, 3, T, Q>::col_type(
405 m[0][0] * v.x + m[1][0] * v.y,
406 m[0][1] * v.x + m[1][1] * v.y,
407 m[0][2] * v.x + m[1][2] * v.y);
410 template<
typename T, qualifier Q>
411 GLM_FUNC_QUALIFIER
typename mat<2, 3, T, Q>::row_type
operator*
413 typename mat<2, 3, T, Q>::col_type
const& v,
414 mat<2, 3, T, Q>
const& m)
416 return typename mat<2, 3, T, Q>::row_type(
417 v.x * m[0][0] + v.y * m[0][1] + v.z * m[0][2],
418 v.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2]);
421 template<
typename T, qualifier Q>
422 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<2, 3, T, Q>
const& m1, mat<2, 2, T, Q>
const& m2)
424 return mat<2, 3, T, Q>(
425 m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
426 m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
427 m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],
428 m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
429 m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
430 m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1]);
433 template<
typename T, qualifier Q>
434 GLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<2, 3, T, Q>
const& m1, mat<3, 2, T, Q>
const& m2)
450 mat<3, 3, T, Q> Result;
451 Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01;
452 Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01;
453 Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01;
454 Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11;
455 Result[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11;
456 Result[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11;
457 Result[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21;
458 Result[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21;
459 Result[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21;
463 template<
typename T, qualifier Q>
464 GLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<2, 3, T, Q>
const& m1, mat<4, 2, T, Q>
const& m2)
466 return mat<4, 3, T, Q>(
467 m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
468 m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
469 m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],
470 m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
471 m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
472 m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],
473 m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],
474 m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],
475 m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1],
476 m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1],
477 m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1],
478 m1[0][2] * m2[3][0] + m1[1][2] * m2[3][1]);
481 template<
typename T, qualifier Q>
482 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator/(mat<2, 3, T, Q>
const& m, T scalar)
484 return mat<2, 3, T, Q>(
489 template<
typename T, qualifier Q>
490 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator/(T scalar, mat<2, 3, T, Q>
const& m)
492 return mat<2, 3, T, Q>(
499 template<
typename T, qualifier Q>
500 GLM_FUNC_QUALIFIER
bool operator==(mat<2, 3, T, Q>
const& m1, mat<2, 3, T, Q>
const& m2)
502 return (m1[0] == m2[0]) && (m1[1] == m2[1]);
505 template<
typename T, qualifier Q>
506 GLM_FUNC_QUALIFIER
bool operator!=(mat<2, 3, T, Q>
const& m1, mat<2, 3, T, Q>
const& m2)
508 return (m1[0] != m2[0]) || (m1[1] != m2[1]);
Core features
Definition common.hpp:21