with Standard_Integer_Vectors; use Standard_Integer_Vectors; with Standard_Integer_VecVecs; use Standard_Integer_VecVecs; with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors; with Simplices,Triangulations; use Simplices,Triangulations; package Enumerate_Faces_of_Polytope is -- DESCRIPTION : -- The routines in this package enable the enumeration of all k-faces -- of the lower hull of a polytope, based on a regular triangulation. generic with procedure Process ( face : in VecVec ); procedure Enumerate_Faces_in_List ( l : in List; point : in Link_to_Vector; k : in natural ); generic with procedure Process ( face : in VecVec ); procedure Enumerate_Lower_Faces_in_List ( l : in List; point : in Link_to_Vector; k : in natural ); -- DESCRIPTION : -- Enumerates all k-dimensional faces spanned by the list and -- the given point. The _Lower_ indicates that only the faces of the -- lower hull are enumerated. -- ON ENTRY : -- l a list of points; -- point vector not in the list l; -- k dimension of the faces. -- ON RETURN : -- face a (k+1)-dimensional vector: face(0..k), face(0) = point. generic with procedure Process ( face : in VecVec ); procedure Enumerate_Faces_in_Simplex ( s : in Simplex; point : in Link_to_Vector; k : in natural ); generic with procedure Process ( face : in VecVec ); procedure Enumerate_Lower_Faces_in_Simplex ( s : in Simplex; point : in Link_to_Vector; k : in natural ); -- DESCRIPTION : -- Enumerates all k-dimensional faces in the simplex s that contain -- the given point. The _Lower_ indicates that only the faces of the -- lower hull are enumerated. -- ON ENTRY : -- s a simplex; -- point vector in the simplex; -- k dimension of the faces. -- ON RETURN : -- face a (k+1)-dimensional vector: face(0..k), face(0) = point. generic with procedure Process ( face : in VecVec ); procedure Enumerate_Faces_in_Triangulation ( t : in Triangulation; point : in Link_to_Vector; k : in natural ); generic with procedure Process ( face : in VecVec ); procedure Enumerate_Lower_Faces_in_Triangulation ( t : in Triangulation; point : in Link_to_Vector; k : in natural ); -- DESCRIPTION : -- Enumerates all k-dimensional faces in the simplices of the triangulation -- that contain the given point. The _Lower_ indicates that only the faces -- of the lower hull are enumerated. -- ON ENTRY : -- t a regular triangulation; -- point vector in each simplex of t; -- k dimension of the faces. -- ON RETURN : -- face a (k+1)-dimensional vector: face(0..k), face(0) = point. end Enumerate_Faces_of_Polytope;