从点集获取 2d alpha 形状边界顶点

Get 2d alpha shape boundary vertices from set of points

我以前没有使用过 CGAL,我想要的只是一个采用二维点集和 alpha 参数的函数,以及 returns 表示边界多边形的点矢量。我可以制作一个 alpha 形状对象,但我不知道如何从那里获取矢量。 编辑:一个警告是可能有几个断开连接的组件,我想以某种方式知道这一点。是否有一个巧妙的解决方案,以便我为每个多边形获得一个有序的顶点向量?

尝试这样的事情:

Alpha_shape_2 A(points.begin(), points.end(),
                FT(10000),
                Alpha_shape_2::GENERAL);

std::vector<Alpha_shape_2::Point> points;

for (Alpha_shape_2::Alpha_shape_vertices_iterator
       avit = A.alpha_shape_vertices_begin(),
       avit_end=A.alpha_shape_vertices_end();
       avit!=avit_end; ++avit)
{
  points.push_back(avit->point());
}

参见函数here的参考手册。

最终改为越过边缘并使用它按顺序找到顶点。

我遇到了同样的问题,最终按照最佳答案 here 中的建议对所有顶点进行了排序。也许,它会对某人有所帮助。

不过,我对这种方法并不完全满意。 @Flowers,你还有迭代边缘的代码吗?我无法做到这一点。抱歉,我的声望不够,无法在评论中提问。