Module polyhedron

Source
Expand description

Exact boolean over general planar-faced solids (#77).

§Why this is not a BSP tree

A BSP boolean constructs split points recursively, so each generation of cuts is computed from coordinates that were themselves computed. Error compounds with depth and the exactness claim decays silently.

Here every fragment is carried as a polygon whose plane is one of the ORIGINAL input planes, never a derived one. A face is split only against input planes, so a vertex is at worst one intersection away from input data. Classification then asks a certified predicate which side of the other solid a fragment lies on.

§Collapsed fragments are not dropped

Split points are constructed in f64 (ADR 0045, plane_crossing), so after many operations a vertex two operands should share can land a few ULPs apart, and a split through it emits a fragment that encloses no area. Deleting such fragments was tried and reverted (40b5069): the chain then completes, but the holes it leaves make the shell integrate to a plausibly wrong volume. A refusal is actionable; a wrong volume is silent. Do not reintroduce a drop-based fix (#199).

Structs§

Polyhedron
A closed solid bounded by planar polygonal faces.

Enums§

BooleanOp
Which boolean to evaluate.

Functions§

boolean_polyhedra_exact
Exact boolean over two planar-faced solids.
triangulate
Triangulate a polyhedron for measurement and diagnosis.