Manoj Rajagopalan wrote:
Hi all
How do I check if a point is contained within a polyhedron? Firstly, how do i represent the point? in terms of X, Y, Z where these are declared to be of type Variable?
Hi. // Supposing that you are working in a 3 dimensional space. using namespace Parma_Polyhedra_Library; Variable x(0); Variable y(1); Variable z(2); // Now, create your polyhedron: C_Polyhedron ph(3, UNIVERSE); ph.add_constraint(x + 3*y >= z) ph.add_constraint(x >= 0) ph.add_constraint(2*y +2*z <= 5) // Then, create a point, which is a Generator, // e.g., having coordinates (1, 1, 1). Generator g = point(x + y + z); // Finally, compute the relation between // the polyhedron and the generator. Poly_Gen_Relation rel = ph.relation_with(g); // If the point is contained in the polyhedron, then // the polyhedron "subsumes" the point (i.e., adding // the point to the polyhedron won't change the polyhedron). if (rel == Poly_Gen_Relation:subsumes()) std::cout << "The point is contained in ph" << std::endl;
Would someone have any example code snippets to illustrate related points?
thanks Manoj Rajagopalan
Have a look in ppl/tests/Polyhedron/relations1.cc, as well as the documentation for methods Polyhedron::relation_with(...). Cheers, Enea.