我有一个顶点表示三角形条带的数组。 我需要将其转换为多边形。 反过来有很多解决办法,但我找不到上述问题。 或者它可能太容易了,我只是看不到它。 请帮忙。
OpenGL =兼容,请参阅 http://en.wikipedia.org/wiki/Triangle_strip
实施例: 为此条http://en.wikipedia.org/wiki/File:Triangle_Strip_Small.png 我需要输出A B D F E C或A C E F D B
答案 0 :(得分:6)
我相信以下内容应该有效:
浏览顶点列表。将第一个点添加到多边形。按下堆栈上的第二个点。将第三个点添加到多边形。继续在堆栈上的推动点之间交替,并将它们添加到多边形,直到到达列表的末尾。当您到达列表的末尾时,弹出堆栈的点并将它们添加到多边形。
答案 1 :(得分:1)
我假设你的三角形条总是以相同的方式连接(我相信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 )
答案 2 :(得分:0)
如果你的形状结构特别简单,可能会有一个捷径,但总的来说我认为你想要做以下事情