在四元数与四元数相乘中,Eigen::Quaterniond A,B A*B和B*A的区别是什么?
Eigen::Quaterniond是表示四元数的类,四元数的乘法是 非交换 的,也就是说,A * B 和 B * A 结果通常不同。
区别:
A * B: 这是先应用四元数B旋转,然后应用四元数A旋转,意味着A对B施加旋转作用。B * A: 这是先应用四元数A旋转,然后应用四元数B旋转,意味着B对A施加旋转作用。
物理意义:
四元数旋转的乘法顺序会影响最终的旋转方向,通常在几何变换中:
A * B代表的是先执行B的旋转,再执行A的旋转,按顺序执行。B * A代表的是先执行A的旋转,再执行B的旋转。
假设四元数 A 代表绕某个轴的旋转,而四元数 B 代表绕另一个轴的旋转。如果顺序不同,最终的旋转方向会不同。即使 A 和 B 是相同的旋转操作,换乘顺序会改变结果。
Eigen::Quaterniond数据结构
Eigen::Quaterniond 类使用以下数据结构来存储四元数:
- 标量部分(Real part):表示四元数的实部,通常记为 w。
- 向量部分(Imaginary part):表示四元数的虚部,通常记为 x,y,z,它们构成一个三维向量。
内部数据存储是以一组浮动的数值来表示的,通常是一个 Eigen::Vector4d,这表示四元数的4个分量:(w, x, y, z)。
通过四元数可以对向量进行旋转。假设有一个旋转的四元数 q,可以使用 q * vector 来旋转一个三维向量
9787

被折叠的 条评论
为什么被折叠?



