使用Eigen将变换矩阵从世界空间转换为相机空间

时间:2017-02-28 14:34:24

标签: c++ eigen coordinate-transformation

我在世界空间中有一个变换矩阵。我需要将它转换为本地(相机)空间。

我使用以下方法完成了(本地到世界)的反向:

    Eigen::Matrix3f R0; //rotation matrix
    Eigen::Vector3f T0; // xyz translation values
    Eigen::Vector3f C0; //result

    R0.transposeInPlace();  //invert rotation matrix

    C0 = -R0 * T0;   //return world-space coordinate

我可以简单地运行同样的东西来反转它吗?或者它是一个不同的等式?

谢谢。

1 个答案:

答案 0 :(得分:2)

如果你想继续使用矩阵,一定要研究线性代数。

在你的情况下,如果你左右乘以两边的矩阵逆,你应该能够求解T0:

C0 = -R0 * T0

-R1 * C0 = -R1 * -R0 * T0R1R0)的倒数

-R1 * C0 = T0

所以要从C0得到T0,你要否定并将C0左移乘R0的倒数,这就是你在调用R0.transposeInPlace();之前开始的矩阵