结构中的成员不属于任何类型吗?和一个持有一个孤独变量的结构

加宁杜

我试图理解下面的代码,它是针对一种在pointcloud中保存XYZ和Intensity值的结构,该字段PCL_ADD_POINT4D看起来像一个独立的语句,没有任何已知类型,这是什么意思?这是解决内容的一种方法吗?

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



这是从http://docs.ros.org/hydro/api/pcl/html/point__types_8hpp_source.html#l00382

什么是PCL_ADD_POINT4D?是否有任何明显的原因为何intensity需要包含在结构中。干杯。

编辑:

正如@Beta指出的PCL_ADD_POINT4D来自这里

拥有intensity结构体仍然很奇怪。(如果有正当的理由,我将保留这个问题)

加宁杜

第1部分:PCL_ADD_POINT4D引用宏

PCL_ADD_POINT4D 指以下几行

 #define PCL_ADD_POINT4D \
   union EIGEN_ALIGN16 { \
     float data[4]; \
     struct { \
       float x; \
       float y; \
       float z; \
     }; \
   }; \

EIGEN_ALIGN16是一个SSE宏,可帮助优化点操作,因为它们通常应用于在这些上下文中定义的类型的向量(在我们的情况下为点向量/云)。

链接到源文件在这里

第2部分:结构以容纳一个变量

我认为这比其他任何事情都更令人赏心悦目的设计模式,我已经习惯了,因为我的眼睛更加熟悉了优秀的PCL库

在struct中,成员按顺序存储在相邻的内存位置中,而在并集中,所有成员都从同一位置开始,并且确实具有重叠的性质(想象一下,将不同大小(长度)的字符串组合成一个长字符串[struct]而不是悬挂不同长度的字符串(或绳索)从一个点[联合]开始,在联合情况下,整个物件的长度将是最长的弦线的长度。

我们可以利用这些功能为我们的新类型提供一个简洁的外观,这正是PCL的作者所做的。

struct point_xyz{
    union{
        float x;
        float y;
        float z;
        float padding; // redundant with data[4] already taking care of it
    };
    float data[4];
};

如果我们实例化一个point_xyzas,例如point1 我们可以访问它的成员,point1.data[0]或者point1.x也可以将整个点传递.data给以这种方式使用它的函数。

那么这与原始问题有什么关系呢?

我认为这是因为该点类型结构定义在PCL源中非常规则地出现,并且在声明强度时使用相同的蓝图只是为了在眼睛上很容易。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当参数类型不属于一组类型时,阻塞一个函数

来自分类Dev

SQL Server - 在链中找到一个不属于任何人的字母

来自分类Dev

比较Google表格中的2个范围和不属于第一个范围的返回值

来自分类Dev

在yii2中添加一个不属于同一模型的textinput

来自分类Dev

选择不属于另一个表中的条目的条目

来自分类Dev

结构可以具有一个成员,该成员是指向相同类型结构的指针吗?

来自分类Dev

如何选择属于一个组而不属于另一个组的项目

来自分类Dev

有什么好的算法可以删除不属于至少一个循环的图形的所有边?

来自分类Dev

将一个结构复制到另一个具有相同成员和不同类型的结构

来自分类Dev

EF在数据库中创建一个关系ID列,该列不属于模型

来自分类Dev

我必须在地图上实现一个矩形和多边形。将矩形分成网格,删除所有不属于多边形的网格

来自分类Dev

SQL:需要选择一个忽略不属于类别的结果的答案

来自分类Dev

使用Java流过滤器获取一个列表中不属于另一个列表的对象的列表

来自分类Dev

如果我们只有一个成员,结构和联合之间有什么区别吗?

来自分类Dev

在为“多对一”关系建模时,如何处理“多”侧不属于“一个”侧任何记录的记录?

来自分类Dev

每行可以有一个以上的结构成员吗?

来自分类Dev

是一个结构{...};类型还是未命名的变量?

来自分类Dev

如何查看层次结构中的第一个和/或最后一个成员值

来自分类Dev

读取结构矩阵会跳过每个结构的最后一个成员变量

来自分类Dev

一个或两个数字的正则表达式模式,不属于4数字组

来自分类Dev

仅对间隔不属于另一个data.frame的那些行进行子集

来自分类Dev

具有许多结构的列表,这些结构被认为只有一个成员

来自分类Dev

将属性从一个bean递归复制到另一个(不属于同一类)(包括嵌套bean)

来自分类Dev

一个列表中的多种结构类型

来自分类Dev

一个列表中的多种结构类型

来自分类Dev

结构和结构的第一个成员之间的指针别名

来自分类Dev

返回一个结构的类函数,该结构是该类的私有成员

来自分类Dev

如何将一个结构转换为具有相同成员的另一种类型?

来自分类Dev

Javascript / Jquery-如何替换一个单词,但仅当不属于另一个单词时才替换?

Related 相关文章

  1. 1

    当参数类型不属于一组类型时,阻塞一个函数

  2. 2

    SQL Server - 在链中找到一个不属于任何人的字母

  3. 3

    比较Google表格中的2个范围和不属于第一个范围的返回值

  4. 4

    在yii2中添加一个不属于同一模型的textinput

  5. 5

    选择不属于另一个表中的条目的条目

  6. 6

    结构可以具有一个成员,该成员是指向相同类型结构的指针吗?

  7. 7

    如何选择属于一个组而不属于另一个组的项目

  8. 8

    有什么好的算法可以删除不属于至少一个循环的图形的所有边?

  9. 9

    将一个结构复制到另一个具有相同成员和不同类型的结构

  10. 10

    EF在数据库中创建一个关系ID列,该列不属于模型

  11. 11

    我必须在地图上实现一个矩形和多边形。将矩形分成网格,删除所有不属于多边形的网格

  12. 12

    SQL:需要选择一个忽略不属于类别的结果的答案

  13. 13

    使用Java流过滤器获取一个列表中不属于另一个列表的对象的列表

  14. 14

    如果我们只有一个成员,结构和联合之间有什么区别吗?

  15. 15

    在为“多对一”关系建模时,如何处理“多”侧不属于“一个”侧任何记录的记录?

  16. 16

    每行可以有一个以上的结构成员吗?

  17. 17

    是一个结构{...};类型还是未命名的变量?

  18. 18

    如何查看层次结构中的第一个和/或最后一个成员值

  19. 19

    读取结构矩阵会跳过每个结构的最后一个成员变量

  20. 20

    一个或两个数字的正则表达式模式,不属于4数字组

  21. 21

    仅对间隔不属于另一个data.frame的那些行进行子集

  22. 22

    具有许多结构的列表,这些结构被认为只有一个成员

  23. 23

    将属性从一个bean递归复制到另一个(不属于同一类)(包括嵌套bean)

  24. 24

    一个列表中的多种结构类型

  25. 25

    一个列表中的多种结构类型

  26. 26

    结构和结构的第一个成员之间的指针别名

  27. 27

    返回一个结构的类函数,该结构是该类的私有成员

  28. 28

    如何将一个结构转换为具有相同成员的另一种类型?

  29. 29

    Javascript / Jquery-如何替换一个单词,但仅当不属于另一个单词时才替换?

热门标签

归档