Библиотека облака точек: как использовать pcl :: addCoordinateSystem (двойная шкала, const Eigen :: Affine3f & amp; t, int viewport = 0))

Я не могу понять, как установить преобразование t в функции:

pcl::addCoordinateSystem(double scale, const Eigen::Affine3f & t, int viewport = 0))

Итак, вопрос: как я могу определить Eigen::Affine3f?

У меня есть матрица вращения и вектор перевода.

1

Решение

Зная матрицу вращения и перемещения, можно объединить их в Affine3f.

Eigen::Affine3f tt;
tt = Eigen::Translation3f(100.,300.,0.) * Eigen::AngleAxis<float>(theta,axis);

Обратите внимание, что Eigen::Translation3f а также Eigen::AngleAxis3f здесь не матрицы, а абстрактный тип Transform.

1

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

Если у вас есть вращение и перевод в отдельных объектах, вы можете сделать:

Affine3f t;
t.linear() = ...;
t.translation() = ...;

или же:

t.fromPositionRotationScale(pos, rot, Vector3f::Ones());
1

По вопросам рекламы [email protected]