0

是否有任何简单(或没有)能够从封闭路径创建多边形的算法?

假设 w 具有以下路径:

0,0; 2,0, 2,1; 1,1;
1,2; 2,2; 2,3; 0,3;

我需要能够为 OpenGL 顶点缓冲区创建多边形索引。我使用的语言是 C#。

有人建议我使用 Convex Hull,但这不是我要找的东西,因为我已经有了形状。我知道这可能是一个微不足道的问题,但说真的,我找不到任何描述或任何东西可以将 mi 指向正确的方向。

编辑:

答案 1 建议选择一个点并将其连接到其他未连接的点,这适用于答案形状,但不适用于我发布的形状,上面的形状如下所示:

形状

4

1 回答 1

2

转换为三角形是容易还是困难,这取决于您的要求以及您想要做到的程度。

如果你的多边形是凸的,最简单的方法是使用GL_TRIANGLES索引

0, 1, 2,   0, 2, 3,  0, 3, 4, ...

它看起来像这样:

扇形三角测量

凹的情况是更多的工作。一种也适用于凹多边形(不是带有孔的多边形!)的算法是耳朵剪裁方法,在维基百科上有所描述(该页面上有更多内容。)

当你想要一个“好的”三角测量时,事情会变得非常有趣:避免细小的三角形,减少三角形的数量等,然后你可以用质量换取速度。我不会在这里讨论任何高级算法;在谷歌上搜索多边形三角剖分会得到很多信息。

至于法线,如果您的多边形是平面的(很可能“应该”是),则取两条不重合的边并将它们交叉乘积(有两条法线,您可能只需要一条:您需要选择您根据右手定则交叉乘积(顺时针或逆时针) 。

于 2013-03-18T20:26:39.527 回答