design: first-class topology in Fold_state (pocket-slice prerequisite) #26
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fold_state.tis a bag of convex faces plus a pairwise order matrix (fold_state.ml:9) — no edges, no persistent crease identity, no face adjacency. Crease assignments live in a side list of geometric chords; the edge set is reconstructed at emission by geometric matching (fold_emit.ml:42-77), resting on the unstated invariant that chords of distinct faces have disjoint interiors.Everything the next slices need runs into this gap: taco-taco/taco-tortilla validity checks are deferred exactly for lack of crease adjacency (
fold_state.ml:38-40),unfoldhas nothing to un-assign or merge over an append-only chord list, the precrease U/0° bug (#27) exists because assignment is keyed to the act of cutting geometry rather than to a crease entity, and material crease semantics (#28, option a) wants crease entities to refer to. The literature model — faces + edges + faceOrders as one complex — has edges first-class; our FOLD output does, our state doesn't.Do the retrofit as part of the pocket-slice design, not per-feature afterwards — three separate retrofits produce three inconsistent versions.
The topology retrofit is done and on
main.Fold_state.tnow carries a first-classedgearray —left/rightface adjacency, persistentcrease_id,eassign/eprov— and emission looks assignments up viaedge_betweeninstead of reconstructing chords by geometric matching. Thecrease_recordside-list is gone.Landed across:
73b385f(edge entity + adjacency) →4e38bfd(accumulate + split edges, emit from state) →ea972ec(dropcrease_record) → PR #40, thenneighbors/crease_piece_on_facein PR #43.Closing. The pocket-slice work this unblocked lives in its own issues now — taco-taco/taco-tortilla in #47, crease-segment referencing in #50.