查看: 976|回复: 5

请教Array矩阵反算的问题,谢谢

[复制链接]

该用户从未签到

发表于 2012-4-4 12:56:34 | 显示全部楼层 |阅读模式
如果矩阵里的旋转是经过多次不同轴旋转的复合旋转,getRotate()得到的是Quad,能否对其进行反算,折算到沿着X,Y,Z轴的旋转? 就像getScale()得到沿XYZ的缩放值一样。

该用户从未签到

发表于 2012-4-5 09:04:43 | 显示全部楼层
这个我觉得不行,因为

  物体的任何一种旋转都可分解为分别绕三个轴的旋转,但分解方式不唯一。如:

假设绕y轴旋转为heading,绕x轴旋转为pitch,绕z轴旋转为bank,则先heading45°再pitch90°等价于先pitch90°再bank45°。
  
  如果不加约束的话,分解的解不唯一。

该用户从未签到

 楼主| 发表于 2012-4-5 09:55:24 | 显示全部楼层
CWorld 发表于 2012-4-5 09:04
这个我觉得不行,因为

  物体的任何一种旋转都可分解为分别绕三个轴的旋转,但分解方式不唯一。如:

谢谢CWorld的解答,能分解也行,有什么函数可以分解?  我想先把Quat分解到x,y,Z后再合成Quat,比如从3dmax里读取的Quat分解到3个轴上后导出,再在自己开发的平台上合成Quat,只要合成后物体的姿态对就行。

该用户从未签到

发表于 2012-4-5 10:56:43 | 显示全部楼层
由四元数得到欧拉角    需要确定旋转顺序   
直接google四元数到欧拉角   就OK了

该用户从未签到

发表于 2012-4-5 16:15:54 | 显示全部楼层
我看这里有一个邮件列表链接说明了 从四元数到欧拉角的转换:http://lists.openscenegraph.org/ ... ovember/019366.html
不过没有说明旋转的顺序和约束的角度,可以参考下。

该用户从未签到

发表于 2012-4-6 10:23:09 | 显示全部楼层
从四元数到欧拉角,如果不知道级联顺序的话,就不能反算出来
如果四元数本身也经过了多次级联,那么理论上不可能再反算出来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表