代码之家  ›  专栏  ›  技术社区  ›  nornagon

将重叠的三角形合并为多边形

  •  6
  • nornagon  · 技术社区  · 14 年前

    我有一堆从三维模型投影到二维平面的重叠三角形。我需要把每个接触三角形的岛合并成一个闭合的非凸多边形。

    生成的多边形不应该有任何孔(因为源数据没有)。

    许多源三角形与源数据中的其他三角形共享(浮点相同)边。

    最简单的方法是什么?性能并不特别重要,因为这将在设计时完成。

    3 回复  |  直到 11 年前
        1
  •  2
  •   Lucas Dynelight    11 年前

    尝试 gpc 或通用多边形裁剪器库。

        2
  •  2
  •   brainjam    14 年前

    把在平面上的投影想象成模型的“视图”(即投影方向是视线,投影就是你所看到的)。在这种情况下,要计算的多边形的边界对应于模型的轮廓。

    反过来,轮廓是模型中的一组边。对于轮廓中的每个边,相邻面将具有远离平面或朝向平面的法线。你可以用平面法向的面法向的点积来检查这一点——寻找那些相邻面法向具有与投影方向相反符号的点积的边。

    找到所有轮廓边后,可以将它们连接到所需多边形的边界中。

    一般来说,你可以通过google之类的术语找到更多关于轮廓检测和提取的信息。 mesh silouette finding detection . 也许一个好的开始的地方是 here .

        3
  •  1
  •   Community CDub    7 年前

    我也发现了这种方法,我将在下一步尝试。

    〔1〕 2d outline algorithm for projected 3D mesh