axiolid-heal
Explicit diagnosis and opt-in repair contracts for dirty geometry.
| Latest release | 0.3.4 (2026-11-04) |
| crates.io | axiolid-heal |
| Facade | axiolid feature heal |
| Layer | algorithms (algorithm.repair) |
| API documentation | rustdoc · docs.rs |
| Source | crates/algorithms/repair/heal/ |
Overview
Explicit diagnosis and opt-in repair of triangle meshes. diagnose reports non-manifold edges, inconsistent winding, boundary edges, duplicate vertices, degenerate triangles and exact self-intersections without touching the mesh. Repairs (weld vertices, drop degenerate elements, split T-junctions, unify orientation, orient outward) run only when a caller names them in a RepairPlan, and the RepairReport records what was applied, what was skipped and what happened to each attribute channel. There is no repair-everything mode, and no other operation heals implicitly.
Depends on
Changes
Latest release, 0.3.4 (2026-11-04):
Added
RepairAction::SplitTJunctionsandsplit_t_junctionssplit triangle edges at vertices lying on them within tolerance, so a mesh closed up to T-junctions becomes a closed oriented cycle. It adds no vertex and reports the deviation it accepted and the triangles it declined to split (#416).
Fixed
self_intersectionsdecides coplanar triangle pairs exactly at any finite coordinate scale: at about 1e154 and above an overlapping pair was reported as disjoint (and panicked in a debug build), because theorient2dit relies on overflowed. The fix is inaxiolid-predicates(#404).
Full history: crates/algorithms/repair/heal/CHANGELOG.md