将三角形带的顶点转换为多边形的算法
我有一个数组,其顶点代表三角形带。 我需要将其转换为多边形。 有很多解决方案可以进行相反的操作,但我未能找到解决上述问题的方法。 或者它可能太容易了,我只是看不到它。 请帮忙。
OpenGL=兼容,请参阅 http://en.wikipedia.org/wiki/Triangle_strip
示例: 对于此条 http://en.wikipedia.org/wiki/File:Triangle_Strip_Small.png< /a> 我需要输出 ABDFEC 或 ACEFDB
I have an array with vertices representing a triangular strip.
I need to convert it into polygon.
There are many solution to do the reverse, but I failed to find one for the above problem.
Or it could be too easy and I just cannot see it.
Please help.
OpenGL=compatible, see
http://en.wikipedia.org/wiki/Triangle_strip
Example:
for this strip http://en.wikipedia.org/wiki/File:Triangle_Strip_Small.png
I need output A B D F E C or A C E F D B
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您的形状具有特别简单的结构,可能有一个快捷方式,但一般来说,我认为您想要执行以下操作:
There may be a shortcut if your shape has a particularly simple structure, but in general I think you want to do the following
我相信以下方法应该有效:
遍历顶点列表。将第一个点添加到多边形中。将第二个点压入堆栈。将第三个点添加到多边形中。继续交替推入堆栈上的点并将它们添加到多边形中,直到到达列表的末尾。当到达列表末尾时,弹出堆栈中的点并将它们添加到多边形中。
I believe the following should work:
Walk through the list of vertices. Add the first point to your polygon. Push the second point on the stack. Add the third point to the polygon. Continue alternating between pushing points on the stack and adding them to the polygon until you reach the end of the list. When you get to the end of the list, pop the points of the stack and add them to the polygon.
我假设你的三角形带总是以相同的方式连接(我相信对于 OpenGL 来说也是如此)。
分开:A、C、E……
顶点始终相距两个:B、D、
F,...
获取“底部”列表并附加“顶部”列表的相反内容。 (以 ACEFDB 为例)
或者,更直接地,使用从零开始的索引而不是字母:
I'll assume your triangle strip is always connected the same way (which I believe is true for OpenGL).
apart: A, C, E, ...
vertices are always two apart: B, D,
F, ...
Take the "bottom" list and append the reverse of the "top" list. (ACEFDB for the example)
Or, more directly, using a zero-based index instead of letters: