matrix - Eigen :矩阵到四元数和后面有不同的结果

标签 matrix eigen quaternions

我使用 Eigen 库将矩阵转换为四元数,但是当我将其中一个矩阵转换为四元数并将其烧回时,它变成了另一个矩阵,即单位矩阵。我使用的旋转矩阵是从变换矩阵分解而来的。

    Eigen::Matrix3f R3d = R.topLeftCorner<3,3>();
    *Rquat = R3d;

    R3d = (*Rquat).normalized().toRotationMatrix();

什么可能导致这个问题? This is the matrix before change to quaternion

This is the matrix when I turn it back form the quaternion

最佳答案

刚刚检查了 Eigen's matrix to quaternion conversion 的实现.它基于 Ken Shoemake 的“四元数微积分和快速动画”。

正如人们在分析源代码时所看到的那样,这假设矩阵确实是一个旋转矩阵(或接近一个)。事实上,所有具有 M.trace()>0 的对称矩阵都会产生(缩放的)恒等四元数。如果您对无效旋转矩阵有任何其他期望,则需要实现您自己的转换方法。

关于matrix - Eigen :矩阵到四元数和后面有不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43896041/

相关文章:

r - R 模型矩阵中因子的所有级别

javascript - 使用 THREE.js 方法计算相机偏航 Angular 的正确方法是什么?

algorithm - MATLAB中的相邻灰度相关性矩阵(NGLDM)

python-3.x - 使用图像的每个像素的每个位制作 8 个图像

c++ - 将 vector 堆叠到特征矩阵中

c++ - 使用 Eigen 密集矩阵数据结构时应该期待什么?

wolfram-mathematica - Mathematica 中四元数范数的导数

c++ - 如何在现代 opengl 中正确实现四元数相机?

使用链表创建矩阵

c++ - 如何在Eigen中使用Matrix类型参数声明函数?