with Standard_Integer_Vectors; use Standard_Integer_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_Mixed_Subdivisions; use Integer_Mixed_Subdivisions;
package Unfolding_Subdivisions is
-- DESCRIPTION :
-- This package contains routines to unfold subdivisions.
function Different_Normals ( mixsub : Mixed_Subdivision ) return List;
-- DESCRIPTION :
-- Returns the list of all different normals of the cells in mixsub.
function Extract ( normal : vector; mixsub : Mixed_Subdivision )
return Mixed_Subdivision;
-- DESCRIPTION :
-- Returns a list of cells with the given normal.
function Merge_Same_Normal ( mixsub : Mixed_Subdivision ) return Mixed_Cell;
function Merge_Same_Normal ( mixsub : Mixed_Subdivision )
return Mixed_Subdivision;
-- DESCRIPTION :
-- All cells with the same inner normal will be put in one cell,
-- that will be contained in the mixed subdivision on return.
-- The refinement of the cells will be discarded.
-- REQUIRED :
-- not Is_Null(mixsub) and all mixed cells have the same inner normal.
function Merge ( mixsub : Mixed_Subdivision ) return Mixed_Subdivision;
-- DESCRIPTION :
-- All cells with the same inner normal will be put in one cell.
-- For cells whose inner normal occurs more than once, the refinement
-- will be discarded.
function Relift ( mixsub : Mixed_Subdivision; point : Vector )
return Mixed_Subdivision;
-- DESCRIPTION :
-- Returns a new mixed subdivision, derived from the original one,
-- where all points different from the given point will be given
-- lifting value zero. The given point will receive lifting value 1.
generic
with procedure Process ( mic : in Mixed_Cell; newpts : in Array_of_Lists );
-- DESCRIPTION :
-- Returns the new mixed cell, with the new re-lifted points.
procedure Unfolding ( mixsub : in out Mixed_Subdivision );
-- DESCRIPTION :
-- A collection of cells, all with the same normal, will be unfolded.
end Unfolding_Subdivisions;