分解复杂多边形的算法

本文关键字:算法 多边形 复杂 分解 | 更新日期: 2023-09-27 18:27:03

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

将一个简单的凸多边形分解成三角形是很容易的,因为有很多算法可以实现这一点。但许多扇形多边形是凹形的,有些甚至在其他扇区所在的地方有"洞"。下面是一个例子,用橙色显示了一个特别复杂的多边形:http://screencast.com/t/BNKuzRVy8

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

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

分解复杂多边形的算法

寻找Ear Clipping三角测量方法,一个很好的起点是David Elbery的这篇文章。