123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /**
- * @author WestLangley
- * @author thezwap
- */
- THREE.MathUtils = {
- setQuaternionFromProperEuler: function (q, a, b, c, order) {
- var cos = Math.cos;
- var sin = Math.sin;
- var c1 = cos(a / 2);
- var c2 = cos(b / 2);
- var c3 = cos(c / 2);
- var s1 = sin(a / 2);
- var s2 = sin(b / 2);
- var s3 = sin(c / 2);
- var c13 = cos((a + c) / 2);
- var s13 = sin((a + c) / 2);
- var c1_3 = cos((a - c) / 2);
- var s1_3 = sin((a - c) / 2);
- var c3_1 = cos((c - a) / 2);
- var s3_1 = sin((c - a) / 2);
- var qx = 0;
- var qy = 0;
- var qz = 0;
- var qw = 0;
- if (order === 'XYX') {
- qx = c2 * s13;
- qy = s2 * c1_3;
- qz = s2 * s1_3;
- qw = c2 * c13;
- } else if (order === 'YZY') {
- qx = s2 * s1_3;
- qy = c2 * s13;
- qz = s2 * c1_3;
- qw = c2 * c13;
- } else if (order === 'ZXZ') {
- qx = s2 * c1_3;
- qy = s2 * s1_3;
- qz = c2 * s13;
- qw = c2 * c13;
- } else if (order === 'XZX') {
- qx = c2 * s13;
- qy = s2 * s3_1;
- qz = s2 * c3_1;
- qw = c2 * c13;
- } else if (order === 'YXY') {
- qx = s2 * c3_1;
- qy = c2 * s13;
- qz = s2 * s3_1;
- qw = c2 * c13;
- } else if (order === 'ZYZ') {
- qx = s2 * s3_1;
- qy = s2 * c3_1;
- qz = c2 * s13;
- qw = c2 * c13;
- }
- else {
- console.warn('THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order.');
- }
- q.set( qx, qy, qz, qw);
- }
- }
|