Skip to main content

Module certify

Module certify 

Source
Expand description

Proving that a face lies within a region bounded by planes.

A HalfSpaces is a tree of half-spaces under maxima and minima: a convex corner is the maximum of its faces’ heights, a concave edge the minimum of its two, and so on. certify_face_within proves that every point of a face stands no farther past the region than a stated fit, or finds a point that does.

The proof rests on the convex hull. Every surface kind converts exactly to a B-spline over any rectangle of its own parameters (SurfaceGeometry::to_bspline of a TrimmedSurface), and a B-spline whose weights are all positive lies in the convex hull of its control points. A plane’s height is affine, so its greatest over the hull is its greatest at a control point. The maximum of several pieces is bounded by the maximum of their bounds, and the minimum by the minimum of theirs. A rectangle whose bound is within the fit is cleared; one wholly outside the face’s trim is passed over; the rest is split in four and tried again, down to DEPTH halvings each way and BUDGET rectangles in all.

The trim is read from the face’s rings in its chart, each drawn within a chord of its edges in space through the surface’s tangent scales (ogeom_mesh::face_boundary_in_chart_met). A rectangle is passed over only where its centre lies outside the rings and every ring stands farther from that centre than the rectangle’s half diagonal and a slack of SLACK chords read in the chart at that centre. That reading of the trim is the one input the proof takes from the mesher.

Structs§

Uncertified
What kept a face from being proved within its region.

Enums§

HalfSpaces
A region of space bounded by planes, as a tree of half-spaces.

Constants§

BUDGET
How many rectangles a proof may try before what it has not cleared is taken as standing outside.
DEPTH
How many times the face’s parameter rectangle is halved each way before a part of it no bound clears is taken as standing outside.
SLACK
The chords of the trim’s drawing allowed between a rectangle and the rings before it is passed over as outside the trim.

Functions§

certify_face_within
Whether every point of face stands within fit of region: Ok(()) when proved, else what kept it from being proved (see the module documentation for the argument and its one input from the mesher).