使用 Eigen 将变换矩阵从 world-space 转换为 camera-space
Convert a transformation matrix from world-space to camera-space using Eigen
我在世界 space 中有一个转换矩阵。我需要将它转换为本地(相机)space.
我已经完成了这个(本地 - 世界)的反向使用:
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();
之前开始使用的矩阵
我在世界 space 中有一个转换矩阵。我需要将它转换为本地(相机)space.
我已经完成了这个(本地 - 世界)的反向使用:
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();