@@ -130,13 +130,15 @@ def verts(I1, J1, K1):
130
130
if len (temp ) > 0 :
131
131
return temp
132
132
133
+ equiv7_mode = False
134
+
133
135
def generate_maximal_additive_faces (fn ):
134
136
if hasattr (fn , '_maximal_additive_faces' ):
135
137
return fn ._maximal_additive_faces
136
138
if fn .is_discrete ():
137
139
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 )
140
142
else :
141
143
result = generate_maximal_additive_faces_general (fn )
142
144
fn ._maximal_additive_faces = result
@@ -2715,36 +2717,61 @@ class FunctionalDirectedMove (FastPiecewise):
2715
2717
def reduced_by_components (self , covered_components , pts_of_discontinuity = True ):
2716
2718
domain_move = [interval_including_endpoints_if_continuous (interval , pts_of_discontinuity , self ) for interval in self .intervals ()]
2717
2719
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 ]
2748
2775
return FunctionalDirectedMove (open_domains , self .directed_move )
2749
2776
2750
2777
def plot (self , rgbcolor = None , color = None , * args , ** kwds ):
0 commit comments