Skip to content

kernel: tangent fillet rims leave unpaired edges on otherwise-correct analytic unions (stator: ~100, 12 filleted posts: ~180) #902

Description

@ecto

After #901 the rana-60 stator is analytic and volume-correct (7854 vs 7848 mm³), but its export mesh still carries ~100 unpaired (net-directed) edges and 2 over-used; ring ∪ 12 filleted posts carries ~180 (+0.07% volume). The plain-post case is clean at 0, so the residue is at the fillet blocks' tangent rims, not the caps.

Smallest repro (helpers in crates/vcad-kernel-booleans/tests/coplanar_cap_union.rs): ring() ∪ fillet_block(1.0) — correct volume, 8 open edges. The block's fillet arc (r 1.05) ends exactly on the bore circle (r 24) at the tangent point, which is also the block's corner. Within ~0.06 mm of that point the two arcs are microns apart, and the two faces that share the rim sample it differently: e.g. one side has the edge (23.857, 2.617) → (23.716, 3.679) where the other has vertices at (23.7187, 3.6529) and (23.7122, 3.7057). Volume-neutral hairline t-junctions, but every downstream boolean and every exporter sees an open shell.

Done when: bore_circle_cuts_a_cap_whose_fillet_is_tangent_to_it can also assert mesh_report(..).open_edges == 0.

🤖 Filed by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingkernelRust kernel cratesrobustnessEdge cases / numerical robustness

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions