我在世界空间中有一个转换矩阵。我需要将其转换为本地(相机)空间。
我已经完成了这个(本地 - 世界)的反向使用:
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
(R1
是 R0
的倒数)
-R1 * C0 = T0
因此,要从 C0 得到 T0,您需要将 C0 取反并左乘 R0 的倒数,这将是您在调用 R0.transposeInPlace(); 之前开始使用的矩阵;
关于c++ - 使用 Eigen 将变换矩阵从世界空间转换为相机空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511488/