从旋转矩阵获取绕 y 轴的旋转
Posted
技术标签:
【中文标题】从旋转矩阵获取绕 y 轴的旋转【英文标题】:Get rotation about y-axis from rotation matrix 【发布时间】:2017-10-10 16:45:28 【问题描述】:我不知道如何从我的对象的模型矩阵中提取围绕全局 y 轴的旋转。
我的对象的当前模型矩阵是 glm::mat4,我需要取消围绕 y 轴的旋转。
glm 中是否有我没有注意到的功能?
【问题讨论】:
【参考方案1】:您必须将矩阵的旋转部分转换为欧拉角。这不是一个简单的操作。我不知道“glm”是否有这个功能,但有一个代码(可能存在其他方法)将 4x4 矩阵的旋转部分转换为 X、Y 和 Z 欧拉角:
function Matrix4ToEuler(OutEuler, InMatrix4)
let cy = Math.sqrt(InMatrix4[0] * InMatrix4[0] + InMatrix4[1] * InMatrix4[1]);
if(cy > 0.001)
OutEuler.x = Math.atan2(InMatrix4[6], InMatrix4[10]);
OutEuler.y = Math.atan2(-InMatrix4[2], cy);
OutEuler.z = Math.atan2(InMatrix4[1], InMatrix4[0]);
else
OutEuler.x = Math.atan2(-InMatrix4[9], InMatrix4[5]);
OutEuler.y = Math.atan2(-InMatrix4[2], cy);
OutEuler.z = 0;
【讨论】:
以上是关于从旋转矩阵获取绕 y 轴的旋转的主要内容,如果未能解决你的问题,请参考以下文章