You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.6 widened exact boolean from half-space-bounded difference to coaxial
prisms by reducing the pair to a certified 2D cross-section overlay
(0fafffe). That covers the dominant building-model case — a wall with
rectangular openings — but still refuses:
operands whose extrusion axes are not parallel;
unions of prisms with differing z-spans (the result is a stepped solid, not
a prism);
any operand with a curved face.
CGAL: Nef_polyhedron_3 performs exact boolean over arbitrary polyhedra.
OCCT: BRepAlgoAPI_* over general B-rep.
Depends on
v0.7 measurement and v0.8 repair. A general boolean is checked by volume
identities (|A ∪ B| + |A ∩ B| = |A| + |B|), and those are unavailable until
measurement exists.
Scope
Exact boolean over general planar-faced solids: convex and non-convex,
arbitrary orientation, including results of prior exact operations.
Every face-plane classification and edge-crossing decision goes through
certified predicates. Where a predicate cannot decide, the operation
refuses — it must never fall back to a tolerance comparison for a decision
it claimed to make exactly.
Coplanar face pairs handled explicitly. This is the case that breaks naive
implementations: two solids sharing a face plane produce zero-area or
duplicated faces unless the shared region is classified deliberately.
The v0.5 fixture corpus already contains a coplanar-contact fixture and a
near-degenerate half-space column; both must pass.
Not in scope
Curved-surface operands. Cylinders, spheres and tori as boolean operands need
general curved surface/surface intersection, which is separate work. Note this
now includes results of v0.6's exact revolution, which produces cylindrical
faces — those must continue to refuse by name.
Problem
v0.6 widened exact boolean from half-space-bounded difference to coaxial
prisms by reducing the pair to a certified 2D cross-section overlay
(
0fafffe). That covers the dominant building-model case — a wall withrectangular openings — but still refuses:
operands whose extrusion axes are not parallel;
unions of prisms with differing z-spans (the result is a stepped solid, not
a prism);
any operand with a curved face.
CGAL:
Nef_polyhedron_3performs exact boolean over arbitrary polyhedra.OCCT:
BRepAlgoAPI_*over general B-rep.Depends on
v0.7 measurement and v0.8 repair. A general boolean is checked by volume
identities (
|A ∪ B| + |A ∩ B| = |A| + |B|), and those are unavailable untilmeasurement exists.
Scope
arbitrary orientation, including results of prior exact operations.
certified predicates. Where a predicate cannot decide, the operation
refuses — it must never fall back to a tolerance comparison for a decision
it claimed to make exactly.
implementations: two solids sharing a face plane produce zero-area or
duplicated faces unless the shared region is classified deliberately.
near-degenerate half-space column; both must pass.
Not in scope
Curved-surface operands. Cylinders, spheres and tori as boolean operands need
general curved surface/surface intersection, which is separate work. Note this
now includes results of v0.6's exact revolution, which produces cylindrical
faces — those must continue to refuse by name.
Verification
bash scripts/gate.shboolmeshmesh oracle on the shared fixturecorpus, mirroring the discipline in boolmesh: differentially test against certified predicates #24 and Exact boolean breadth: general operand pairs, not just half-space extrusions #66.
|A ∪ B| + |A ∩ B| = |A| + |B|holds across the corpus,using the v0.7 provider.
convex-only implementation silently produces the wrong solid.
fail rather than return triangles from an exact request.