将欧拉角转换为四元数时调整XYZ旋转顺序的技术咨询
弧度制XYZ欧拉角转四元数实现
嘿,分享一个我常用的将弧度制XYZ欧拉角转换为四元数的代码实现,直接就能用:
// 输入:x, y, z 为弧度制的欧拉角(分别对应绕X、Y、Z轴的旋转角度) function eulerToQuaternion(x, y, z) { const c1 = Math.cos(x / 2); const c2 = Math.cos(y / 2); const c3 = Math.cos(z / 2); const s1 = Math.sin(x / 2); const s2 = Math.sin(y / 2); const s3 = Math.sin(z / 2); // 返回的四元数格式为 [w, x, y, z] return [ c1 * c2 * c3 - s1 * s2 * s3, s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, ]; }
需要注意的是,这个代码生成的四元数遵循X-Y-Z内旋旋转顺序——也就是先执行绕X轴的旋转,接着绕Y轴,最后绕Z轴。如果你的项目需要其他旋转顺序(比如外旋或者不同轴的排列),就得调整公式里正弦和余弦项的组合方式啦。
内容的提问来源于stack exchange,提问作者treeseal7
相关产品推荐
相关产品推荐

