在一个坐标系下,旋转有两种方式:
1、按照参考的坐标系固定轴进行旋转。Fixed angles
2、对当前旋转的坐标自己的轴进行旋转。Euler angles(欧拉角)
一、Fixed Angles
下图为按照固定轴进行旋转。 可以看出进行了3次的旋转,3次的旋转依然是按照之前对点选的方式,最先选择的先左乘。
注:其中Fixed Aangles中先x60 y30 和 先y60 x30 最终旋转的结果不同。
1、Fixedn Angles -1
旋转顺序为X-Y-Z,得到的旋转矩阵为之前对轴旋转任意角度公式相乘所得的。得到旋转矩阵
逆算:
可以看出,再于r31用atan算出β角度。
β角度出来之后在通过r21和r11再算出α角度。γ角度也可以用r32和r33计算出来。
二、Euler Angles
这种方式旋转调换旋转角度依然得到的不是同一个姿态。欧拉角的方式旋转和Fixed Angeles方式不同相当于得到最终的姿态然后返回之前的位置,所以将最后一次旋转矩阵放在右侧。
Euler Angles 中x60 30 和Fixed Angles x30 y60旋转的到的旋转矩阵相同
Euler Angles-Z-Y-Z旋转方式
逆算:
和之前的Fixed Angles相同的方式进行计算:两种特殊情况当β=0和180时需要讨论计算
表示的旋转的方法还有很多比如使用旋转轴和四元数表示旋转。
三、Homogeneous transformation matrix 变化矩阵
这是将三维矩阵齐次变化,这样旋转和平移就可以使用一个矩阵的方式进行计算。
接下来验证变化矩阵能否正确的表示旋转和平移:
当只有旋转时,说明旋转矩阵的部分为单位矩阵。
当只有旋转是,说明平移的位置位0向量:
验证出两种方式的正确性,将两种方式进行结合:
注:变化矩阵的先平移在旋转和先选择再平移不同
先平移的换平移的量也会进行一次旋转,这样得到的平移就不是预期想要的平移了。
我们表示旋转平移也可以通过另一种方式表示,假设P点不动,Fram动来讨论。Frame进行反向的操作。如:之前是平移【10,5,0】那现在是坐标系平移[-10,-5,0];之前旋转30(逆时针),那现在是坐标轴顺时针旋转30。
四、Transformation Matrix的运算
变化矩阵可以进行连续运算,可以看出旋转部分和之前的旋转矩阵乘法相同,值平移部分Pc原地加上A到B的旋转,因为这次的平移是在B坐标坐标系的,要将这次平移转换到A坐标下。
同样进行三次旋转后面的平移都要转换都A坐标系下。变化矩阵求逆:
我们知道逆矩阵相乘为单位矩阵,我们只需要创造出单位矩阵即可。
旋转部分很简单,只需要乘反对陈矩阵就可以得到单位阵。接下来只需要处理平移向量等于0即可。
这样就可以算出T的逆矩阵为: