Eigen::Quaterniond 解析

在四元数与四元数相乘中,Eigen::Quaterniond A,B A*B和B*A的区别是什么?

Eigen::Quaterniond是表示四元数的类,四元数的乘法是 非交换 的,也就是说,A * BB * A 结果通常不同。

区别:

  • A * B: 这是先应用四元数 B 旋转,然后应用四元数 A 旋转,意味着 AB 施加旋转作用。
  • B * A: 这是先应用四元数 A 旋转,然后应用四元数 B 旋转,意味着 BA 施加旋转作用。

物理意义:

四元数旋转的乘法顺序会影响最终的旋转方向,通常在几何变换中:

  • A * B 代表的是先执行 B 的旋转,再执行 A 的旋转,按顺序执行。
  • B * A 代表的是先执行 A 的旋转,再执行 B 的旋转。

假设四元数 A 代表绕某个轴的旋转,而四元数 B 代表绕另一个轴的旋转。如果顺序不同,最终的旋转方向会不同。即使 AB 是相同的旋转操作,换乘顺序会改变结果。

Eigen::Quaterniond数据结构

Eigen::Quaterniond 类使用以下数据结构来存储四元数:

  1. 标量部分(Real part):表示四元数的实部,通常记为 w。
  2. 向量部分(Imaginary part):表示四元数的虚部,通常记为 x,y,z,它们构成一个三维向量。

内部数据存储是以一组浮动的数值来表示的,通常是一个 Eigen::Vector4d,这表示四元数的4个分量:(w, x, y, z)

通过四元数可以对向量进行旋转。假设有一个旋转的四元数 q,可以使用 q * vector 来旋转一个三维向量

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值