Я не могу понять, как установить преобразование t в функции:
pcl::addCoordinateSystem(double scale, const Eigen::Affine3f & t, int viewport = 0))
Итак, вопрос: как я могу определить Eigen::Affine3f
?
У меня есть матрица вращения и вектор перевода.
Зная матрицу вращения и перемещения, можно объединить их в Affine3f.
Eigen::Affine3f tt;
tt = Eigen::Translation3f(100.,300.,0.) * Eigen::AngleAxis<float>(theta,axis);
Обратите внимание, что Eigen::Translation3f
а также Eigen::AngleAxis3f
здесь не матрицы, а абстрактный тип Transform.
Если у вас есть вращение и перевод в отдельных объектах, вы можете сделать:
Affine3f t;
t.linear() = ...;
t.translation() = ...;
или же:
t.fromPositionRotationScale(pos, rot, Vector3f::Ones());