最近我一直在想绕自身轴旋转,为什么可以看做是绕世界坐标轴旋转,只不过旋转顺序要反过来。虽然网上有很多文章讲解,我也努力去理解,可在头脑里,始终很难理解它。
后来无意中看到某点绕任意向量旋转,可以先把这任意向量旋转到世界坐标系的某个轴,如先把这任意向量绕世界坐标系的Y轴移动XY的平面上,再绕Z轴旋转到X轴上,这样任意向量就和X轴重合了。然后某点绕任意向量的旋转可以看做是绕世界坐标系的X轴旋转,旋转后,再执行之前为重合到X轴的逆操作,执行逆操作后,就是某点绕任意向量旋转的最终结果。
说实话,看这描述,我又想了会,才有点明白,因为绕任意向量旋转,在绕这任意向量旋转前,这任意向量如果动了,其实也无所谓,因为点绕任意向量的相对位置是不会变的,所以先求出点绕任意向量的相对位置,然后再叠加任意向量自身的变化,即可回到世界坐标系的位置。这里其实很重要,就是最后一步是重新执行任意向量自身的操作。
这个我想通后,我突然意识到,绕自身轴旋转,可能也是这么操作的,下面我们证明下。
设某物体,它的初始自身坐标系与世界坐标系对齐,初物体上的某点 ,第一次绕X轴旋转,旋转向量为A,即第一次旋转后
这时再绕物体自身的Y轴旋转,注意此时物体的Y轴与世界坐标系的Y轴不再对齐,所以此时无法直接旋转。
为了能用简单的绕世界坐标系的Y轴旋转,我们先将物体逆旋转,转回到物体初始坐标系的样子
此时物体坐标系又与世界坐标系对齐了,这时绕物体Y轴旋转,可以看做是绕世界坐标系Y轴旋转,设绕世界坐标系Y轴的旋转矩阵为B,即
详细推导过程
此时除了刚刚旋转的B起了效果,之前旋转的A被丢弃了,所以需要执行次A旋转,即
到这时是不是突然发现绕自身坐标轴旋转居然可以用绕世界坐标系旋转的方式来计算了,只不过计算顺序相反,感觉好神奇,头脑还是很难想象,这时我只能相信这推导的公式,直接套用了。
此时物体已经绕坐标轴的X、Y轴旋转了,如果它还要绕Z轴旋转,设绕Z轴旋转的矩阵为C,为了用绕世界坐标轴的Z轴旋转,又需要先把物体还原到初始坐标系的样子。
这时唯一需要注意的是此时的是先执行了B旋转再执行了A旋转,所以为到初始的,需要逆旋转2次,那是先逆转A还是先逆转B呢?因为,A对来说是最后一次的旋转,我们先执行A的逆操作。
再执行B的逆操作,设I为单位矩阵
从上面可以看出,逆旋转的顺序确实需要与之前的旋转倒序,只有倒序,才能得到单位矩阵,从物体回到原来的样子。
现在物体又回到初始坐标系的位置了,此时绕Z轴旋转,可以看做是绕世界坐标系的Z轴旋转,即
然后,再把B、A的旋转施加回去,又因为刚才为回到初始坐标系,执行的操作是
所以需要用对称的方式,再逆旋转,即
上面绕自身系的旋转矩阵就已经证明完毕了。
下面简单的总结下,绕世界系的相乘顺序与绕自身坐标系的相乘顺序相反,如
绕世界坐标系:
绕自身坐标系: