2

我目前正在进入 CGAL 进行一些 2D 三角测量任务,并且我还准备了一些简单的工作。无论如何,我真的不知道如何对凹形进行三角剖分,因为现在我总是得到所有点的凸包。基本上我想在 mouseClick 上添加点,类似于它在 illustrator 中的工作方式,以便它们顺序中的所有点都是形状的轮廓。我怎么能用 CGAL 做到这一点?一般如何对凹形进行三角测量的一个简单示例可能会让我走上正确的轨道!谢谢!

4

3 回答 3

3

http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml

于 2010-07-08T20:44:39.000 回答
0

我想您首先需要将多边形划分为凸块在此之后,您可以使用以下内容创建每个单独多边形的三角形:

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];
}
于 2009-12-02T12:26:38.290 回答
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);
于 2019-02-21T02:41:37.343 回答