【发布时间】:2015-06-05 18:31:35
【问题描述】:
我以前没有使用过 CGAL,我想要的只是一个函数,它接受一组 2d 点和 alpha 参数,并返回一个表示边界多边形的点向量。我可以制作一个 alpha 形状对象,但我不知道如何从那里获取矢量。 编辑:一个警告是可能有几个断开连接的组件,我想以某种方式知道这一点。有没有一种简洁的解决方案,可以让我为每个多边形得到一个有序的顶点向量?
【问题讨论】:
我以前没有使用过 CGAL,我想要的只是一个函数,它接受一组 2d 点和 alpha 参数,并返回一个表示边界多边形的点向量。我可以制作一个 alpha 形状对象,但我不知道如何从那里获取矢量。 编辑:一个警告是可能有几个断开连接的组件,我想以某种方式知道这一点。有没有一种简洁的解决方案,可以让我为每个多边形得到一个有序的顶点向量?
【问题讨论】:
我遇到了同样的问题,最后按照最佳答案here 中的建议对所有顶点进行了排序。也许,它会对某人有所帮助。
不过,我对这种方法并不完全满意。 @Flowers,您还有用于迭代边缘的代码吗?我无法做到这一点。抱歉,我的声望不够,无法在评论中提问。
【讨论】:
试试这样的:
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的参考手册。
【讨论】:
最终反而越过边缘并用它来按顺序找到顶点。
【讨论】: