Eigen中Quaternion的一些小细节
参考: http://eigen.tuxfamily.org/dox/classEigen_1_1Quaternion.html
针对一个刚体的旋转,我们可以用欧拉角,旋转矩阵,旋转向量,四元数等等方式来表达. 四元数是一种抽象的, 但是数学表达效果较好的一种旋转表达方式, 因为它相比与欧拉角,不存在奇异性;
相比于旋转矩阵也更加紧凑,冗余性较低. 不过四元数也有缺点,就是太过于抽象,运算比较复杂. 不过,在平常的使用中,我们可以借助Eigen这类的开源矩阵运算库来简化我们对这类复杂数据类型的计算和使用.Eigen中四元数可以用Eigen::Quaterniond(double类型)或者Eigen::Quaternionf(float类型)表示. 在Eigen中的四元数可以通过如下方式构造:
Quaternion (const Scalar &w, const Scalar &x, const Scalar &y, const Scalar &z)
w是四元数的实部, x,y,z 分别是四元数的虚部( PS : 构造的时候w在前面 ). 但是,这里有一个坑--------虽然构造的时候w在前面, 但是 在实际的内存中, 四元数四个元素的顺序却是 x, y, z, w . 可以通过下面的代码去提取四元数的元素验证:
Eigen::Vector4d q = q_AB.coeffs();
所以,当我们使用 Eigen::Map
【Eigen中Quaternion的一些小细节】
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理