Создание двойственного графа - обход плоской грани - vtkBoostGraphAdapter
Я пытаюсь написать алгоритм, который создает дуал графа. Чтобы проверить, является ли график плоским или нет, я использую тест плоскостности Бойера-Мирволда (реализация Boost) через vtkBoostGraphAdapter
, Это прекрасно работает (только на vtkUndirectedGraph
-а но пока все нормально).
(Boost.org/doc/libs/1_56_0/libs/graph/doc/boyer_myrvold.html)
Чтобы создать дуал, мне нужно пройти грани плоского графа, для которого у меня также есть инструмент Boost, называемый planar_face_traversal_visitor
, (boost.org/doc/libs/1_56_0/libs/graph/doc/planar_face_traversal.html) Есть парень Аарон Виндзор, который реализовал соответствующий класс посетителей, способный создать двойник графа в Boost. ( https://github.com/aaw/boost_planar_graph_dual) Это также хорошо работает с использованием только Boost, но я бы хотел также адаптировать эту функцию, используя vtkBoostGraphAdapter
,
Вот мой код: http://pastebin.com/g0Mtw6Ph
Это мои ошибки:
- / usr / local / boost_1_56_0 / boost / property_map / property_map.hpp: 302: 19: Нет действительного перегруженного оператора [] для типа 'const boost:: iterator_property_map, std:: __ 1:: allocator>> *>, boost:: vtkGraphIndexMap, std:: __ 1:: map, std:: __ 1:: allocator>>, std:: __ 1:: map, std:: __ 1:: allocator>> &> '
- / usr / local / boost_1_56_0 / boost / property_map / property_map.hpp: 309: 5: Нет жизнеспособного перегруженного оператора [] для типа 'const boost:: iterator_property_map, std:: __ 1:: allocator>> *>, boost:: vtkGraphIndexMap, std:: __ 1:: map, std:: __ 1:: allocator>>, std:: __ 1:: map, std:: __ 1:: allocator>> &> '
- / usr / local / boost_1_56_0 / boost / property_map / property_map.hpp: 302: 19: нет жизнеспособного перегруженного оператора [] для типа 'const boost:: iterator_property_map, std:: __ 1:: allocator> *>, boost:: vtkGraphIndexMap, std:: __ 1:: set, std:: __ 1:: allocator>, std:: __ 1:: set, std:: __ 1:: allocator> &> '
- / usr / local / boost_1_56_0 / boost / property_map / property_map.hpp: 309: 5: нет жизнеспособного перегруженного оператора [] для типа 'const boost:: iterator_property_map, std:: __ 1:: allocator> *>, boost:: vtkGraphIndexMap, std:: __ 1:: set, std:: __ 1:: allocator>, std:: __ 1:: set, std:: __ 1:: allocator> &> '
- / usr / local / boost_1_56_0 / boost / planar_dual.hpp: 38: 38: Нет жизнеспособного перегруженного оператора [] для типа 'edge_to_face_map_t' (он же 'iterator_property_map')
Я имел дело с этим, очень глубоко читал исходный код и пробовал пару вещей за последние несколько дней, но я не могу понять, в чем проблема. Это vtkBoostGraphAdapter
правильно подготовлен для такого использования?
Любая помощь приветствуется!
Заранее спасибо!
Сцилард