提交 7bf7a604 编写于 作者: G gbath

Added MathUtils class for quaternion rotations by Proper Euler angles.

上级 b8e9e64a
/**
* @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);
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册