PCL中可用的PointT类型

简介: PCL中可用的PointT类型:PointXYZ——成员变量:float x,y,z;     PointXYZ是使用最常见的一个点数据类型,因为他之包含三维XYZ坐标信息,这三个浮点数附加一个浮点数来满足存储对齐,可以通过points[i].

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];
};

 未完待续***************************************88888888888

备注:关于点云库PCL的学习,可以扫描二维码关注公众号,有兴趣的可以直接在公众号回复与我交流,相互学习,

                        

相关文章
|
自然语言处理 API Swift
Qwen1.5开源!魔搭最佳实践来啦!
近几个月来,通义千问团队一直在努力探索如何构建一个“好”的模型,同时优化开发者体验。就在刚刚,中国新年前夕,通义千问团队分享了Qwen开源系列的下一个版本,Qwen1.5。
|
算法 安全 机器人
Python语言如何使用MindOpt建模并求解二次规划问题
MindOpt是一款高效的优化算法软件包,求解算法实现了线性规划(LP)、混合整数线性规划(MILP)、二次规划(QP),可以支持命令行、c、c++、java和python调用。接下来我们将发布一系列文章,讲述各个语言如何使用 MindOpt 来求解数学规划问题。
Python语言如何使用MindOpt建模并求解二次规划问题
|
开发者
语雀
简要讲述语雀文档编辑器的注册使用及个人感受
语雀
|
8月前
鸿蒙开发:单一手势实现多次点击事件
TapGesture点击手势,在实际的开发中,更多的是运用于双击或者需要多次点击的场景,如果仅仅是单次点击,建议大家直接使用onClick即可。
164 1
鸿蒙开发:单一手势实现多次点击事件
|
消息中间件 安全 Kafka
Kafka启动后需要开放什么端口?
Kafka启动后需要开放什么端口?
4037 7
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的大学生勤工助学管理系统的详细设计和实现
基于SpringBoot+Vue+uniapp的大学生勤工助学管理系统的详细设计和实现
238 11
|
前端开发 JavaScript Linux
宝塔面板超级美化(登录页+后台)
宝塔面板超级美化(登录页+后台)
1502 0
宝塔面板超级美化(登录页+后台)
|
JavaScript 前端开发 C++
如何理解 QML_ELEMENT QML_SINGLETON staic Foo *create(QQmlEngine *, QJSEngine *){return s instance; }
如何理解 QML_ELEMENT QML_SINGLETON staic Foo *create(QQmlEngine *, QJSEngine *){return s instance; }
233 2
|
Web App开发 编解码 vr&ar
使用FFmpeg从音视频处理到流媒体技术的探索和实战应用
使用FFmpeg从音视频处理到流媒体技术的探索和实战应用
649 2
系统明明有很多内存,却无法分配出一片大块内存?
系统明明有很多内存,却无法分配出一片大块内存?