[BACK]Return to integer_face_enumerators.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Math_Lib / Supports

Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Supports/integer_face_enumerators.ads, Revision 1.1.1.1

1.1       maekawa     1: with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
                      2: with Standard_Integer_VecVecs;           use Standard_Integer_VecVecs;
                      3:
                      4: package Integer_Face_Enumerators is
                      5:
                      6: -- DESCRIPTION :
                      7: --   This package contains procedures which allow the efficient
                      8: --   enumeration of all vertices, edges and k-faces of a polytope.
                      9: --   The polytope is spanned by a given vector of points in a general
                     10: --   dimensional space.
                     11: --   In addition, a procedure has been added for enumerating all
                     12: --   facets of a certain type of the sum of a tuple of polytopes.
                     13:
                     14:   generic
                     15:
                     16:     with procedure Process ( i : in integer; cont : out boolean );
                     17:
                     18:   procedure Enumerate_Vertices ( pts : in VecVec );
                     19:
                     20:   -- DESCRIPTION :
                     21:   --   The vector pts contains the points which span the polytope.
                     22:   --   The candidate vertices are enumerated in order of occurrence in pts.
                     23:   --   Each time a vertex has been found, the procedure Process is invoked,
                     24:   --   which returns then the entry of the vertex in pts.
                     25:   --   When cont is set to false, the enumeration stops.
                     26:
                     27:   generic
                     28:
                     29:     with procedure Process ( i,j : in integer; cont : out boolean );
                     30:
                     31:   procedure Enumerate_Edges ( pts : in VecVec );
                     32:
                     33:   -- DESCRIPTION :
                     34:   --   The vector pts contains the points which span the polytope.
                     35:   --   The candidate edges are enumerated in lexicographic order.
                     36:   --   Each time an edge has been found, the procedure Process is
                     37:   --   invoked, which returns the entries of the edge in pts.
                     38:   --   When cont is set to be false, the enumeration stops.
                     39:
                     40:   generic
                     41:
                     42:     with procedure Process ( i,j : in integer; cont : out boolean );
                     43:
                     44:   procedure Enumerate_Lower_Edges ( pts : in VecVec );
                     45:
                     46:   -- DESCRIPTION :
                     47:   --   Enumerates only the edges on the lower hull of the polytope.
                     48:
                     49:   generic
                     50:
                     51:     with procedure Process ( face : in Vector; cont : out boolean );
                     52:
                     53:     -- REQUIRED :
                     54:     --   The range of face must be 0..k.
                     55:
                     56:   procedure Enumerate_Faces ( k : in natural; pts : in VecVec );
                     57:
                     58:   -- DESCRIPTION :
                     59:   --   The vector pts contains the points which span the polytope.
                     60:   --   A k-face is a face spanned by k affine linearly independent points.
                     61:   --   The candidate k-faces are enumerated in lexicographic order.
                     62:   --   Each time an edge has been found, the procedure Process is
                     63:   --   invoked, which returns the entries of the k-face in pts.
                     64:   --   When cont is set to be false, the enumeration stops.
                     65:
                     66:   generic
                     67:
                     68:     with procedure Process ( face : in Vector; cont : out boolean );
                     69:
                     70:     -- REQUIRED :
                     71:     --   The range of face must be 0..k.
                     72:
                     73:   procedure Enumerate_Lower_Faces ( k : in natural; pts : in VecVec );
                     74:
                     75:   -- DESCRIPTION :
                     76:   --   Enumerates only the k-faces on the lower hull of the polytope.
                     77:
                     78:   generic
                     79:
                     80:     with procedure Process ( faces : in VecVec; cont : out boolean );
                     81:
                     82:     -- DESCRIPTION :
                     83:     --   The parameter faces has the following meaning:
                     84:     --   faces(i) contains the entries of points in pts which span
                     85:     --   the k-face of the ith polytope, with k = typ(i).
                     86:     --   When cont is set to false, the enumeration stops.
                     87:
                     88:   procedure Enumerate_Faces_of_Sum
                     89:                ( ind,typ : in vector; k : in natural; pts : in VecVec );
                     90:
                     91:   -- DESCRIPTION :
                     92:   --   Enumerates the points which span faces of a certain type
                     93:   --   of the polytope in lexicographic order.
                     94:
                     95:   -- ON ENTRY :
                     96:   --   ind       ind(i) indicates where the points of the ith polytope
                     97:   --             in the vector pts begin;
                     98:   --   typ       typ(i) contains the dimension k of the k-face of the ith
                     99:   --             polytope which spans the facet of the sum;
                    100:   --   k         sum of the entries in typ, must be less than
                    101:   --             or equal to the dimension of the space;
                    102:   --   pts       contains all points of the polytopes.
                    103:
                    104:   -- ON RETURN :
                    105:   --   Each time a face of the sum has been found, Process is invoked.
                    106:
                    107: end Integer_Face_Enumerators;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>