Я работаю над реализацией различных алгоритмов разбиения (таких как catmull-clark); для эффективного использования требуется хороший способ хранения информации о сетке тесселированных полигонов. Я реализовал структуру данных с половинным фронтом как обозначенный флипкодом, но теперь я не уверен, как заполнить структуру данных из вершин!
Моя первоначальная попытка заключалась в
- создать вершины
- групповые вершины в грани
- сортировать вершины внутри граней (используя их угол относительно центра тяжести)
- для каждого лица, возьмите первую вершину и пройдите через отсортированный список вершин, чтобы создать список с половинным краем.
Однако это создает список лиц (с полуребрами), которые не имеют никакой информации о смежных грани! Это также кажется немного неправильным, потому что кажется, что лица действительно являются первоклассным объектом, а края предоставляют вспомогательную информацию; Мне действительно кажется, что я должен создавать ребра из вершин, а затем сортировать лица оттуда. Но опять же, я не совсем уверен, как это сделать - я не могу придумать способ создания списка полуребер, не создавая сначала лица.
Любые предложения о том, какой лучший способ перевернуть данные о вершинах (и гранях) в полуребрах?