旋转矩阵与欧式变换:
其中e1,e2,e3和e1',e2',e3'分别为旋转变换前后的坐标系的标准正交基
上式左乘:
则有:
其中中间的矩阵定义为R,它描述了旋转本身,因此称之为旋转矩阵——旋转矩阵是行列式为1的正交矩阵。(行列式为1的正交矩阵也是一个旋转矩阵)
特殊正交群(Special Orthogonal Group):
旋转矩阵的逆(或转置)刻画了一个相反的旋转。
另外,如果再添加一个平移变换,则表达式可以写为:
变换矩阵与齐次坐标:
其中T称为变换矩阵,这里我们再一个三维向量为末尾添加一个1,将其变成了四维向量,称为齐次坐标,这是一个数学技巧。通过齐次坐标,虽然增加了一个*度,但是允许我们把变换写成线性的形式。
特殊欧式群(Special Euclidean Group):
另外,自然地,可以得到反变换:
Eigen:
Eigen没有源文件,只有头文件,所以也就不需要做链接(target_link_libraries())。
旋转向量与欧拉角:
旋转向量(角轴):3个量,没有约束
旋转向量与旋转矩阵只是表达方式不同,但是表达的东西可以是同一个。角轴与旋转矩阵的转换关系,可以由罗德里格斯公式来描述:
角轴转旋转矩阵:
旋转矩阵转角轴:
转轴 n 是矩阵 R 特征值 1 对应的特征向量,求解此方程,再归一化,就得到了旋转轴
欧拉角:把一个旋转分解成 3 次绕不同轴的旋转
欧拉角的一个重大缺点是会碰到著名的万向锁问题:在俯仰角为 ±90 ◦ 时,第一次旋转与第三次旋转将使用同一个轴,使得系统丢失了一个*度(由 3 次旋转变成了 2 次旋转)。这被称为奇异性问题,在其他形式的欧拉角中也同样在。
四元数(Quaternion):
四元数既是紧凑的,又没有奇异性。
虚部之间运算关系:
四元数的运算法则:
1、加减法:
2、乘法:
3、模长:
4、共轭:
5、逆:
单位四元数的逆与共轭相同
6、数乘:
四元数表示旋转:
把三维空间的点p用一个虚四元数来描述:
旋转后得到的变换点,可以表示为这样的乘积:
这里的乘法均为四元数乘法,结果也是四元数。
最后把 p ′ 的虚部取出,即得旋转之后点的坐标。
并且,可以验证,计算结果的实部为0,故为纯虚四元数。
四元数与旋转矩阵的转换:
相似、仿射、射影变换:
Eigen几何模块: