Преобразование матрицы преобразования из мирового пространства в пространство камеры с помощью Eigen

У меня есть матрица трансформации в мировом пространстве. Мне нужно преобразовать его в локальное (камера) пространство.

Я сделал обратное (Локальное к миру), используя:

    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

Решение

Обязательно изучите линейную алгебру, если хотите продолжить работу с матрицами.

В вашем случае вы должны быть в состоянии решить для T0, если вы умножаете влево на обратную матрицу с обеих сторон:

C0 = -R0 * T0

-R1 * C0 = -R1 * -R0 * T0 (R1 обратная R0)

-R1 * C0 = T0

Таким образом, чтобы получить T0 из C0, вы должны отрицать и умножать влево C0 на обратное к R0, которое будет матрицей, с которой вы начали, прежде чем вызывать R0.transposeInPlace();

2

Другие решения

Других решений пока нет …