Geometry 遍历由连接三角形组成的多边形的边界点

Geometry 遍历由连接三角形组成的多边形的边界点,geometry,2d,Geometry,2d,我有一个由连接的三角形组成的二维多边形网格,如下所示: 顶点数组:V=A,B,C,D,E,… 索引数组,按逆时针顺序将三角形顶点索引分成3组:I=0,4,3, … (例如,V[0]、V[4]、V[3]这是A-e-D形成的三角形) 示例网格 现在我想以逆时针顺序遍历边界点,起始顶点无关紧要: G、H、A、D、C、F 原因是我想计算动态2D阴影,如本文所述: 最好的方法是什么?我考虑过计算凸包,但这似乎太昂贵了,因为它没有使用三角形顶点索引,必须有更好的方法 有没有一种方法可以让它在一个表示中

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

  • 顶点数组
    V=A,B,C,D,E,…
  • 索引数组,按逆时针顺序将三角形顶点索引分成3组:
    I=0,4,3,
    …

    (例如,
    V[0]、V[4]、V[3]
    这是
    A-e-D
    形成的三角形)
示例网格

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

原因是我想计算动态2D阴影,如本文所述:

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

有没有一种方法可以让它在一个表示中甚至对多个多边形都有效,这样我就可以得到每个连接多边形的边界点列表

谢谢,abenthy这里有一个方法:

  • 查找边界边,这是通过遍历三角形的所有边并删除两次出现的所有边来完成的(因为除边界边外的所有边都由两个三角形共享)(还要记住
    (A,B)
    (B,A)
    是同一条边)
  • 现在您有了边界边的列表。从其中一条开始,依次循环其余边,直到找到一条连接的边,附加此边并将其从列表中删除。重复此操作,直到边界闭合
  • 由于三角形为逆时针方向,因此计算的边界也将为逆时针方向。这种方法很好,因为它不需要顶点的实际位置,它只使用索引指定的拓扑。

    这里有一种方法:

  • 查找边界边,这是通过遍历三角形的所有边并删除两次出现的所有边来完成的(因为除边界边外的所有边都由两个三角形共享)(还要记住
    (A,B)
    (B,A)
    是同一条边)
  • 现在您有了边界边的列表。从其中一条开始,依次循环其余边,直到找到一条连接的边,附加此边并将其从列表中删除。重复此操作,直到边界闭合
  • 由于三角形为逆时针方向,因此计算的边界也将为逆时针方向。这种方法很好,因为它不需要顶点的实际位置,它只使用索引指定的拓扑