Skip to main content

classify_face

Function classify_face 

Source
pub fn classify_face<S: Scalar>(
    model: &Model<S>,
    face_id: FaceId,
    other_solid: SolidId,
    params: RemeshParams<S>,
) -> GeopResult<FaceClassification>
Expand description

Where face_id sits relative to other_solid, decided at a single point strictly inside the face’s trimmed region.

One point is enough because remesh ran first: every curve along which the other solid’s boundary crosses this face has been imprinted, and the face split along it, so the face no longer straddles anything. Without that guarantee this would be unsound, which is why it lives here rather than as a general-purpose query.

A point that lands on the other solid’s boundary doesn’t decide it by itself: the face may lie along that boundary over an area (coincident patches, told apart by their normals), or merely touch it at a point or along a curve — a cube face resting on a sphere’s pole, say, where the sphere has no normal at all. So such a point is set aside and the next interior point tried (one per boundary coedge, see face_interior_point_where); any point off the other solid’s boundary classifies the whole face. Only if every one lies on it are the patches coincident, and their normals are compared.