Чтение в многоугольниках из файла Object File Format (.off) - PullRequest
0 голосов
/ 25 августа 2010

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

1 Ответ

1 голос
/ 15 июля 2011

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

...