Skip to main content

boolean_with_report

Function boolean_with_report 

Source
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.