with Standard_Integer_Vectors; use Standard_Integer_Vectors; with Standard_Floating_Vectors; with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors; with Arrays_of_Integer_Vector_Lists; use Arrays_of_Integer_Vector_Lists; with Integer_Faces_of_Polytope; use Integer_Faces_of_Polytope; with Integer_Mixed_Subdivisions; use Integer_Mixed_Subdivisions; package Integer_Pruning_Methods is -- DESCRIPTION : -- This package contains the creators of a regular mixed subdivision, -- based on the static lifting algorithm, for computing only those cells -- of a certain type, in particular the mixed cells. -- There are facilities for computing only the generating cells and for -- computing only the stable mixed cells. generic with procedure Process ( mic : in Mixed_Cell; continue : out boolean ); -- DESCRIPTION : -- This procedure will be invoked after each computation of a new cell. -- If the parameter continue is set on false, then the computation will -- be stopped, otherwise the creation continues. procedure Gen1_Create_CS ( n : in natural; mix : in Vector; fa : in Array_of_Faces; lifted : in Array_of_Lists; nbsucc,nbfail : in out Standard_Floating_Vectors.Vector; mixsub : out Mixed_Subdivision ); procedure Create_CS ( n : in natural; mix : in Vector; fa : in Array_of_Faces; lifted : in Array_of_Lists; nbsucc,nbfail : in out Standard_Floating_Vectors.Vector; mixsub : out Mixed_Subdivision ); -- DESCRIPTION : -- Creates a mixed subdivision with a criterium to check which -- face-face combinations can lead to a cell which contributes to -- the mixed volume. -- ON ENTRY : -- n dimension before lifting; -- mix type of mixture: indicates how many times each polytope -- occurs in the supports; -- fa faces of the lower hull of the lifted point sets: -- fa(i) contains the mix(i)-faces of conv(lifted(i)); -- lifted the lifted points; -- ON RETURN : -- nbsucc number of times a face-face combination has passed the test, -- at each level; -- nbfail number of times a face-face combinations has failed to pass -- the test, at each level; -- mixsub collection of cells which contribute to the mixed volume. procedure New_Create_CS ( n : in natural; mix : in Vector; fa : in Array_of_Faces; lifted : in Array_of_Lists; nbsucc,nbfail : in out Standard_Floating_Vectors.Vector; mixsub : out Mixed_Subdivision ); -- DESCRIPTION : -- Does the same at the Create_CS, only with a new pruning method. procedure Create_CCS ( n : in natural; mix : in Vector; fa : in Array_of_Faces; lifted : in Array_of_Lists; nbsucc,nbfail : in out Standard_Floating_Vectors.Vector; normals,suppvals : in out List; mixsub : out Mixed_Subdivision ); -- DESCRIPTION : -- Construction of the mixed subdivision by constraint complementary -- slackness: faces supported by the list of normals pass freely. -- This list of normals is updated each time new mixed cells are found. -- Following are the descriptions of the new parameters. -- ON ENTRY : -- normals list of inner normals on the lower hull of the lifted points; -- suppvals corresponding vectors which contain the supporting values -- for each component. -- ON RETURN : -- normals contains the inner normals of the mixed cells; -- suppvals corresponding vectors of support values. end Integer_Pruning_Methods;