Чтение полигонов из файла формата объектного файла (.off)

Мне нужно прочитать список многоугольников из файла формата объектного файла (.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?


person user430489    schedule 25.08.2010    source источник


Ответы (1)


В файле .off вершины каждого многоугольника соединяются последовательно в порядке их перечисления, причем последняя соединяется с первой. В вашем примере первый многоугольник имеет 4 вершины, перечисленные как «0 1 3 2», что означает, что есть соединения (т.е. ребра) от 0 до 1, от 1 до 3, от 3 до 2 и от 2 обратно до 0. .

person Dave    schedule 14.07.2011