pub struct LoopCrossingReport {
pub loops: usize,
pub chords: usize,
pub crossings: Vec<LoopCrossing>,
pub unreadable: Vec<String>,
}Expand description
Outcome of loop_self_crossings.
Fields§
§loops: usizeLoops scanned.
chords: usizeChords tested — the sampled trim polygon’s segments, summed over loops.
crossings: Vec<LoopCrossing>One entry per crossing COEDGE PAIR per loop, first one found kept. The
pair is the stable half: a denser sampling moves the crossing’s uv
without changing which two trims cross.
Two kinds of crossing are deliberately NOT here, both because the two strands are the same curve twice rather than two parts of a boundary:
- a crossing within
assembler_weldof one of the loop’s own VERTICES. Two trims arriving at one vertex are fitted independently, so each ends a fit-accuracy away from it and near the vertex they overlap. Measured over the case population on 2026-09-13, every such hit sat within 2.4e-7 of a vertex and the one true crossing sat 1.8e-1 from one — four orders of margin either side of the band, not a threshold decision. The cost is stated: a genuine bowtie whose crossing is inside that band of a vertex is not reported. - a crossing between two DIFFERENT coedges that use the SAME EDGE — a seam edge, which a periodic face’s loop traverses once each way. The two are one 3D curve under two fits, so they cannot cross on the surface; where the fits wobble past each other they only look like it. A coedge against ITSELF is a different question and is asked.
unreadable: Vec<String>Loops whose pcurves could not be evaluated, face/loop: reason. A scan
that could not read a loop did not clear it, so a caller must not read
an empty crossings beside a non-empty this as “no crossings”.
Implementations§
Trait Implementations§
Source§impl Clone for LoopCrossingReport
impl Clone for LoopCrossingReport
Source§impl Debug for LoopCrossingReport
impl Debug for LoopCrossingReport
Auto Trait Implementations§
impl Freeze for LoopCrossingReport
impl RefUnwindSafe for LoopCrossingReport
impl Send for LoopCrossingReport
impl Sync for LoopCrossingReport
impl Unpin for LoopCrossingReport
impl UnsafeUnpin for LoopCrossingReport
impl UnwindSafe for LoopCrossingReport
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more