Мне нужно прочитать список полигонов из файла формата объектного файла (.off) (в c ++). Формат файлов .off в основном такой:
Header infomation
x y z //co-ords for each vertex
...
NVertices v1 v2 v3 ... vN //Number of vertices for each polygon,
//followed by each vertex's index
...
.off файлы допускают любое количество вершин на многоугольник, что подводит меня к моему вопросу. Как вы узнаете, какие вершины связаны с какими? Например, если файл .off читается:
Header stuff
-0.500000 -0.500000 0.500000
0.500000 -0.500000 0.500000
-0.500000 0.500000 0.500000
0.500000 0.500000 0.500000
-0.500000 0.500000 -0.500000
0.500000 0.500000 -0.500000
-0.500000 -0.500000 -0.500000
0.500000 -0.500000 -0.500000
4 0 1 3 2
4 2 3 5 4
4 4 5 7 6
4 6 7 1 0
4 1 7 5 3
4 6 0 2 4
Полигоны четырехсторонние, но не все вершины связаны. Если вы просто соедините каждую вершину друг с другом, вы получите четыре трехсторонних многоугольника вместо одного четырехстороннего многоугольника. Я надеялся, что вершины были перечислены в порядке, аналогичном циклической записи, но я не могу найти какую-либо информацию по этому поводу, поэтому я не думаю.
Итак, мой вопрос:
Есть ли какой-либо формат, который файлы .off используют для отображения этого соединения? Если нет, есть ли другой способ определить, какие вершины связаны в файле .off?