PCL中可用的PointT类型:
PointXYZ——成员变量:float x,y,z;
PointXYZ是使用最常见的一个点数据类型,因为他之包含三维XYZ坐标信息,这三个浮点数附加一个浮点数来满足存储对齐,可以通过points[i].data[0]或points[i].x访问点X的坐标值
union
{float data[4];struct{float x;float y;float z;
};
};
PointXYZI——成员变量:float x,y,z,intensity
PointXYZI是一个简单的X Y Z坐标加intensity的point类型,是一个单独的结构体,并且满足存储对齐,由于point的大部分操作会把data[4]元素设置成0或1(用于变换),
不能让intensity与XYZ在同一个结构体中,如果这样的话其内容将会被覆盖,例如:两个点的点积会把第四个元素设置为0,否则点积没有意义,
union{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union{
struct{
float intensity;
};
float data_c[4];
};
PointXYZRGBA——成员变量:float x,y,z;uint32_t rgba 除了RGBA信息被包含在一个整型变量中,其他的和PointXYZI类似
union{float data[4];struct{float x;float y;float z;
};
};
union{struct{float rgba;
};float data_c[4];
};
PointXYZRGB——float x,y,z,rgb 除了RGB信息被包含在一个浮点数据变量中,其他的和 PointXYZRGBA
union{float data[4];struct{float x;float y;float z;
};
};
union{struct{float rgb;
};float data_c[4];
};
PointXY——成员变量:float x,y 简单的二维x-y结构代码
struct{float x;float y;
};
InterestPoint——成员变量:float x,y,z,strength除了strength表示关键点的强度测量值,其他的和PointXYZI
union{float data[4];struct{float x;float y;float z;
};
};
union{struct{float strength;
};float data_c[4];
};
Normal——成员变量:float normal[3],curvature;
另一个常用的数据类型,Normal结构体表示给定点所在样本曲面上的法线方向,以及对应曲率的测量值,例如访问法向量的第一个坐标可以通过points[i].data_n[0]或者points[i].normal[0]或者points[i]
union{float data_n[4]float normal[3];struct{float normal_x;float normal_y;float normal_z;
};
};
union{struct{float curvature;
};float data_c[4];
};
PointNormal——成员变量:float x,y,z; float normal[3] ,curvature ; PointNormal是存储XYZ数据的point结构体,并且包括了采样点的法线和曲率
union{float data[4];struct{float x;float y;float z;
};
};union{float data_n[4]float normal[3];struct{float normal_x;float normal_y;float normal_z;
};
};
union{struct{float curvature;
};float data_c[4];
};