我目前正在进入CGAL进行一些2D三角测量任务,而且我还有一些简单易用的东西。无论如何我真的不知道如何对凹形进行三角测量,因为现在我总是得到所有点的凸包。基本上我想在mouseClick上添加点类似于它在Illustrator中的工作方式,以便它们的顺序中的所有点都是形状的轮廓。我怎么能用CGAL做到这一点?一般来说如何对凹形进行三角测量的一个简单例子可以让我走上正确的轨道!谢谢!
答案 0 :(得分:3)
答案 1 :(得分:0)
我猜你首先需要将partition多边形变成凸片。在此之后,您可以使用以下内容创建每个单独多边形的三角形:
for (int i = 1; i + 1 < polygon.size(); ++i) {
const Point_2& v0 = polygon[0];
const Point_2& v1 = polygon[i];
const Point_2& v2 = polygon[i + 1];
}
答案 2 :(得分:0)
如果获得的是凸轮廓线而不是凹轮廓线,则可能是由于传入了alpha值。尝试使用find_optimal_alpha(1)作为alpha值或计算相对于您所要点云的边界大小的值传入。例如
Alpha_shape_2 aShape(inPoints.begin(), inPoints.end());
aShape.set_alpha( aShape.find_optimal_alpha(1) );
aShape.set_mode(Alpha_shape_2::REGULARIZED);