点云旋转矩阵作业求助-填写第二、第三部分代码,第一部分代码,老师已经给出答案

#include "PointCloudOpt.h"


pcl::PointCloud<pcl::PointXYZ> PointCloudOpt::pointCloudTranslation(const pcl::PointCloud<pcl::PointXYZ>& pointcloudinput)
{
  pcl::PointCloud<pcl::PointXYZ> pointcloudoutput;
  
  /*
   * please finish this program to implement 3D points translation.
   * input: pointcloudinput
   * output: pointcloudoutput
   * description: calculate pointcloudoutput by adding translation vector to pointcloudoutput
   */pointcloudoutput.resize(pointcloudinput.size());
    for(int i=0;i<pointcloudinput.size();++i)
        {
            pointcloudoutput.at(i).x=pointcloudinput.at(i).x+0.17;
            pointcloudoutput.at(i).y=pointcloudinput.at(i).y+0.17;
            pointcloudoutput.at(i).z=pointcloudinput.at(i).z+0.17;
        }
  
  
  
  
  
  return  pointcloudoutput;
}

pcl::PointCloud<pcl::PointXYZ> PointCloudOpt::pointCloudRot(const pcl::PointCloud<pcl::PointXYZ>& pointcloudinput)
{
  pcl::PointCloud<pcl::PointXYZ> pointcloudoutput;
  
  /*
   * please finish this program to implement 3D points rotation.
   * input: pointcloudinput
   * output: pointcloudoutput
   * description: calculate pointcloudoutput by multipling rotation matrix to pointcloudoutput
   */
  
  
  
  return  pointcloudoutput;
}

pcl::PointCloud<pcl::PointXYZ> PointCloudOpt::pointCloudTransformation(const pcl::PointCloud<pcl::PointXYZ>& pointcloudinput)
{
  pcl::PointCloud<pcl::PointXYZ> pointcloudoutput;
  
  /*
   * please finish this program to implement 3D points Transformation.
   * input: pointcloudinput
   * output: pointcloudoutput
   * description: calculate pointcloudoutput by multipling Transformation matrix to pointcloudoutput
   */
  
  
  
  
  
  return  pointcloudoutput;
}

---------------------------------------------------------------------------------------------------------------------------------

第一部分代码运行如下

 

"PointCloudOpt.h"文件如下

---------------------------------------------------------------------------------------------------------------------------------

#include <iostream>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/io/ply_io.h>
#include <cv.h>
#include <highgui.h>
using namespace std;

class PointCloudOpt
{
public:
  cv::Mat RaboutX(const double& theta);//rotation about X axis
  cv::Mat RaboutY(const double& theta);//rotation about Y axis
  cv::Mat RaboutZ(const double& theta);//rotation about Z axis
  pcl::PointCloud<pcl::PointXYZ> pointCloudTranslation(const pcl::PointCloud<pcl::PointXYZ>& pointcloudinput);
  pcl::PointCloud<pcl::PointXYZ> pointCloudRot(const pcl::PointCloud<pcl::PointXYZ>& pointcloudinput);
  pcl::PointCloud<pcl::PointXYZ> pointCloudTransformation(const pcl::PointCloud<pcl::PointXYZ>& pointcloudinput);
  pcl::PointCloud<pcl::PointXYZ> linkageTransformation(const pcl::PointCloud<pcl::PointXYZ>& pointcloudinput);
};

inline 
cv::Mat PointCloudOpt::RaboutX(const double& theta)
{
    cv::Mat raboutx = (cv::Mat_<double>(3,3) << 1,         0,          0,
        0,cos(theta),-sin(theta),
        0,sin(theta),cos(theta));
    return raboutx;
}

inline
cv::Mat PointCloudOpt::RaboutY(const double& theta)
{
    cv::Mat rabouty = (cv::Mat_<double>(3,3) << cos(theta), 0, sin(theta),
        0,          1,          0,
        -sin(theta),0, cos(theta));

    return rabouty;
}

inline
cv::Mat PointCloudOpt::RaboutZ(const double& theta)
{
    cv::Mat raboutz = (cv::Mat_<double>(3,3) << cos(theta),-sin(theta),0,
        sin(theta), cos(theta),0,
        0,       0,            1);

    return raboutz;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值