Geometry 点云库中的人工三角剖分

Geometry 点云库中的人工三角剖分,geometry,computational-geometry,point-cloud-library,point-clouds,Geometry,Computational Geometry,Point Cloud Library,Point Clouds,我有一个点云,我已经执行了平面检测。现在我想对场景进行三角剖分 我已经对每个平面进行了三角剖分,如下所示: 我想使用点云库GreedyProjectionTranslation来重建场景。因此,我想适应不同的功能,干预重建 我查阅了gp3.h和gp3.hpp(可在pcl/surface/include/pcl/surface中找到)的代码,并阅读了相关出版物。到目前为止,我已经得出以下结论: 我的平面的每一点都应该在一开始就标记为条纹-使用向量状态很容易做到这一点 我们使用函数addTria

我有一个点云,我已经执行了平面检测。现在我想对场景进行三角剖分

我已经对每个平面进行了三角剖分,如下所示:

我想使用
点云库
GreedyProjectionTranslation
来重建场景。因此,我想适应不同的功能,干预重建

我查阅了
gp3.h
gp3.hpp
(可在
pcl/surface/include/pcl/surface
中找到)的代码,并阅读了相关出版物。到目前为止,我已经得出以下结论:

  • 我的平面的每一点都应该在一开始就标记为条纹-使用向量
    状态
    很容易做到这一点
  • 我们使用函数
    addTriangles
    添加平面的三角形,这没有问题
  • 我不知道如何加强边缘。有一个
    doubledges
    vector,但我并不真正理解它是如何工作的。似乎在一个点上的每次迭代都会重置它
  • 我必须在
    边缘队列
    向量中推动平面的点,但是
    addriger
    函数很奇怪,因为它需要两个参数,我不明白为什么
  • 我不明白向量
    部分是用来做什么的
我目前的结果是:

这在图像上不是很清楚,但由于我不知道如何加强边缘,我有重叠三角形的问题

编辑

我继续挖掘代码。我确定了关键部分可能是什么。为了避免代码墙,您可以找到有趣的部分-它大约在gp3.hpp中的第180行和第285行之间

我不明白什么是
sfn_
ffn_
。我的直觉是,
sfn\u[R\u]
返回
R\u
的第二个边缘邻居,
ffn\u[R\u]
返回
R\u
的第一个边缘邻居。比如说:

如果我是对的,我可以很容易地做到这一点,因为我有我的飞机轮廓排序在正确的顺序

我仍然不知道如何加强属于我的平面的三角形的边。查看代码,我认为关键在于
doubledges
向量,但我不知道如何修改此部分,使其与我的问题相关