Eigen には、平行移動 ( Eigen::Vector3f
) と回転 ( Eigen::Quaternionf
) の形でいくつかの変換があります。これらすべての変換を、選択した順序で 4x4 変換マトリックスに結合したいと思いEigen::Matrix4f
ます。
たとえば、次の変換を A、B、C、D、E の順序で適用したいと思います。
Eigen::Vector3f translation_A;
Eigen::Quaternionf rotation_B;
Eigen::Quaternionf rotation_C;
Eigen::Quaternionf rotation_D;
Eigen::Vector3f translation_E;
これを達成する最も簡単な方法は何ですか?これまでのところ、次のように最終データに個別に適用してきました。
pcl::transformPointCloud(*cloud_in, *cloud_out, translation_A, IDENTITY_QUATERNION);
pcl::transformPointCloud(*cloud_out, *cloud_out, ZERO_TRANSLATION, rotation_B);
pcl::transformPointCloud(*cloud_out, *cloud_out, ZERO_TRANSLATION, rotation_C);
pcl::transformPointCloud(*cloud_out, *cloud_out, ZERO_TRANSLATION, rotation_D);
pcl::transformPointCloud(*cloud_out, *cloud_out, translation_E, IDENTITY_QUATERNION);
...しかし、Eigen を使用してこれらの変換を最終的な 4x4 変換行列に結合する簡単な (組み込みの?) 方法が必要です。