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

标签 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

我可以简单地运行这个完全相同的东西来以另一种方式反转它吗?或者它是一个不同的等式?

谢谢。

最佳答案

如果您想继续使用矩阵,一定要学习线性代数。

在您的情况下,如果您在两侧左乘矩阵逆,您应该能够求解 T0:

C0 = -R0 * T0

-R1 * C0 = -R1 * -R0 * T0(R1R0 的倒数)

-R1 * C0 = T0

因此,要从 C0 得到 T0,您需要将 C0 取反并左乘 R0 的倒数,这将是您在调用 R0.transposeInPlace(); 之前开始使用的矩阵;

关于c++ - 使用 Eigen 将变换矩阵从世界空间转换为相机空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511488/

相关文章:

c++ - 用于眼动追踪的虹膜到屏幕计算

没有构造函数的类中的 C++ 非静态常量成员

c++ - 在不使用第三个数组的情况下交换两个变量的值

c++ - Eigen:如何防止大对象的额外拷贝;分配给结果而不实现 RHS 上的完整矩阵

c++ - glm::translate - 它是否从 vector 构建矩阵?

algorithm - 二维坐标归一化

c++ - 功能范围不正确的输出

c++ - 使用 Eigen 与双指针的矩阵表示

python - 是否可以将 matplotlib 注释锚定到 x 轴中的数据坐标,但锚定到 y 轴中的相对位置?

c++ - 具有C++ 11多线程的特征库