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

File: [local] / OpenXM_contrib / PHC / Ada / Math_Lib / Supports / integer_faces_of_polytope.ads (download)

Revision 1.1.1.1 (vendor branch), Sun Oct 29 17:45:28 2000 UTC (23 years, 8 months ago) by maekawa
Branch: PHC, MAIN
CVS Tags: v2, maekawa-ipv6, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, HEAD
Changes since 1.1: +0 -0 lines

Import the second public release of PHCpack.

OKed by Jan Verschelde.

with Generic_Lists;
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;

package Integer_Faces_of_Polytope is

-- DESCRIPTION :
--   This package offers an abstraction for manipulating the k-faces
--   of an n-dimensional polytope.

-- DATA STRUCTURES :

  type Face is new Link_to_VecVec;
    -- points that span the face, range 0..k, with k = dimension of face

  type Face_Array is array ( integer range <> ) of Face;

  package Lists_of_Faces is new Generic_Lists(Face);
  type Faces is new Lists_of_Faces.List;

  type Array_of_Faces is array ( integer range <> ) of Faces;

-- CONSTRUCTORS :

  function Create ( k,n : positive; p : List ) return Faces;
  function Create ( k,n : positive; p : List; x : Vector ) return Faces;

  -- DESCRIPTION :
  --   The input for this routine is a list of points, defining a polytope 
  --   in n-dimensional space.  On return, a list of lists of points will be 
  --   given, defining k-faces of the polytope, each spanned by k+1 points.
  --   When x is provided, then only those k-faces will be returned that
  --   contain the vector x.  In the latter case, x must belong to p.

  function Create_Lower ( k,n : positive; p : List ) return Faces;
  function Create_Lower ( k,n : positive; p : List; x : Vector ) return Faces;

  -- DESCRIPTION :
  --   Only the k-faces of the lower hull will be generated.
  --   When x is added as parameter, only the k-faces that contain x
  --   will be returned.  In the latter case, x must belong to p.

  procedure Construct ( first : in out Faces; fs : in Faces );

  -- DESCRIPTION :
  --   All the faces in fs will be constructed to the front of first.

  procedure Copy ( f1 : in Face; f2 : in out Face );

  -- DESCRIPTION :
  --   Copies the face f1 to the face f2, after clearing f2.

  procedure Deep_Copy ( f1 : in Faces; f2 : in out Faces );

  -- DESCRIPTION :
  --   Makes a deep copy from the list f1 to the list f2.

-- SELECTORS :

  function Is_Equal ( f1,f2 : Face ) return boolean;

  -- DESCRIPTION :
  --   Returns true if both faces are spanned by the same vertices.
  --   Note that the order of the vertices in the vector do not matter.

  function Is_In ( f : Face; x : Vector ) return boolean;

  -- DESCRIPTION :
  --   Returns true if the face contains the vector x.

  function Is_In ( fs : Faces; f : Face ) return boolean;

  -- DESCRIPTION :
  --   Returns true if the face already belongs to the list of faces.

  function Extract_Faces ( fs : Faces; x : Vector ) return Faces;

  -- DESCRIPTION :
  --   Returns a list of faces that contain x.
  --   The list on return shares the faces with the original list fs.

-- DESTRUCTORS :

  procedure Deep_Clear ( f : in out Face );
  procedure Deep_Clear ( fa : in out Face_Array );
  procedure Deep_Clear ( fs : in out Faces );
  procedure Deep_Clear ( afs : in out Array_of_Faces );
  procedure Shallow_Clear ( f : in out Face );
  procedure Shallow_Clear ( fa : in out Face_Array );
  procedure Shallow_Clear ( fs : in out Faces );
  procedure Shallow_Clear ( afs : in out Array_of_Faces );

  -- DESCRIPTION :
  --   All allocated memory space will be freed.  A deep clear destroys the 
  --   whole structure, while a shallow clear only destroys the structures 
  --   especially set up for the faces.

end Integer_Faces_of_Polytope;