pub struct SelfIntersectionReport {Show 16 fields
pub certified_pairs: Vec<CertifiedFacePair>,
pub skipped_by_certificate: Option<CertificateScope>,
pub certificate: Option<&'static str>,
pub triangles: usize,
pub candidate_pairs: usize,
pub confirmed: Vec<FaceCrossing>,
pub rejected: usize,
pub undecided: usize,
pub undecided_pairs: Vec<UndecidedCrossing>,
pub resolved_clear: usize,
pub same_face_candidates: usize,
pub folds: Vec<FaceFold>,
pub fold_rejected: usize,
pub fold_undecided: usize,
pub truncated: bool,
pub options: SelfIntersectionOptions,
}Expand description
Outcome of solid_self_intersections.
Fields§
§certified_pairs: Vec<CertifiedFacePair>§skipped_by_certificate: Option<CertificateScope>§certificate: Option<&'static str>The whole-body proof that stood in for the scan, when one did: the counters below then read zero because no mesh was built, and this names why, so a caller can still tell a proved-clean body from a scan that never ran.
triangles: usize§candidate_pairs: usizeTriangle pairs whose boxes overlapped and that survived the welded- vertex skip — the work the exact confirmation was offered.
confirmed: Vec<FaceCrossing>Mesh crossings between DISTINCT faces that the exact-surface straddle test confirmed, one entry per face pair (deepest kept).
rejected: usizeMesh crossings between distinct faces the straddle test REJECTED — tangent neighbours and chord error. A large number here beside zero confirmations is the detector working, not failing.
undecided: usizeMesh crossings whose confirmation could not be evaluated (the witness
is not a point both faces own, or a projection or a normal failed) and
that the carriers did not settle either when asked again on their exact
geometry (resolve.rs). Never counted as either verdict; a caller that
accepts a body must not read zero confirmed beside a nonzero count
here as clean.
undecided_pairs: Vec<UndecidedCrossing>The first MAX_LISTED_UNDECIDED of those, with their faces and cause.
resolved_clear: usizeCandidates the mesh confirmation left undecided that the carriers then CLEARED: every point of the carriers’ common curve near the crossing lies on an edge both faces share, or outside a trim.
same_face_candidates: usizeMesh crossings between two triangles of ONE face: the candidates the fold confirmation was offered. A candidate is not a defect — a sharply curved face’s chords cross each other without the face folding.
folds: Vec<FaceFold>Faces confirmed to FOLD THROUGH THEMSELVES in 3D, one entry per FACE (the widest-separated hit kept). The face is the stable unit: a fold region produces as many triangle pairs as the mesh happens to have there, and a denser mesh would rewrite that number without the face being any more or less folded.
fold_rejected: usizeSame-face candidates the fold confirmation REJECTED — the two feet came back within one tessellation cell of each other (chord error on a tight curve), or their normals were parallel (a pole). A large number here beside zero folds is the confirmation working, not failing.
fold_undecided: usizeSame-face candidates whose confirmation could not be evaluated: a
projection, a normal or a containment query failed, or a corner did not
come back onto its own carrier. Never counted as either verdict, and a
caller must not read an empty folds beside a large one of these as
“no folds”.
truncated: boolThe mesh exceeded max_triangles and was not scanned.
options: SelfIntersectionOptionsImplementations§
Source§impl SelfIntersectionReport
impl SelfIntersectionReport
Sourcepub fn is_flagged(&self) -> bool
pub fn is_flagged(&self) -> bool
The predicate for a caller that has opted into this check: the solid passes through itself — two faces crossing, or ONE face folded through itself. Both are the same defect to a caller deciding whether to accept a result, so both are in the predicate.
Sourcepub fn summary(&self) -> Option<String>
pub fn summary(&self) -> Option<String>
One line naming the worst crossing or fold, or None when nothing was
confirmed.
Sourcepub fn fold_summary(&self) -> Option<String>
pub fn fold_summary(&self) -> Option<String>
One line naming the worst FOLD, or None when no face folded.