Алгоритм разложения сложных полигонов - PullRequest
3 голосов
/ 08 марта 2012

Я пытаюсь создать полигоны для уровня Doom 2 из информации, содержащейся в файле WAD.Я сделал стены, все, что осталось, это «квартиры», пол и потолок.Карта Doom делится на «сектора», каждый из которых представляет собой плоский сложный многоугольник.

Было бы достаточно легко разложить простой выпуклый многоугольник на треугольники, поскольку для этого существует множество алгоритмов.Но многие из секторных полиров являются вогнутыми, а некоторые даже имеют «дыры» в других секторах.Вот пример с особенно сложным поли, показанным оранжевым цветом: http://screencast.com/t/BNKuzRVy8

Кто-нибудь может порекомендовать алгоритм или, еще лучше, код C #, который разложит этот тип сложного поли на треугольники?1007 * Я знаю, что файл WAD включает в себя информацию NODE, SEG, SUBSECTOR и т. Д., Которая косвенно описывает разбивку таким образом.Но это особенно сложно.Мне не нужна структура b-дерева.Я хотел бы избежать необходимости разбирать всю эту информацию и собирать ее воедино, поскольку у меня есть сложная поли-структура из одной только информации о секторе.

1 Ответ

1 голос
/ 09 марта 2012

Посмотрите на метод триангуляции ушной клипсы, хорошая отправная точка - Дэвид Элбери статья .

...