关于旋转矩阵连乘顺序的问题

lihaiecnu OpenGL 变换的组合 最后由 lihaiecnu 于2015年11月17日回复

  • 7 解决
  • 3.6k 浏览

老师,如图所示,您在讲到把旋转的Vector3f分量改变成矩阵的时候,分别计算关于绕x轴,y轴,z轴旋转的变换矩阵rx,ry,rz,然后把这三个变换矩阵相乘。问题来了,为什么 相乘的顺序是rz*ry*rx,而不应该是按顺序rx*ry*rz吗?这一点您在视频当中没有讲,但我觉得应该比较关键

QQ截图20151117104628.png

  • liuyx23 2015年11月17日 回答 #2楼
  • 嗯,这点确实挺重要,初学者也很容易产生困惑,可能我只在前文中有提过,讲到具体构造旋转矩阵时没有重提顺序问题,非常感谢您的提醒,祝学习顺利!

  • 0 评论
  • lihaiecnu 2015年11月17日 回答 #3楼
  • #2楼  @liuyx23  老师,我刚上传图片,您重新看下,关键为什么绕各个轴旋转的矩阵相乘是如图所示的顺序呢

  • 0 评论
  • liuyx23 2015年11月17日 回答 #5楼
  • #4楼  @lihaiecnu 这个顺序的规定,是符合我们对显示世界的理解,以转头为例:我们看斜上方,拆分其实是先左右转头,然后向上抬头;如果先抬头,你头顶已经不是原来的上了,这时左右转头,是绕着当前头顶方向为轴转,这就不是你想看的方向了。   不知这么说您能否理解,可以更改代码,来验证自己的想法,动手尝试一下。

  • 0 评论
  • lihaiecnu 2015年11月17日 回答 #6楼
  • #5楼  @liuyx23  道理我都懂,然而那就该例子而言,可以先让三棱锥沿x轴转动,再沿y轴转动,最后沿z转动,既rx*ry*rz有何不可?为何一定要按照rz*ry*rx的顺序呢?难道仅仅是为了在窗口有更好的显示效果才这么做?

  • 0 评论