PCL中可用的PointT類型:
【1】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;
};
};
【2】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];
};
【3】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];
};
【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];
};
【5】PointXY——成員變量:float x,y 簡單的二維x-y結構代碼。
struct
{
float x;
float y;
};
【6】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];
};
【7】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];
};
【8】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];
};
文章原文參考:https://www.cnblogs.com/li-yao7758258/p/6433445.html