如何从旋转矩阵, 求旋转角(非欧拉角)

witsnail 2015-01-15 08:59:03
三个角a, b, c分别是围绕X, Y, Z轴旋转的角度, 易知
Mr = Ma * Mb * Mc;
Mr为最终旋转矩阵, 代码如下所示:
matrix4_t& Rotate(Real alpha, Real beta, Real gamma) {
Real sa, ca, sb, cb, sg, cg;
SinCos(alpha, sa, ca);
SinCos(beta, sb, cb);
SinCos(gamma, sg, cg);

m11 = cb * cg;
m12 = cb * sg;
m13 = -sb;

m21 = sa * sb * cg - ca * sg;
m22 = sa * sb * sg + ca * cg;
m23 = sa * cb;

m31 = ca * sb * cg + sa * sg;
m32 = ca * sb * sg - sa * cg;
m33 = ca * cb;

m41 = m42 = m43 = m14 = m24 = m34 = 0.0f;
m44 = 1.0f;
return *this;
}

问题: 现在已知旋转矩阵Mr, 如何求a, b, c的角度.
难点: 当sin(b)等于1或-1时, cos(b)等于0, 此时不能直接求出 cos(a) 和 cos(c).

弱弱问一句, 这三个角数学上称什么角?
...全文
1938 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kisskk2010 2015-01-22
  • 打赏
  • 举报
回复

604

社区成员

发帖
与我相关
我的任务
社区描述
异构开发技术
社区管理员
  • OpenCL和异构编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧