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

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

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

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