假设你有一个 pcl::PointCloudpcl::PointXYZ 的点云对象,你可以使用以下代码将其绕 z 轴旋转 50 度:

// 定义旋转角度(单位:弧度)
double angle = 50.0 * M_PI / 180.0;

// 定义旋转矩阵
Eigen::Affine3f transform = Eigen::Affine3f::Identity();
transform.translation() << 0.0, 0.0, 0.0;
transform.rotate(Eigen::AngleAxisf(angle, Eigen::Vector3f::UnitZ()));

// 应用旋转变换
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_rotated(new pcl::PointCloud<pcl::PointXYZ>);
pcl::transformPointCloud(*input_cloud, *cloud_rotated, transform);

其中,M_PI 是 cmath 库中定义的π常数,Eigen::Affine3f 是 Eigen 库中定义的三维仿射变换类型。transform.translation() 用于设置平移向量,这里设置为 (0,0,0) 表示不进行平移。transform.rotate() 用于设置旋转变换,这里使用 Eigen::AngleAxisf 表示绕 z 轴旋转 angle 弧度。最后,使用 pcl::transformPointCloud() 函数将旋转变换应用到输入点云上,得到旋转后的点云对象。

PCL 点云绕 Z 轴旋转 50 度:详细代码示例

原文地址: http://www.cveoy.top/t/topic/nAd2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录