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§
- Half
Spaces - 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
facestands withinfitofregion:Ok(())when proved, else what kept it from being proved (see the module documentation for the argument and its one input from the mesher).