@@ -130,13 +130,15 @@ def verts(I1, J1, K1):
130130 if len (temp ) > 0 :
131131 return temp
132132
133+ equiv7_mode = False
134+
133135def generate_maximal_additive_faces (fn ):
134136 if hasattr (fn , '_maximal_additive_faces' ):
135137 return fn ._maximal_additive_faces
136138 if fn .is_discrete ():
137139 result = generate_maximal_additive_faces_discrete (fn )
138- # elif fn.is_continuous():
139- # result = generate_maximal_additive_faces_continuous(fn)
140+ elif fn .is_continuous () and not equiv7_mode :
141+ result = generate_maximal_additive_faces_continuous (fn )
140142 else :
141143 result = generate_maximal_additive_faces_general (fn )
142144 fn ._maximal_additive_faces = result
@@ -2715,36 +2717,61 @@ class FunctionalDirectedMove (FastPiecewise):
27152717 def reduced_by_components (self , covered_components , pts_of_discontinuity = True ):
27162718 domain_move = [interval_including_endpoints_if_continuous (interval , pts_of_discontinuity , self ) for interval in self .intervals ()]
27172719 covered_domains = []
2718- for component in covered_components :
2719- preimages = [ self .apply_to_coho_interval (interval , inverse = True ) for interval in component ]
2720- preimages .sort (key = coho_interval_left_endpoint_with_epsilon )
2721- covered_domain = list (intersection_of_coho_intervals ([component , preimages ]))
2722- covered_domains .append (covered_domain ) #list of open sets in the new version
2723- domain_component_open = union_of_coho_intervals_minus_union_of_coho_intervals (covered_domains ,[])
2724- domain_component = union_of_coho_intervals_minus_union_of_coho_intervals ([[interval_including_endpoints_if_continuous (interval , pts_of_discontinuity , self ) for interval in domain_component_open ]],[])
2725- domains = []
2726- for j in domain_component :
2727- keep = False
2728- for i in domain_move :
2729- if coho_intervals_intersecting (i , j ):
2730- # extend to the boundary of covered interval.
2731- keep = True
2732- break
2733- if keep :
2734- domains .append (j )
2735- extended_domains = union_of_coho_intervals_minus_union_of_coho_intervals ([domain_move , domains ], [])
2736- reduced_domains = []
2737- for i in extended_domains :
2738- i_open = open_interval (i [0 ], i [1 ])
2739- keep = True
2740- for j in domain_component_open :
2741- if coho_interval_contained_in_coho_interval (i_open , j ):
2742- # remove interval i from domain if it is fully covered.
2743- keep = False
2744- break
2745- if keep :
2746- reduced_domains .append (i )
2747- open_domains = [open_interval (i [0 ],i [1 ]) for i in reduced_domains ]
2720+ if equiv7_mode :
2721+ for component in covered_components :
2722+ preimages = [ self .apply_to_coho_interval (interval , inverse = True ) for interval in component ]
2723+ preimages .sort (key = coho_interval_left_endpoint_with_epsilon )
2724+ covered_domain = list (intersection_of_coho_intervals ([component , preimages ]))
2725+ covered_domains .append (covered_domain ) #list of open sets in the new version
2726+ domain_component_open = union_of_coho_intervals_minus_union_of_coho_intervals (covered_domains ,[])
2727+ domain_component = union_of_coho_intervals_minus_union_of_coho_intervals ([[interval_including_endpoints_if_continuous (interval , pts_of_discontinuity , self ) for interval in domain_component_open ]],[])
2728+ domains = []
2729+ for j in domain_component :
2730+ keep = False
2731+ for i in domain_move :
2732+ if coho_intervals_intersecting (i , j ):
2733+ # extend to the boundary of covered interval.
2734+ keep = True
2735+ break
2736+ if keep :
2737+ domains .append (j )
2738+ extended_domains = union_of_coho_intervals_minus_union_of_coho_intervals ([domain_move , domains ], [])
2739+ reduced_domains = []
2740+ for i in extended_domains :
2741+ i_open = open_interval (i [0 ], i [1 ])
2742+ keep = True
2743+ for j in domain_component_open :
2744+ if coho_interval_contained_in_coho_interval (i_open , j ):
2745+ # remove interval i from domain if it is fully covered.
2746+ keep = False
2747+ break
2748+ if keep :
2749+ reduced_domains .append (i )
2750+ open_domains = [open_interval (i [0 ],i [1 ]) for i in reduced_domains ]
2751+ else :
2752+ for component in covered_components :
2753+ preimages = [ self .apply_to_coho_interval (interval , inverse = True ) for interval in component ]
2754+ preimages .sort (key = coho_interval_left_endpoint_with_epsilon )
2755+ restricted_domain = intersection_of_coho_intervals ([component , preimages ])
2756+ covered_domain = [interval_including_endpoints_if_continuous (interval , pts_of_discontinuity , self ) for interval in restricted_domain ]
2757+ covered_domains .append (covered_domain )
2758+ domain_component = union_of_coho_intervals_minus_union_of_coho_intervals (covered_domains ,[])
2759+ domain_component_indices = set ([])
2760+ domain_move_indices = set (range (len (domain_move )))
2761+ domains = []
2762+ for index_i in list (domain_move_indices ):
2763+ i = domain_move [index_i ]
2764+ for index_j in range (len (domain_component )):
2765+ j = domain_component [index_j ]
2766+ if coho_interval_contained_in_coho_interval (i , j ):
2767+ # remove interval i from domain if it is fully covered.
2768+ domain_move_indices .remove (index_i )
2769+ elif coho_intervals_intersecting (i , j ):
2770+ # extend to the boundary of covered interval.
2771+ domain_component_indices .add (index_j )
2772+ domains = [[domain_move [index_i ] for index_i in sorted (domain_move_indices )], [domain_component [index_j ] for index_j in sorted (domain_component_indices )]]
2773+ union_domains = union_of_coho_intervals_minus_union_of_coho_intervals (domains , [])
2774+ open_domains = [open_interval (i [0 ],i [1 ]) for i in union_domains ]
27482775 return FunctionalDirectedMove (open_domains , self .directed_move )
27492776
27502777 def plot (self , rgbcolor = None , color = None , * args , ** kwds ):
0 commit comments