|
@@ -7,61 +7,69 @@
|
|
|
|
|
|
var MathUtils = {
|
|
|
|
|
|
- setQuaternionFromProperEuler: function ( q, a, b, c, order ) {
|
|
|
|
|
|
- // Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles
|
|
|
+ /**
|
|
|
+ * @param {Quaternion} q
|
|
|
+ * @param {number} a
|
|
|
+ * @param {number} b
|
|
|
+ * @param {number} c
|
|
|
+ * @param {string} order
|
|
|
+ */
|
|
|
+ setQuaternionFromProperEuler: function (q, a, b, c, order) {
|
|
|
|
|
|
- // rotations are applied to the axes in the order specified by 'order'
|
|
|
- // rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'
|
|
|
- // angles are in radians
|
|
|
+ // Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles
|
|
|
|
|
|
- var cos = Math.cos;
|
|
|
- var sin = Math.sin;
|
|
|
+ // rotations are applied to the axes in the order specified by 'order'
|
|
|
+ // rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'
|
|
|
+ // angles are in radians
|
|
|
|
|
|
- var c2 = cos( b / 2 );
|
|
|
- var s2 = sin( b / 2 );
|
|
|
+ var cos = Math.cos;
|
|
|
+ var sin = Math.sin;
|
|
|
|
|
|
- var c13 = cos( ( a + c ) / 2 );
|
|
|
- var s13 = sin( ( a + c ) / 2 );
|
|
|
+ var c2 = cos(b / 2);
|
|
|
+ var s2 = sin(b / 2);
|
|
|
|
|
|
- var c1_3 = cos( ( a - c ) / 2 );
|
|
|
- var s1_3 = sin( ( a - c ) / 2 );
|
|
|
+ var c13 = cos((a + c) / 2);
|
|
|
+ var s13 = sin((a + c) / 2);
|
|
|
|
|
|
- var c3_1 = cos( ( c - a ) / 2 );
|
|
|
- var s3_1 = sin( ( c - a ) / 2 );
|
|
|
+ var c1_3 = cos((a - c) / 2);
|
|
|
+ var s1_3 = sin((a - c) / 2);
|
|
|
|
|
|
- if ( order === 'XYX' ) {
|
|
|
+ var c3_1 = cos((c - a) / 2);
|
|
|
+ var s3_1 = sin((c - a) / 2);
|
|
|
|
|
|
- q.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );
|
|
|
+ if (order === 'XYX') {
|
|
|
|
|
|
- } else if ( order === 'YZY' ) {
|
|
|
+ q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);
|
|
|
|
|
|
- q.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );
|
|
|
+ } else if (order === 'YZY') {
|
|
|
|
|
|
- } else if ( order === 'ZXZ' ) {
|
|
|
+ q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);
|
|
|
|
|
|
- q.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );
|
|
|
+ } else if (order === 'ZXZ') {
|
|
|
|
|
|
- } else if ( order === 'XZX' ) {
|
|
|
+ q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);
|
|
|
|
|
|
- q.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );
|
|
|
+ } else if (order === 'XZX') {
|
|
|
|
|
|
- } else if ( order === 'YXY' ) {
|
|
|
+ q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);
|
|
|
|
|
|
- q.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );
|
|
|
+ } else if (order === 'YXY') {
|
|
|
|
|
|
- } else if ( order === 'ZYZ' ) {
|
|
|
+ q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);
|
|
|
|
|
|
- q.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );
|
|
|
+ } else if (order === 'ZYZ') {
|
|
|
|
|
|
- } else {
|
|
|
+ q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);
|
|
|
|
|
|
- console.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order.' );
|
|
|
+ } else {
|
|
|
|
|
|
- }
|
|
|
+ console.warn('THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order.');
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
};
|
|
|
|
|
|
-export { MathUtils };
|
|
|
+export {MathUtils};
|