pub fn normal_points_outward(
params: &ValidationParameters,
model: &Model,
solid_id: SolidId,
shell_id: ShellId,
face_id: FaceId,
) -> GeopResult<Option<Outward>>Expand description
Whether the normal of face face_id of shell shell_id points out of
the solid solid_id — None for a face without an interior point, which
check_faces_have_interior reports, or without one clear of the rest of
the solid’s boundary.
Decided at an interior point of the face: the normal points out exactly
when the solid is not on its side of the face there
(solid_contains_beside). That is a local fact, the limit as the
distance off the face goes to zero, and it is decided by a ray leaving
the face, not by a point some distance off it: on a non-convex solid a
point any fixed distance off the face may lie in another part of it.
The interior point is a free choice, and one on the solid’s boundary
elsewhere too is a bad one: a ray from the pole of an inscribed sphere,
lying in the cube’s face, passes through that vertex at its start. The
first point offered that is on nothing else is taken
(on_solid_boundary_besides).