pcl中PointXYZ的巧妙的定义

struct EIGEN_ALIGN16 _PointXYZI
{
  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
  union
  {
    struct
    {
      float intensity;
    };
    float data_c[4];
  };
  PCL_MAKE_ALIGNED_OPERATOR_NEW
};

在union中的结构体中是强度或者原本data中的第四个元素,从中二选一,那就保证了PointXYZ的整体结构保证一致,而rgbd中则是4个uint8_t ,相当于一个float所占用的字节数,所以这样统一了结构。能够在通用算法中做到了通用

你可能感兴趣的:(c++,pcl以及三维,c++,c)