with Generic_Lists;
with Standard_Integer_Vectors; use Standard_Integer_Vectors;
with Standard_Integer_VecVecs; use Standard_Integer_VecVecs;
with Simplices; use Simplices;
package Triangulations is
-- DESCRIPTION :
-- This package exports a data structure for dealing with regular
-- triangulations of Newton polytopes.
-- DATA STRUCTURE :
package Lists_of_Simplices is new Generic_Lists(Simplex);
type Triangulation is new Lists_of_Simplices.List;
Null_Triangulation : constant Triangulation
:= Triangulation(Lists_of_Simplices.Null_List);
-- CREATORS :
function Create ( s : Simplex ) return Triangulation;
-- DESCRIPTION :
-- Returns a trianguation with one simplex.
procedure Update ( t : in out Triangulation; x : in Link_to_Vector );
procedure Update ( t : in out Triangulation; x : in Link_to_Vector;
newt : out Triangulation );
-- DESCRIPTION :
-- Computes new simplices which contain x, stores them in newt,
-- and adds them to the triangulation.
procedure Update_One ( t : in out Triangulation; x : in Link_to_Vector );
-- DESCRIPTION :
-- Computes new simplices that contain x and adds them
-- to the triangulation.
-- Hereby it will be assumed that adding x causes no points of t to be
-- interior.
procedure Connect ( t : in out Triangulation );
-- DESCRIPTION ;
-- Given a collection of simplices, the appropiate connections
-- between the simplices will be computed and made.
procedure Flatten ( t : in out Triangulation );
-- DESCRIPTION :
-- All simplices in t will be flattened.
-- REQUIRED :
-- Cells that are already flattened are grouped at the end of the list.
-- SELECTORS :
function Is_Vertex ( t : Triangulation; x : Vector ) return boolean;
-- DESCRIPTION :
-- Returns true if the given vector x is a vertex of one of
-- the simplices in t.
function Vertices ( t : Triangulation ) return VecVec;
-- DESCRIPTION :
-- Returns a vector with all vertices of the simplices in t.
function Vertices ( t : Triangulation; x : Vector ) return VecVec;
-- DESCRIPTION :
-- Returns a vector with all vertices of the simplices in t,
-- which contain the given vector x.
function Is_In ( t : Triangulation; x : Vector ) return boolean;
-- DESCRIPTION :
-- Returns true if the point x belongs to one of the simplices in t.
function Is_In ( t : Triangulation; x : Vector ) return Simplex;
-- DESCRIPTION :
-- If the point belongs to one of the simplices in t, then this
-- simplex is returned, otherwise, the Null_Simplex is returned.
function Is_In ( t : Triangulation; s : Simplex ) return boolean;
-- DESCRIPTION :
-- Returns true if the simplex s is contained in t.
function Volume ( t : Triangulation ) return natural;
-- DESCRIPTION :
-- Computes n! times the volume of the simplices in the triangulation.
-- DESTRUCTOR :
procedure Clear ( t : in out Triangulation );
-- DESCRIPTION :
-- Frees the allocated memory space.
end Triangulations;