[BACK]Return to common_faces_of_polytope.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Dynlift

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Dynlift/common_faces_of_polytope.adb, Revision 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 body Common_Faces_of_Polytope is
        !             5:
        !             6:   function Have_Common_Point ( l : List; v : VecVec ) return boolean is
        !             7:
        !             8:   -- DESCRIPTION :
        !             9:   --   Returns true if at least one point in v belongs to the list l.
        !            10:
        !            11:   begin
        !            12:     for i in v'range loop
        !            13:       if Is_In(l,v(i).all)
        !            14:        then return true;
        !            15:       end if;
        !            16:     end loop;
        !            17:     return false;
        !            18:   end Have_Common_Point;
        !            19:
        !            20:   function Is_Neighbor1 ( l : List; fc : Face ) return boolean is
        !            21:   begin
        !            22:     return Have_Common_Point(l,fc.all);
        !            23:   end Is_Neighbor1;
        !            24:
        !            25:   function Is_Neighbor ( l : List; fc : Face ) return boolean is
        !            26:
        !            27:     cntnotin : natural := 0;
        !            28:        -- counts the points in the face fc that are not in the list l
        !            29:
        !            30:   begin
        !            31:     for i in fc'range loop
        !            32:       if not Is_In(l,fc(i).all)
        !            33:        then cntnotin := cntnotin + 1;
        !            34:             if cntnotin > 1
        !            35:              then return false;
        !            36:             end if;
        !            37:       end if;
        !            38:     end loop;
        !            39:     return true;
        !            40:   end Is_Neighbor;
        !            41:
        !            42:   function Neighboring_Faces ( mic : Mixed_Cell; fs : Faces; i : natural )
        !            43:                              return Faces is
        !            44:
        !            45:     tmp : Faces := fs;
        !            46:     res,res_last : Faces;
        !            47:
        !            48:   begin
        !            49:     while not Is_Null(tmp) loop
        !            50:       declare
        !            51:         fc : Face := Head_Of(tmp);
        !            52:       begin
        !            53:         if Is_Neighbor(mic.pts(i),fc)
        !            54:          then Append(res,res_last,fc);
        !            55:         end if;
        !            56:         tmp := Tail_Of(tmp);
        !            57:       end;
        !            58:     end loop;
        !            59:     return res;
        !            60:   end Neighboring_Faces;
        !            61:
        !            62:   function Neighboring_Faces ( mic : Mixed_Cell; afs : Array_of_Faces )
        !            63:                              return Array_of_Faces is
        !            64:
        !            65:     res : Array_of_Faces(afs'range);
        !            66:
        !            67:   begin
        !            68:     for i in res'range loop
        !            69:       res(i) := Neighboring_Faces(mic,afs(i),i);
        !            70:     end loop;
        !            71:     return res;
        !            72:   end Neighboring_Faces;
        !            73:
        !            74: end Common_Faces_of_Polytope;

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