pub fn boolean_with_report(
a: &ExactBRep,
b: &ExactBRep,
operator: BooleanOperator,
tolerance: Tolerance,
) -> Result<(ExactBRep, BooleanReport), BooleanError>Expand description
boolean, with the within-tolerance decisions it took (#236).
An exact report (BooleanReport::is_exact) means no decision used the
tolerance: the result is the exact boolean of a and b as given (see
“What a result guarantees”). Otherwise the report names each kind of
reading that fired and the furthest it moved or turned the operands,
within tolerance. At Tolerance::ZERO nothing can be read within
tolerance, so a result is always exact: operands placed with exact axis
matrices (entries 0 and +-1) meet in exactly coincident, parallel and
perpendicular faces, which the exact predicates decide.
A boolean refused at tolerance is cut again at FINER_FACTOR times
it (#332): features closer than tolerance but further apart than the
finer one are then decided exactly. The report says so
(BooleanReport::finer), and its readings lie within the finer
tolerance. Where that is refused too, the refusal at tolerance is
returned.
§Errors
As boolean.