pub fn interference_report(
reader: &Reader<'_>,
scope: &Scope,
) -> GeopResult<InterferenceReport>Expand description
Which solids of the part reader reads — its own, and those of the parts
placed in it, where they are — overlap, and by how much, and which only
touch.
A pair whose boxes are definitely apart is apart; the pairs whose boxes
could meet are found by sweeping the boxes along x (candidate_pairs),
not by comparing every pair. Any other pair is intersected, as copies in
a part of their own: a solid left is their overlap, measured by its
volume. Nothing left, the two touch if the least distance between their
faces could be zero (see could_touch), and are apart otherwise.
A pair is checked in the frame of its first solid, the second moved
relative to it; a pair of the same two shapes at the same relative pose
— every screw in its nut — is checked once ([Checked]).
Only the pairs scope asks about are looked at. Stopped part way (see
geop_core_program::watch), it says what it found and how far it got.