17 T(1), T(0), T(0), T(0),
18 T(0), cosX, sinX, T(0),
19 T(0),-sinX, cosX, T(0),
20 T(0), T(0), T(0), T(1));
33 cosY, T(0), -sinY, T(0),
34 T(0), T(1), T(0), T(0),
35 sinY, T(0), cosY, T(0),
36 T(0), T(0), T(0), T(1));
49 cosZ, sinZ, T(0), T(0),
50 -sinZ, cosZ, T(0), T(0),
51 T(0), T(0), T(1), T(0),
52 T(0), T(0), T(0), T(1));
59 T
const & angularVelocityX
62 T cosX =
glm::cos(angleX) * angularVelocityX;
63 T sinX =
glm::sin(angleX) * angularVelocityX;
66 T(0), T(0), T(0), T(0),
67 T(0),-sinX, cosX, T(0),
68 T(0),-cosX,-sinX, T(0),
69 T(0), T(0), T(0), T(0));
76 T
const & angularVelocityY
79 T cosY =
glm::cos(angleY) * angularVelocityY;
80 T sinY =
glm::sin(angleY) * angularVelocityY;
83 -sinY, T(0), -cosY, T(0),
84 T(0), T(0), T(0), T(0),
85 cosY, T(0), -sinY, T(0),
86 T(0), T(0), T(0), T(0));
93 T
const & angularVelocityZ
96 T cosZ =
glm::cos(angleZ) * angularVelocityZ;
97 T sinZ =
glm::sin(angleZ) * angularVelocityZ;
100 -sinZ, cosZ, T(0), T(0),
101 -cosZ, -sinZ, T(0), T(0),
102 T(0), T(0), T(0), T(0),
103 T(0), T(0), T(0), T(0));
119 cosY, -sinX * -sinY, cosX * -sinY, T(0),
120 T(0), cosX, sinX, T(0),
121 sinY, -sinX * cosY, cosX * cosY, T(0),
122 T(0), T(0), T(0), T(1));
138 cosY, 0, -sinY, T(0),
139 sinY * sinX, cosX, cosY * sinX, T(0),
140 sinY * cosX, -sinX, cosY * cosX, T(0),
141 T(0), T(0), T(0), T(1));
200 Result[0][0] = c2 * c3;
201 Result[0][1] =-c1 * s3 + s1 * s2 * c3;
202 Result[0][2] = s1 * s3 + c1 * s2 * c3;
203 Result[0][3] =
static_cast<T
>(0);
204 Result[1][0] = c2 * s3;
205 Result[1][1] = c1 * c3 + s1 * s2 * s3;
206 Result[1][2] =-s1 * c3 + c1 * s2 * s3;
207 Result[1][3] =
static_cast<T
>(0);
209 Result[2][1] = s1 * c2;
210 Result[2][2] = c1 * c2;
211 Result[2][3] =
static_cast<T
>(0);
212 Result[3][0] =
static_cast<T
>(0);
213 Result[3][1] =
static_cast<T
>(0);
214 Result[3][2] =
static_cast<T
>(0);
215 Result[3][3] =
static_cast<T
>(1);
235 Result[0][0] = tmp_ch * tmp_cb + tmp_sh * tmp_sp * tmp_sb;
236 Result[0][1] = tmp_sb * tmp_cp;
237 Result[0][2] = -tmp_sh * tmp_cb + tmp_ch * tmp_sp * tmp_sb;
238 Result[0][3] =
static_cast<T
>(0);
239 Result[1][0] = -tmp_ch * tmp_sb + tmp_sh * tmp_sp * tmp_cb;
240 Result[1][1] = tmp_cb * tmp_cp;
241 Result[1][2] = tmp_sb * tmp_sh + tmp_ch * tmp_sp * tmp_cb;
242 Result[1][3] =
static_cast<T
>(0);
243 Result[2][0] = tmp_sh * tmp_cp;
244 Result[2][1] = -tmp_sp;
245 Result[2][2] = tmp_ch * tmp_cp;
246 Result[2][3] =
static_cast<T
>(0);
247 Result[3][0] =
static_cast<T
>(0);
248 Result[3][1] =
static_cast<T
>(0);
249 Result[3][2] =
static_cast<T
>(0);
250 Result[3][3] =
static_cast<T
>(1);
254 template <
typename T>
271 Result[0][1] = c1 * s2;
272 Result[0][2] = s1 * s2;
273 Result[0][3] =
static_cast<T
>(0);
274 Result[1][0] =-c3 * s2;
275 Result[1][1] = c1 * c2 * c3 - s1 * s3;
276 Result[1][2] = c1 * s3 + c2 * c3 * s1;
277 Result[1][3] =
static_cast<T
>(0);
278 Result[2][0] = s2 * s3;
279 Result[2][1] =-c3 * s1 - c1 * c2 * s3;
280 Result[2][2] = c1 * c3 - c2 * s1 * s3;
281 Result[2][3] =
static_cast<T
>(0);
282 Result[3][0] =
static_cast<T
>(0);
283 Result[3][1] =
static_cast<T
>(0);
284 Result[3][2] =
static_cast<T
>(0);
285 Result[3][3] =
static_cast<T
>(1);
289 template <
typename T>
306 Result[0][1] = s1 * s2;
307 Result[0][2] =-c1 * s2;
308 Result[0][3] =
static_cast<T
>(0);
309 Result[1][0] = s2 * s3;
310 Result[1][1] = c1 * c3 - c2 * s1 * s3;
311 Result[1][2] = c3 * s1 + c1 * c2 * s3;
312 Result[1][3] =
static_cast<T
>(0);
313 Result[2][0] = c3 * s2;
314 Result[2][1] =-c1 * s3 - c2 * c3 * s1;
315 Result[2][2] = c1 * c2 * c3 - s1 * s3;
316 Result[2][3] =
static_cast<T
>(0);
317 Result[3][0] =
static_cast<T
>(0);
318 Result[3][1] =
static_cast<T
>(0);
319 Result[3][2] =
static_cast<T
>(0);
320 Result[3][3] =
static_cast<T
>(1);
324 template <
typename T>
340 Result[0][0] = c1 * c3 - c2 * s1 * s3;
341 Result[0][1] = s2* s3;
342 Result[0][2] =-c3 * s1 - c1 * c2 * s3;
343 Result[0][3] =
static_cast<T
>(0);
344 Result[1][0] = s1 * s2;
346 Result[1][2] = c1 * s2;
347 Result[1][3] =
static_cast<T
>(0);
348 Result[2][0] = c1 * s3 + c2 * c3 * s1;
349 Result[2][1] =-c3 * s2;
350 Result[2][2] = c1 * c2 * c3 - s1 * s3;
351 Result[2][3] =
static_cast<T
>(0);
352 Result[3][0] =
static_cast<T
>(0);
353 Result[3][1] =
static_cast<T
>(0);
354 Result[3][2] =
static_cast<T
>(0);
355 Result[3][3] =
static_cast<T
>(1);
359 template <
typename T>
375 Result[0][0] = c1 * c2 * c3 - s1 * s3;
376 Result[0][1] = c3 * s2;
377 Result[0][2] =-c1 * s3 - c2 * c3 * s1;
378 Result[0][3] =
static_cast<T
>(0);
379 Result[1][0] =-c1 * s2;
381 Result[1][2] = s1 * s2;
382 Result[1][3] =
static_cast<T
>(0);
383 Result[2][0] = c3 * s1 + c1 * c2 * s3;
384 Result[2][1] = s2 * s3;
385 Result[2][2] = c1 * c3 - c2 * s1 * s3;
386 Result[2][3] =
static_cast<T
>(0);
387 Result[3][0] =
static_cast<T
>(0);
388 Result[3][1] =
static_cast<T
>(0);
389 Result[3][2] =
static_cast<T
>(0);
390 Result[3][3] =
static_cast<T
>(1);
394 template <
typename T>
410 Result[0][0] = c1 * c2 * c3 - s1 * s3;
411 Result[0][1] = c1 * s3 + c2 * c3 * s1;
412 Result[0][2] =-c3 * s2;
413 Result[0][3] =
static_cast<T
>(0);
414 Result[1][0] =-c3 * s1 - c1 * c2 * s3;
415 Result[1][1] = c1 * c3 - c2 * s1 * s3;
416 Result[1][2] = s2 * s3;
417 Result[1][3] =
static_cast<T
>(0);
418 Result[2][0] = c1 * s2;
419 Result[2][1] = s1 * s2;
421 Result[2][3] =
static_cast<T
>(0);
422 Result[3][0] =
static_cast<T
>(0);
423 Result[3][1] =
static_cast<T
>(0);
424 Result[3][2] =
static_cast<T
>(0);
425 Result[3][3] =
static_cast<T
>(1);
429 template <
typename T>
445 Result[0][0] = c1 * c3 - c2 * s1 * s3;
446 Result[0][1] = c3 * s1 + c1 * c2 * s3;
447 Result[0][2] = s2 *s3;
448 Result[0][3] =
static_cast<T
>(0);
449 Result[1][0] =-c1 * s3 - c2 * c3 * s1;
450 Result[1][1] = c1 * c2 * c3 - s1 * s3;
451 Result[1][2] = c3 * s2;
452 Result[1][3] =
static_cast<T
>(0);
453 Result[2][0] = s1 * s2;
454 Result[2][1] =-c1 * s2;
456 Result[2][3] =
static_cast<T
>(0);
457 Result[3][0] =
static_cast<T
>(0);
458 Result[3][1] =
static_cast<T
>(0);
459 Result[3][2] =
static_cast<T
>(0);
460 Result[3][3] =
static_cast<T
>(1);
464 template <
typename T>
480 Result[0][0] = c2 * c3;
481 Result[0][1] = s1 * s3 + c1 * c3 * s2;
482 Result[0][2] = c3 * s1 * s2 - c1 * s3;
483 Result[0][3] =
static_cast<T
>(0);
485 Result[1][1] = c1 * c2;
486 Result[1][2] = c2 * s1;
487 Result[1][3] =
static_cast<T
>(0);
488 Result[2][0] = c2 * s3;
489 Result[2][1] = c1 * s2 * s3 - c3 * s1;
490 Result[2][2] = c1 * c3 + s1 * s2 *s3;
491 Result[2][3] =
static_cast<T
>(0);
492 Result[3][0] =
static_cast<T
>(0);
493 Result[3][1] =
static_cast<T
>(0);
494 Result[3][2] =
static_cast<T
>(0);
495 Result[3][3] =
static_cast<T
>(1);
499 template <
typename T>
515 Result[0][0] = c1 * c2;
517 Result[0][2] =-c2 * s1;
518 Result[0][3] =
static_cast<T
>(0);
519 Result[1][0] = s1 * s3 - c1 * c3 * s2;
520 Result[1][1] = c2 * c3;
521 Result[1][2] = c1 * s3 + c3 * s1 * s2;
522 Result[1][3] =
static_cast<T
>(0);
523 Result[2][0] = c3 * s1 + c1 * s2 * s3;
524 Result[2][1] =-c2 * s3;
525 Result[2][2] = c1 * c3 - s1 * s2 * s3;
526 Result[2][3] =
static_cast<T
>(0);
527 Result[3][0] =
static_cast<T
>(0);
528 Result[3][1] =
static_cast<T
>(0);
529 Result[3][2] =
static_cast<T
>(0);
530 Result[3][3] =
static_cast<T
>(1);
534 template <
typename T>
550 Result[0][0] = c1 * c2;
551 Result[0][1] = c2 * s1;
553 Result[0][3] =
static_cast<T
>(0);
554 Result[1][0] = c1 * s2 * s3 - c3 * s1;
555 Result[1][1] = c1 * c3 + s1 * s2 * s3;
556 Result[1][2] = c2 * s3;
557 Result[1][3] =
static_cast<T
>(0);
558 Result[2][0] = s1 * s3 + c1 * c3 * s2;
559 Result[2][1] = c3 * s1 * s2 - c1 * s3;
560 Result[2][2] = c2 * c3;
561 Result[2][3] =
static_cast<T
>(0);
562 Result[3][0] =
static_cast<T
>(0);
563 Result[3][1] =
static_cast<T
>(0);
564 Result[3][2] =
static_cast<T
>(0);
565 Result[3][3] =
static_cast<T
>(1);
569 template <
typename T>
585 Result[0][0] = c1 * c3 - s1 * s2 * s3;
586 Result[0][1] = c3 * s1 + c1 * s2 * s3;
587 Result[0][2] =-c2 * s3;
588 Result[0][3] =
static_cast<T
>(0);
589 Result[1][0] =-c2 * s1;
590 Result[1][1] = c1 * c2;
592 Result[1][3] =
static_cast<T
>(0);
593 Result[2][0] = c1 * s3 + c3 * s1 * s2;
594 Result[2][1] = s1 * s3 - c1 * c3 * s2;
595 Result[2][2] = c2 * c3;
596 Result[2][3] =
static_cast<T
>(0);
597 Result[3][0] =
static_cast<T
>(0);
598 Result[3][1] =
static_cast<T
>(0);
599 Result[3][2] =
static_cast<T
>(0);
600 Result[3][3] =
static_cast<T
>(1);
620 Result[0][0] = tmp_ch * tmp_cb + tmp_sh * tmp_sp * tmp_sb;
621 Result[0][1] = tmp_sb * tmp_cp;
622 Result[0][2] = -tmp_sh * tmp_cb + tmp_ch * tmp_sp * tmp_sb;
623 Result[0][3] =
static_cast<T
>(0);
624 Result[1][0] = -tmp_ch * tmp_sb + tmp_sh * tmp_sp * tmp_cb;
625 Result[1][1] = tmp_cb * tmp_cp;
626 Result[1][2] = tmp_sb * tmp_sh + tmp_ch * tmp_sp * tmp_cb;
627 Result[1][3] =
static_cast<T
>(0);
628 Result[2][0] = tmp_sh * tmp_cp;
629 Result[2][1] = -tmp_sp;
630 Result[2][2] = tmp_ch * tmp_cp;
631 Result[2][3] =
static_cast<T
>(0);
632 Result[3][0] =
static_cast<T
>(0);
633 Result[3][1] =
static_cast<T
>(0);
634 Result[3][2] =
static_cast<T
>(0);
635 Result[3][3] =
static_cast<T
>(1);
678 template<
typename T, qualifier Q>
687 template<
typename T, qualifier Q>
703 T C2 =
glm::sqrt(M[0][0]*M[0][0] + M[1][0]*M[1][0]);
713 template <
typename T>
720 T C2 =
glm::sqrt(M[0][1]*M[0][1] + M[1][1]*M[1][1]);
730 template <
typename T>
737 T S2 =
glm::sqrt(M[1][0]*M[1][0] + M[2][0]*M[2][0]);
747 template <
typename T>
754 T S2 =
glm::sqrt(M[1][0]*M[1][0] + M[2][0]*M[2][0]);
764 template <
typename T>
771 T S2 =
glm::sqrt(M[0][1]*M[0][1] + M[2][1]*M[2][1]);
781 template <
typename T>
788 T S2 =
glm::sqrt(M[0][1]*M[0][1] + M[2][1]*M[2][1]);
798 template <
typename T>
805 T S2 =
glm::sqrt(M[0][2]*M[0][2] + M[1][2]*M[1][2]);
815 template <
typename T>
822 T S2 =
glm::sqrt(M[0][2]*M[0][2] + M[1][2]*M[1][2]);
832 template <
typename T>
839 T C2 =
glm::sqrt(M[0][0]*M[0][0] + M[2][0]*M[2][0]);
849 template <
typename T>
856 T C2 =
glm::sqrt(M[1][1]*M[1][1] + M[2][1]*M[2][1]);
866 template <
typename T>
873 T C2 =
glm::sqrt(M[1][2]*M[1][2] + M[2][2]*M[2][2]);
883 template <
typename T>
890 T C2 =
glm::sqrt(M[0][2]*M[0][2] + M[2][2]*M[2][2]);
GLM_FUNC_QUALIFIER vec< L, T, Q > sqrt(vec< L, T, Q > const &x)
Definition func_exponential.inl:128
GLM_FUNC_QUALIFIER vec< L, T, Q > sin(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:41
GLM_FUNC_QUALIFIER vec< L, T, Q > cos(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:50
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Definition quaternion_trigonometric.inl:6
GLM_FUNC_DECL T roll(qua< T, Q > const &x)
Definition quaternion.inl:16
GLM_FUNC_DECL T pitch(qua< T, Q > const &x)
Definition quaternion.inl:22
GLM_FUNC_DECL T yaw(qua< T, Q > const &x)
Definition quaternion.inl:35
GLM_FUNC_QUALIFIER T atan2(T x, T y)
Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what q...
Definition compatibility.hpp:55
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleY(T const &angleY)
Definition euler_angles.inl:25
GLM_FUNC_DECL void extractEulerAngleYZY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:782
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXY(T const &angleX, T const &angleY)
Definition euler_angles.inl:108
GLM_FUNC_DECL void extractEulerAngleZYX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:867
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleY(T const &angleY, T const &angularVelocityY)
Definition euler_angles.inl:74
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZ(T const &angleY, T const &angleZ)
Definition euler_angles.inl:166
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXZ(T const &yaw, T const &pitch, T const &roll)
Definition euler_angles.inl:221
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXY(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:326
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYZ(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:186
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYX(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:291
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYZ(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:396
GLM_FUNC_DECL void extractEulerAngleZXZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:816
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZY(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:361
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZY(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:466
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleX(T const &angleX)
Definition euler_angles.inl:9
GLM_FUNC_DECL void extractEulerAngleZXY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:884
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZ(T const &angleZ)
Definition euler_angles.inl:41
GLM_FUNC_DECL void extractEulerAngleYZX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:850
GLM_FUNC_DECL void extractEulerAngleYXY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:765
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZ(T const &angleX, T const &angleZ)
Definition euler_angles.inl:146
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYX(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:536
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXZ(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:431
GLM_FUNC_DECL void extractEulerAngleXZY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:833
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXY(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:571
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZX(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:501
GLM_FUNC_DECL void extractEulerAngleXYZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:697
GLM_FUNC_DECL void extractEulerAngleXZX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:731
GLM_FUNC_DECL mat< 2, 2, T, defaultp > orientate2(T const &angle)
Definition euler_angles.inl:641
GLM_FUNC_DECL mat< 3, 3, T, defaultp > orientate3(T const &angle)
Definition euler_angles.inl:658
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZY(T const &angleZ, T const &angleY)
Definition euler_angles.inl:176
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleX(T const &angleX, T const &angularVelocityX)
Definition euler_angles.inl:57
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleZ(T const &angleZ, T const &angularVelocityZ)
Definition euler_angles.inl:91
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZX(T const &t1, T const &t2, T const &t3)
Definition euler_angles.inl:256
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYX(T const &angleY, T const &angleX)
Definition euler_angles.inl:127
GLM_FUNC_DECL void extractEulerAngleYXZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:714
GLM_FUNC_DECL void extractEulerAngleXYX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:748
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZX(T const &angle, T const &angleX)
Definition euler_angles.inl:156
GLM_FUNC_DECL mat< 4, 4, T, Q > orientate4(vec< 3, T, Q > const &angles)
Definition euler_angles.inl:689
GLM_FUNC_DECL mat< 4, 4, T, defaultp > yawPitchRoll(T const &yaw, T const &pitch, T const &roll)
Definition euler_angles.inl:606
GLM_FUNC_DECL void extractEulerAngleZYZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Definition euler_angles.inl:799
Core features
Definition common.hpp:21
Definition qualifier.hpp:36
Definition qualifier.hpp:35