Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Supports/integer_faces_of_polytope.ads, Revision 1.1
1.1 ! maekawa 1: with Generic_Lists;
! 2: with Standard_Integer_Vectors; use Standard_Integer_Vectors;
! 3: with Standard_Integer_VecVecs; use Standard_Integer_VecVecs;
! 4: with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors;
! 5:
! 6: package Integer_Faces_of_Polytope is
! 7:
! 8: -- DESCRIPTION :
! 9: -- This package offers an abstraction for manipulating the k-faces
! 10: -- of an n-dimensional polytope.
! 11:
! 12: -- DATA STRUCTURES :
! 13:
! 14: type Face is new Link_to_VecVec;
! 15: -- points that span the face, range 0..k, with k = dimension of face
! 16:
! 17: type Face_Array is array ( integer range <> ) of Face;
! 18:
! 19: package Lists_of_Faces is new Generic_Lists(Face);
! 20: type Faces is new Lists_of_Faces.List;
! 21:
! 22: type Array_of_Faces is array ( integer range <> ) of Faces;
! 23:
! 24: -- CONSTRUCTORS :
! 25:
! 26: function Create ( k,n : positive; p : List ) return Faces;
! 27: function Create ( k,n : positive; p : List; x : Vector ) return Faces;
! 28:
! 29: -- DESCRIPTION :
! 30: -- The input for this routine is a list of points, defining a polytope
! 31: -- in n-dimensional space. On return, a list of lists of points will be
! 32: -- given, defining k-faces of the polytope, each spanned by k+1 points.
! 33: -- When x is provided, then only those k-faces will be returned that
! 34: -- contain the vector x. In the latter case, x must belong to p.
! 35:
! 36: function Create_Lower ( k,n : positive; p : List ) return Faces;
! 37: function Create_Lower ( k,n : positive; p : List; x : Vector ) return Faces;
! 38:
! 39: -- DESCRIPTION :
! 40: -- Only the k-faces of the lower hull will be generated.
! 41: -- When x is added as parameter, only the k-faces that contain x
! 42: -- will be returned. In the latter case, x must belong to p.
! 43:
! 44: procedure Construct ( first : in out Faces; fs : in Faces );
! 45:
! 46: -- DESCRIPTION :
! 47: -- All the faces in fs will be constructed to the front of first.
! 48:
! 49: procedure Copy ( f1 : in Face; f2 : in out Face );
! 50:
! 51: -- DESCRIPTION :
! 52: -- Copies the face f1 to the face f2, after clearing f2.
! 53:
! 54: procedure Deep_Copy ( f1 : in Faces; f2 : in out Faces );
! 55:
! 56: -- DESCRIPTION :
! 57: -- Makes a deep copy from the list f1 to the list f2.
! 58:
! 59: -- SELECTORS :
! 60:
! 61: function Is_Equal ( f1,f2 : Face ) return boolean;
! 62:
! 63: -- DESCRIPTION :
! 64: -- Returns true if both faces are spanned by the same vertices.
! 65: -- Note that the order of the vertices in the vector do not matter.
! 66:
! 67: function Is_In ( f : Face; x : Vector ) return boolean;
! 68:
! 69: -- DESCRIPTION :
! 70: -- Returns true if the face contains the vector x.
! 71:
! 72: function Is_In ( fs : Faces; f : Face ) return boolean;
! 73:
! 74: -- DESCRIPTION :
! 75: -- Returns true if the face already belongs to the list of faces.
! 76:
! 77: function Extract_Faces ( fs : Faces; x : Vector ) return Faces;
! 78:
! 79: -- DESCRIPTION :
! 80: -- Returns a list of faces that contain x.
! 81: -- The list on return shares the faces with the original list fs.
! 82:
! 83: -- DESTRUCTORS :
! 84:
! 85: procedure Deep_Clear ( f : in out Face );
! 86: procedure Deep_Clear ( fa : in out Face_Array );
! 87: procedure Deep_Clear ( fs : in out Faces );
! 88: procedure Deep_Clear ( afs : in out Array_of_Faces );
! 89: procedure Shallow_Clear ( f : in out Face );
! 90: procedure Shallow_Clear ( fa : in out Face_Array );
! 91: procedure Shallow_Clear ( fs : in out Faces );
! 92: procedure Shallow_Clear ( afs : in out Array_of_Faces );
! 93:
! 94: -- DESCRIPTION :
! 95: -- All allocated memory space will be freed. A deep clear destroys the
! 96: -- whole structure, while a shallow clear only destroys the structures
! 97: -- especially set up for the faces.
! 98:
! 99: end Integer_Faces_of_Polytope;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>