【问题标题】:Algorithm to Decompose Complex Polygons分解复杂多边形的算法
【发布时间】:2012-03-25 17:06:00
【问题描述】:

我正在尝试根据 WAD 文件中包含的信息为 Doom 2 级别创建多边形。我已经完成了墙壁,剩下的就是“公寓”、地板和天花板区域。 Doom 地图被划分为“扇区”,每个扇区都评估为一个平坦的复杂多边形。

将一个简单的凸多边形分解为三角形很容易,因为有很多算法可以解决这个问题。但许多扇区多边形是凹面的,有些甚至在其他扇区位于其中的地方有“洞”。这是一个示例,其中一个特别复杂的多边形以橙色显示:http://screencast.com/t/BNKuzRVy8

谁能推荐一种算法,或者更好的 C# 代码,将这种复杂的多边形分解成三角形?

我知道 WAD 文件包含 NODE、SEG、SUBSECTOR 信息等,这些信息以这种方式间接描述了故障。但它特别复杂。我不需要 b-tree 结构。我想避免必须解析所有这些信息并将它们拼凑在一起,因为我仅从扇区信息就有复杂的多边形结构。

【问题讨论】:

  • 经过一番争论后,我设法通过将包含的多边形在每个孔周围切成两半来解决“孔”问题。在此之后,普通的凹三角测量算法运行良好。我还不能标记为已回答,因为我没有 SO 声誉。

标签: c# geometry triangulation polygons


【解决方案1】:

寻找耳剪三角法,一个很好的起点是这个 David Elbery article

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-14
    • 2012-01-19
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多