Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Dynlift/dynamic_mixed_subdivisions.ads, Revision 1.1
1.1 ! maekawa 1: with Standard_Integer_Vectors; use Standard_Integer_Vectors;
! 2: with Standard_Floating_Vectors;
! 3: with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors;
! 4: with Triangulations; use Triangulations;
! 5: with Integer_Faces_of_Polytope; use Integer_Faces_of_Polytope;
! 6: with Integer_Mixed_Subdivisions; use Integer_Mixed_Subdivisions;
! 7: with Arrays_of_Integer_Vector_Lists; use Arrays_of_Integer_Vector_Lists;
! 8:
! 9: package Dynamic_Mixed_Subdivisions is
! 10:
! 11: -- DESCRIPTION :
! 12: -- This package provides implementations of the dynamic lifting
! 13: -- algorithm for the construction of a mixed subdivision.
! 14:
! 15: -- OPTIONS :
! 16: -- 1. Choice of the order of the points;
! 17: -- 2. For vertices or not, allows to add interior points;
! 18: -- 3. With flattening or not, allows maximum lifting value.
! 19:
! 20: -- DATA STRUCTURES :
! 21:
! 22: type Face_Structure is record
! 23: l,last : List; -- l contains the lifted points of the faces,
! 24: -- last is a pointer to the last element of l
! 25: t : Triangulation; -- triangulation of the points in l
! 26: f : Faces; -- k-faces of conv(l)
! 27: end record;
! 28: type Face_Structures is array(integer range <>) of Face_Structure;
! 29:
! 30: -- BASIC VERSIONS : WITHOUT OUTPUT GENERICS :
! 31:
! 32: procedure Dynamic_Lifting
! 33: ( n : in natural; mix : in Vector; points : in Array_of_Lists;
! 34: order,inter,conmv : in boolean; maxli : in natural;
! 35: mixsub : in out Mixed_Subdivision;
! 36: fs : in out Face_Structures;
! 37: nbsucc,nbfail : in out Standard_Floating_Vectors.Vector );
! 38:
! 39: -- DESCRIPTION :
! 40: -- Application of the dynamic lifting algorithm to the points.
! 41:
! 42: -- ON ENTRY :
! 43: -- n dimension before lifting;
! 44: -- mix type of mixture;
! 45: -- points tuple of lists of points of length n;
! 46: -- order if true, then the points are already ordered and will
! 47: -- be processed like they occur in the list,
! 48: -- if false, then a random order will be chosen;
! 49: -- inter if true, then the list may contain interior points,
! 50: -- that are points x in conv(l\{x}),
! 51: -- if false, no interior points occur in the list;
! 52: -- conmv if true, then online checks on zero contributions will
! 53: -- be made, otherwise this will not happen;
! 54: -- maxli maximum value of the lifting function,
! 55: -- if = 0, then no flattening will be applied,
! 56: -- if > 0, then no points will be given a lifting value
! 57: -- larger than maxli, eventually flattening will be applied;
! 58: -- mixsub regular mixed subdivision of the lifted points;
! 59: -- fs the face structures of the lower hulls of the lifted
! 60: -- points, necessary to re-start the algorithm efficiently;
! 61: -- nbsucc number of successful face-face combinations;
! 62: -- nbfail number of unsuccessful face-face combinations.
! 63:
! 64: -- ON RETURN :
! 65: -- mixsub regular mixed subdivision of the lifted points;
! 66: -- fs face structures of the updated lower hulls;
! 67: -- nbsucc updated number of successful face-face combinations;
! 68: -- nbfail updated number of unsuccessful face-face combinations.
! 69:
! 70: -- EXTENDED VERSIONS : WITH OUTPUT GENERICS
! 71:
! 72: generic
! 73: with procedure Before_Flattening
! 74: ( mixsub : in out Mixed_Subdivision; fs : in Face_Structures );
! 75:
! 76: -- DESCRIPTION :
! 77: -- Before flattening, the current mixed subdivision and face
! 78: -- structures are given as parameter to the procedure above.
! 79:
! 80: procedure Dynamic_Lifting_with_Flat
! 81: ( n : in natural; mix : in Vector; points : in Array_of_Lists;
! 82: order,inter,conmv : in boolean; maxli : in natural;
! 83: mixsub : in out Mixed_Subdivision;
! 84: fs : in out Face_Structures;
! 85: nbsucc,nbfail : in out Standard_Floating_Vectors.Vector );
! 86:
! 87: -- DESCRIPTION :
! 88: -- Application of the dynamic lifting algorithm to the points.
! 89: -- Before flattening, the generic procedure will be invoked.
! 90: -- The parameters have the same meaning as in the basic version.
! 91:
! 92: generic
! 93: with procedure Process_New_Cells
! 94: ( mixsub : in out Mixed_Subdivision;
! 95: i : in natural; point : in vector );
! 96:
! 97: -- DESCRIPTION :
! 98: -- After the addition of a new point to the ith component,
! 99: -- this lifted point together with the new mixed cells are returned.
! 100: -- After the computation of the initial cell, i=0.
! 101:
! 102: procedure Dynamic_Lifting_with_New
! 103: ( n : in natural; mix : in Vector; points : in Array_of_Lists;
! 104: order,inter,conmv : in boolean; maxli : in natural;
! 105: mixsub : in out Mixed_Subdivision;
! 106: fs : in out Face_Structures;
! 107: nbsucc,nbfail : in out Standard_Floating_Vectors.Vector );
! 108:
! 109: -- DESCRIPTION :
! 110: -- Application of the dynamic lifting algorithm to the points.
! 111: -- After each addition of a point, the generic procedure will
! 112: -- be invoked.
! 113: -- The parameters have the same meaning as in the basic version.
! 114:
! 115: generic
! 116: with procedure Before_Flattening
! 117: ( mixsub : in out Mixed_Subdivision; fs : in Face_Structures );
! 118:
! 119: -- DESCRIPTION :
! 120: -- Before flattening, the current mixed subdivision with
! 121: -- the current lists of lifted points are given.
! 122:
! 123: with procedure Process_New_Cells
! 124: ( mixsub : in out Mixed_Subdivision;
! 125: i : in natural; point : in vector );
! 126:
! 127: -- DESCRIPTION :
! 128: -- After the addition of a new point to the ith component,
! 129: -- this lifted point together with the new simplices are returned.
! 130: -- After the computation of the initial cell, i=0.
! 131:
! 132: procedure Dynamic_Lifting_with_Flat_and_New
! 133: ( n : in natural; mix : in Vector; points : in Array_of_Lists;
! 134: order,inter,conmv : in boolean; maxli : in natural;
! 135: mixsub : in out Mixed_Subdivision;
! 136: fs : in out Face_Structures;
! 137: nbsucc,nbfail : in out Standard_Floating_Vectors.Vector );
! 138:
! 139: -- DESCRIPTION :
! 140: -- Application of the dynamic lifting algorithm to the list l.
! 141: -- Before flattening, the first generic procedure will be invoked.
! 142: -- After each addition of a point, the second generic procedure
! 143: -- will be invoked.
! 144: -- The parameters have the same meaning as in the basic version.
! 145:
! 146: end Dynamic_Mixed_Subdivisions;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>