我有一个顶点表示三角形条带的数组。我需要将其转换为多边形。有很多解决方案可以做相反的事情,但我没有找到解决上述问题的方法。或者它可能太容易了,我只是看不到它。请帮忙。
OpenGL=兼容,见 http://en.wikipedia.org/wiki/Triangle_strip
示例:对于这个地带http://en.wikipedia.org/wiki/File:Triangle_Strip_Small.png 我需要输出 ABDFEC 或 ACEFDB
我有一个顶点表示三角形条带的数组。我需要将其转换为多边形。有很多解决方案可以做相反的事情,但我没有找到解决上述问题的方法。或者它可能太容易了,我只是看不到它。请帮忙。
OpenGL=兼容,见 http://en.wikipedia.org/wiki/Triangle_strip
示例:对于这个地带http://en.wikipedia.org/wiki/File:Triangle_Strip_Small.png 我需要输出 ABDFEC 或 ACEFDB
我相信以下应该有效:
遍历顶点列表。将第一个点添加到多边形。将第二个点压入堆栈。将第三个点添加到多边形。继续在堆栈上的推入点之间交替并将它们添加到多边形,直到到达列表的末尾。当您到达列表的末尾时,弹出堆栈的点并将它们添加到多边形中。
我会假设你的三角形条总是以相同的方式连接(我相信这对于 OpenGL 是正确的)。
取“底部”列表并附加“顶部”列表的反面。(以 ACEFDB 为例)
或者,更直接地,使用从零开始的索引而不是字母:
// do "bottom"
for ( i = 0; i < N; i += 2 )
addVertex( i )
// do "top"
largestOddNumberLessThanN = N % 2 == 0 ? N - 1 : N - 2;
for ( i = largestOddNumberLessThanN; i >= 0; i -= 2 )
addVertex( i )
如果您的形状具有特别简单的结构,可能会有一条捷径,但总的来说,我认为您想要执行以下操作