pub fn loops_contain<S: Scalar>(
model: &Model<S>,
surface: &NurbSurface3D<S>,
coedges: &[CoedgeId],
query: Vector2<S>,
max_nodes: usize,
epsilon: S,
seed: u64,
) -> GeopResult<PointClassification>Expand description
The same classification as face_contains, but against an explicit set
of loops rather than all of a face’s.
Exists because “inside this face” and “inside this face’s outer loop”
are different questions, and validation needs the second: a hole has to
lie within the outer boundary, and asking face_contains would only
ever answer OnCoedge for a point taken from the hole itself. Splitting
the ray casting out here keeps one implementation of it rather than a
second copy that could drift.