Beloch.CollapseSingle-vertex collapse: fold along n >= 4 material crease segments sharing one interior endpoint O: the flat end state of a multi-crease move (rabbit ear hull2020, Thm 8.5). Skips the 3D intermediate entirely: checks the end state exists (Kawasaki and Maekawa where the anchor surrounds O, the closure of the paper paths everywhere), moves each face by the creases on its paper path (ADR 0044), enumerates valid layer orders.
val common_vertex : elem list -> Geom.point optionval far_of : Geom.point -> elem -> Geom.pointval sort_ccw : Geom.point -> elem list -> (Geom.point * elem) listval effective_valley : bool -> Isometry.t -> Isometry.t -> boolval is_identity : Isometry.t -> boolval closure_ok : Geom.point -> (Geom.point * 'a) array -> boolval far_on_flap_boundary : Fold_state.t -> Geom.point -> elem -> boolval interior_vertex : Fold_state.t -> int list -> Geom.point -> boolval sector_of_poly :
Geom.point ->
(Geom.point * 'a) array ->
(Geom.point array * Isometry.t) ->
intval sector_of_poly_opt :
Geom.point ->
(Geom.point * 'a) array ->
(Geom.point array * Isometry.t) ->
intval in_ccw_arc : Geom.point -> Geom.point -> Geom.point -> Geom.point -> boolval in_closed_sector :
Geom.point ->
Geom.point ->
Geom.point ->
Geom.point ->
boolval admissible_sectors :
stayer:stayer ->
Geom.point ->
(Geom.point * 'a) array ->
int array ->
int ->
int listval stayer_sectors :
stayer:stayer ->
anchor:bool array ->
Geom.point ->
(Geom.point * 'a) array ->
int array ->
int ->
(int list, string) Stdlib.resultval anchor_faces :
Fold_state.t ->
Geom.point ->
Geom.point array list option ->
bool arrayval surrounded : Fold_state.t -> Geom.point -> bool array -> boolval rays_of :
Geom.point ->
elem list ->
((Geom.point * elem) array, string) Stdlib.resultval prepipeline_geom :
?anchor:Geom.point array list ->
Fold_state.t ->
elem list ->
(Geom.point * (Geom.point * elem) array * bool, string) Stdlib.resulttype pipeline = {root : int;candidate_at : root:int ->
base:Isometry3.t ->
int array ->
(Fold_state.t, Fold_state.violation) Stdlib.result;distinct : int array list;}type sector_geom = {sg_g : Fold_state.t;sg_faces : Geom.point array array;sg_nf : int;sg_nt : int;sg_motion : Isometry.t array;sg_unit : int array;sg_nu : int;sg_stat_cons : (int * int) list;sg_letters : (int * int * int * bool) list;sg_g_rank : int array;sg_root : int;sg_marks : Fold_state.mark array;sg_new_hinges : Fold_state.hinge array;mutable sg_overlaps : (int * int) list option;}val tip_of : Fold_state.t -> sec:int array -> anchor:bool array -> bool arrayval tip_base : Fold_state.t -> sec:int array -> tip:bool array -> bool arrayval stacking_units :
Fold_state.t ->
n:int ->
sec:int array ->
tip:bool array ->
tip_unit:int array ->
int array * int * (int * int) listval mk_sector_geoms :
Fold_state.t ->
o:Geom.point ->
rays:(Geom.point * elem) array ->
es:elem array ->
faces:Geom.point array array ->
nf:int ->
anchor:bool array ->
(sector_geom list, string) Stdlib.resultval pipeline_solve :
sector_geom ->
valley:bool array ->
over:(int * int) list ->
(pipeline, string) Stdlib.resultval hull_cache : (Fold_state.t * Geom.point array) option Stdlib.refval table_hull : Fold_state.t -> Geom.point arrayval in_bounds : Geom.point array -> Fold_state.t -> boolval anchor_realization :
Fold_state.t ->
root:int ->
candidate_at:
(root:int ->
base:Isometry3.t ->
int array ->
(Fold_state.t, Fold_state.violation) Stdlib.result) ->
int array ->
(Fold_state.t, string) Stdlib.resultval pool_of_runs :
[ `Err of string | `Run of (Fold_state.t, string) Stdlib.result list ] list ->
(Fold_state.t list, string) Stdlib.resultval fan_setup :
?anchor:Geom.point array list ->
Fold_state.t ->
elem list ->
stayer:stayer ->
(Geom.point
* (Geom.point * elem) array
* bool
* Fold_state.face array
* int
* bool array
* int list,
string)
Stdlib.resultval runs_of_sector :
Fold_state.t ->
(sector_geom list, string) Stdlib.result ->
valley:bool array ->
over:(int * int) list ->
[> `Err of string | `Run of (Fold_state.t, string) Stdlib.result list ] listval collapse_runs :
?anchor:Geom.point array list ->
Fold_state.t ->
elem list ->
over:(int * int) list ->
stayer:stayer ->
(Fold_state.t list, string) Stdlib.resultval collapse_all_patterns :
?anchor:Geom.point array list ->
?sectors:int list ->
Fold_state.t ->
elem list ->
over:(int * int) list ->
stayer:stayer ->
patterns:bool list list ->
(Fold_state.t list, string) Stdlib.result listval tips :
?anchor:Geom.point array list ->
Fold_state.t ->
elem list ->
stayer:stayer ->
(int * bool array) listval collapse :
?anchor:Geom.point array list ->
Fold_state.t ->
elem list ->
over:(int * int) list ->
stayer:stayer ->
(Fold_state.t, string) Stdlib.resultval collapse_all :
?anchor:Geom.point array list ->
Fold_state.t ->
elem list ->
over:(int * int) list ->
stayer:stayer ->
(Fold_state.t list, string) Stdlib.result