Учитывая евклидово преобразование с помощью матрицы вращения 3x3 R
и трехмерного вектора смещения t
, как можно реализовать евклидово преобразование с помощью Eigen::Transform
?
X = R * X + t
Мой текущий подход не работает:
Eigen::Transform<Type, 3, Eigen::Projective> transformation;
...
Eigen::AngleAxis rotation(R);
Eigen::Translation<Type,3> translation(t);
transformation = translation * rotation;
Теперь я хочу применить его по столбцам к большему набору векторов, то есть к матрице 3xN X
, где каждый столбец представляет вектор, который нужно преобразовать, т.е.
X = transformation * X
Но это не работает и выдает утверждение:
test-depth.exe: /usr/include/eigen3/Eigen/src/Core/Product.h:133: Eigen::Product<Lhs, Rhs, Option>::Product(const Lhs&, const Rhs&) [with _Lhs = Eigen::Matrix<double, 4, 4>; _Rhs = Eigen::Matrix<double, -1, -1>; int Option = 0; Eigen::Product<Lhs, Rhs, Option>::Lhs = Eigen::Matrix<double, 4, 4>; Eigen::Product<Lhs, Rhs, Option>::Rhs = Eigen::Matrix<double, -1, -1>]: Assertion `lhs.cols() == rhs.rows() && "invalid matrix product" && "if you wanted a coeff-wise or a dot product use the respective explicit functions"' failed.
Projective
а неAffine
? - person MBo   schedule 22.01.2018