pub fn shell_contains<S: Scalar>(
model: &Model<S>,
shell_id: ShellId,
point: Vector3<S>,
max_nodes: usize,
epsilon: S,
seed: u64,
) -> GeopResult<PointClassification>Expand description
Classify point against shell_id’s boundary: PointClassification::OnVertex /
PointClassification::OnEdge / PointClassification::OnFace if the
query point itself coincides with the boundary, else
PointClassification::Inside/PointClassification::Outside via ray
casting.
The ray direction is drawn from a seeded PRNG (see Rng) and retried
(up to a bounded number of attempts, see [cast_ray]) until one resolves
cleanly. The even/odd parity of that crossing count then determines
inside/outside, with no dependence on any face’s normal orientation
(faces in this crate aren’t guaranteed to wind consistently).
max_nodes bounds both the BFS containment searches and the DFS
intersection searches; epsilon is the shared geometric tolerance;
seed seeds the direction PRNG.