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 (reflection closure = Kawasaki, Maekawa), assigns per-sector isometries, 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 has_duplicate_ray : Geom.point -> (Geom.point * 'a) array -> boolval sector_isometries :
Geom.point ->
(Geom.point * 'a) array ->
Isometry.t arrayval effective_valley : bool -> Isometry.t -> Isometry.t -> boolval is_identity : Isometry.t -> boolval closure_ok : Geom.point -> (Geom.point * 'a) array -> boolval on_unit_boundary : Geom.point -> boolval strictly_interior : Geom.point -> boolval sector_of_poly :
Geom.point ->
(Geom.point * 'a) array ->
(Geom.point array * Isometry.t) ->
intval in_ccw_arc : Geom.point -> Geom.point -> Geom.point -> Geom.point -> boolval admissible_sectors :
stayer:stayer ->
Geom.point ->
(Geom.point * 'a) array ->
int array ->
int ->
int listval prepipeline_geom :
elem list ->
(Geom.point * (Geom.point * elem) array, string) Stdlib.resultval prepipeline :
elem list ->
(Geom.point * (Geom.point * elem) array, 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_o : Geom.point;sg_rays : (Geom.point * elem) array;sg_faces : Geom.point array array;sg_nf : int;sg_n : int;sg_tsec : Isometry.t array;sg_sec : int array;sg_ray_rep : Isometry.t array;sg_g_rank : int array;sg_root : int;sg_marks : Fold_state.mark array;sg_old_hinges : Fold_state.hinge array;sg_hinge_ray : int option array;mutable sg_overlaps : (int * int) list option;}val mk_sector_geom :
Fold_state.t ->
o:Geom.point ->
rays:(Geom.point * elem) array ->
faces:Geom.point array array ->
nf:int ->
sector_geomval pipeline_solve :
sector_geom ->
valley:bool array ->
over:(int * int) list ->
(pipeline, string) Stdlib.resultval pipeline_at :
Fold_state.t ->
o:Geom.point ->
rays:(Geom.point * elem) array ->
faces:Geom.point array array ->
nf:int ->
over:(int * int) list ->
(pipeline, string) Stdlib.resultval in_bounds : 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 collapse_runs :
Fold_state.t ->
elem list ->
over:(int * int) list ->
stayer:stayer ->
(Fold_state.t list, string) Stdlib.resultval collapse_all_patterns :
Fold_state.t ->
elem list ->
over:(int * int) list ->
stayer:stayer ->
patterns:bool list list ->
(Fold_state.t list, string) Stdlib.result listval collapse :
Fold_state.t ->
elem list ->
over:(int * int) list ->
stayer:stayer ->
(Fold_state.t, string) Stdlib.resultval collapse_all :
Fold_state.t ->
elem list ->
over:(int * int) list ->
stayer:stayer ->
(Fold_state.t list, string) Stdlib.result