【问题标题】:Traversing the boundary points of a polygon made of connected triangles遍历由连接三角形组成的多边形的边界点
【发布时间】:2011-01-06 17:36:33
【问题描述】:

我有一个由连接三角形组成的二维多边形网格,如下所示:

  • 顶点数组V = A, B, C, D, E, ...
  • 索引数组,按逆时针顺序以 3 个为一组的三角形顶点索引:I = 0, 4, 3, ...
    (例如 V[0], V[4], V[3]A-E-D 形成一个三角形)

http://img694.imageshack.us/img694/8968/meshg.png 示例网格

现在我想以逆时针顺序遍历边界点,起始顶点无关紧要:
G, H, A, D, C, F

这样做的原因是我想像这篇文章中那样计算动态 2D 阴影:http://www.gamedev.net/reference/programming/features/2dsoftshadow/page3.asp

最好的方法是什么?我想过计算一个凸包,但这似乎太昂贵了,因为它没有使用三角形顶点索引,必须有更好的方法。

有没有办法让它在一个表示中对多个多边形起作用,以便我获得每个连接多边形的边界点列表?

谢谢,阿本西

【问题讨论】:

    标签: geometry 2d


    【解决方案1】:

    这是一种方法:

    1. 找到边界边,这是通过遍历三角形的所有边并删除所有出现两次的边来完成的(因为除了边界边之外的所有边都由两个三角形共享)(还要记住(A, B)是同一条边(B, A))。
    2. 您现在有一个边界边缘列表。从其中一个开始,依次遍历其余边,直到找到一个已连接的边,附加此边并将其从列表中删除。重复直到边界关闭。

    由于三角形是逆时针的,计算的边界也将是逆时针的。这种方法很好,因为它不需要顶点的实际位置,它只使用索引指定的拓扑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-19
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多