从点集获取 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,你还有迭代边缘的代码吗?我无法做到这一点。抱歉,我的声望不够,无法在评论中提问。
我以前没有使用过 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,你还有迭代边缘的代码吗?我无法做到这一点。抱歉,我的声望不够,无法在评论中提问。