Библиотека Пармских многогранников: перечисление вершин

Я пытаюсь использовать Пармская многогранная библиотека [1] чтобы перечислить вершины (выпуклого) многогранника, например, у меня есть прямоугольник, заданный четырьмя ограничениями:

Constraint_System cs;
cs.insert(x >= 0);
cs.insert(x <= 3);
cs.insert(y >= 0);
cs.insert(y <= 3);
C_Polyhedron ph(cs);

Как мне сгенерировать вершины?

2

Решение

Каждая фигура в PPL имеет двойные представления: 1) Constraint_System, 2) Generator_System. Для выпуклых многогранников система генераторов будет содержать набор генераторов, которые могут быть 1) точкой, 2) линией, 3) лучами. Для выпуклого многогранника множество образующих будет всеми точками. Вы можете получить представление генератора следующим образом:

Generator_System gs = ph.generators(); // Use ph.minimized_generators() to minimal set of points for the polytope
for(Generator_System::const_iterator it = gs.begin(); it != gs.end(); it++) {
const Generator& g = *it;
assert(g.is_point()); // Assertions will fail for unbounded polyhedra
std::cout << g;
}
1

Другие решения


По вопросам рекламы [email protected]