我正在尝试根据 WAD 文件中包含的信息为 Doom 2 级别创建多边形。我已经完成了墙壁,剩下的就是“公寓”、地板和天花板区域。Doom 地图被划分为“扇区”,每个扇区都评估为一个平坦的复杂多边形。
将简单的凸多边形分解为三角形很容易,因为有很多算法可以解决这个问题。但许多扇区多边形是凹面的,有些甚至在其他扇区所在的位置有“洞”。这是一个示例,其中一个特别复杂的多边形以橙色显示:http ://screencast.com/t/BNKuzRVy8
谁能推荐一种算法,或者更好的 C# 代码,将这种复杂的多边形分解成三角形?
我知道 WAD 文件包含 NODE、SEG、SUBSECTOR 信息等,这些信息以这种方式间接描述了故障。但它特别复杂。我不需要 b-tree 结构。我想避免必须解析所有这些信息并将它们拼凑在一起,因为我仅从扇区信息就有复杂的多边形结构。