关于欧拉角的万象死锁问题,看过好多文章,也看过好多视频动画模拟解释,看这些文章和动画解释的时候,看起来很有道理,但是回头再来想一下,其实自己根本就不理解为什么会有万象死锁。其实不能怪自己,因为大部分这些文章的并有没有真正解释和理解万象死锁。
自己去梳理了一下,从线性代数计算上去解释它:
1:首先三个轴的旋转矩阵如下:
2:根据矩阵变换的联合,最终的旋转变化矩阵是 三个子矩阵连乘:(连乘顺序是 z x y,其中z轴角度是r, x轴角度是p , y轴角度是h)
公式如下:
得到如下最终矩阵
我们看到最终的矩阵,当我们让x轴旋转的角度是90度时,也就是p=90.得到如下公式
进一步利用三角公式转换,得到如下:
发现最终的旋转只与 r+h 有关,只要r+h的和相等,最终得到的是同一个旋转。这样的话就失去r和h的独立性。比如r=10 ,p=90,h=40 和 r = 20,p=90,h=30 .代入到旋转矩阵中得到的是相同的旋转矩阵。如果把r+h定义为一个新的角度a,那么旋转矩阵就和a一个角度有关,失去了第三个角度。
本人qq:344810449,欢迎探讨研究。
有unity,shader,小程序,软件开发,游戏制作等需求也可以联系本人,非常乐于助人。
如果觉得还不错给博主来个小惊喜,纯属自愿,不强求: