对复杂的不规则凹凸多边形进行三角剖分的最佳方法
Best way to triangulating complex irregular concave and convex polygons
我需要对一个有很多顶点靠在一起的多边形进行三角剖分。多边形将代表国家的形状。我正在使用 libgdx 并想利用它的 PolygonRegion class:
PolygonRegion(TextureRegion region, float[] vertices, short[] triangles)
Creates a PolygonRegion by triangulating the polygon coordinates in vertices and calculates uvs based on that.
在 libgdx 中有 EarClippingTriangulator 用于三角化多边形。它的文档说:
If the input polygon is not simple (self-intersects), there will be output but it is of unspecified quality (garbage in, garbage out).
libgdx 中的其他三角测量仪对此没有多说,我在 google 上找不到任何帮助。
我想知道对具有可以彼此相邻或非常接近的顶点的复杂多边形进行三角剖分是否会出现任何问题。我的多边形可能包含几百个顶点(我认为可能更多)。
[编辑]
我不确定对多边形进行三角剖分是否有一点意义,因为它会创建多少个三角形。
您不必自己编写程序。大多数高级编程语言都有一个 2D 图形库,并提供一个多边形可编程对象。它将一个封闭的(简单的)多边形定义为以 CCW 顺序访问的顶点列表 [x, y]。
这个 Polygon 对象带有一个 "fill" 函数,专为快速填充像您这样的复杂形状而设计。三角测量将是一种相对较慢的方法......更快的算法将形状转换为一组水平扫描线(利用最低级别的图形系统必须填充像素这一事实)。至于岛屿,每个岛屿都必须有自己的多边形对象。如果一个区域(瑞士奶酪)中有切口,每个切口都会有自己的多边形。每个多边形都需要闭合。
我需要对一个有很多顶点靠在一起的多边形进行三角剖分。多边形将代表国家的形状。我正在使用 libgdx 并想利用它的 PolygonRegion class:
PolygonRegion(TextureRegion region, float[] vertices, short[] triangles)
Creates a PolygonRegion by triangulating the polygon coordinates in vertices and calculates uvs based on that.
在 libgdx 中有 EarClippingTriangulator 用于三角化多边形。它的文档说:
If the input polygon is not simple (self-intersects), there will be output but it is of unspecified quality (garbage in, garbage out).
libgdx 中的其他三角测量仪对此没有多说,我在 google 上找不到任何帮助。
我想知道对具有可以彼此相邻或非常接近的顶点的复杂多边形进行三角剖分是否会出现任何问题。我的多边形可能包含几百个顶点(我认为可能更多)。
[编辑] 我不确定对多边形进行三角剖分是否有一点意义,因为它会创建多少个三角形。
您不必自己编写程序。大多数高级编程语言都有一个 2D 图形库,并提供一个多边形可编程对象。它将一个封闭的(简单的)多边形定义为以 CCW 顺序访问的顶点列表 [x, y]。 这个 Polygon 对象带有一个 "fill" 函数,专为快速填充像您这样的复杂形状而设计。三角测量将是一种相对较慢的方法......更快的算法将形状转换为一组水平扫描线(利用最低级别的图形系统必须填充像素这一事实)。至于岛屿,每个岛屿都必须有自己的多边形对象。如果一个区域(瑞士奶酪)中有切口,每个切口都会有自己的多边形。每个多边形都需要闭合。