Expand description
Offsetting and thickening sheets: a face or an open shell moved along its own normals, and the solid between a sheet and its offset.
Every face moves on its own chart: the moved surface answers, at the old
surface’s (u, v), the old point moved the distance along the normal
there. An analytic surface has such a parallel in its own family (a
plane translated, a cylinder, cone, sphere or torus with its radius
changed), and it is used once it is measured to agree with the moved
points. Any other surface (a B-spline, a revolution, an extrusion) is
fitted to the moved points at their own parameters, refined until the
fit, measured between the fitted points against the exact offset, is
within the approximation tolerance. Where the finest fit still misses
it (the offset of a fitted surface is only as smooth as that surface’s
normal), the closest fit is kept if it is within the fit’s bound: the
larger of the face’s own tolerance and a ten-thousandth of the
distance. The measured deviation widens the moved face’s tolerance,
which is where it is reported. Because the chart
is kept, every pcurve of the sheet carries over unchanged, so a trimmed
face, holes and all, is trimmed along the same chart curves as its original.
Edges and vertices move the same way: each point along the normal of the faces it bounds. A line or a circle whose move is a translation or a similarity stays a line or a circle (checked at samples, not assumed); any other edge is fitted at its own parameters the same way, its bound the largest of its faces’. Where two faces meet, both must move the shared boundary to the same place: faces meeting tangentially do, faces meeting at a crease do not, and an offset sheet refuses a crease by name rather than tearing or patching it.
Thickening builds the sheet moved to both of its sides (or the sheet itself and one side) and closes the gap along every free edge with the ruled face between the edge and its offset: a plane along a straight edge of a constant normal, a cylinder along a circle whose normal runs along its axis, and otherwise a B-spline fitted to the rulings on the edge’s own parameter, its deviation recorded the same way. The pieces share their edges by construction, so the shell closes without sewing.
A thickened sheet joins its faces across a crease with a mitre, as a solid’s walls meet when it is hollowed: in each layer the two faces’ moved surfaces are cut back or run on to where they cross, found beside each point of the crease in the plane square to it there. A crease is joined where it runs from one border of the sheet to another, each end a vertex where it meets one free edge of each of its two faces, and where those borders and their offsets lie square to it (as the walls of a profile swept square to its plane do), so the side along each such border is flat and reaches the mitre. The mitred edges are lines and circles on analytic faces, each charted exactly on its moved face.
Refused by name: a distance beyond a face’s smallest radius of curvature on the side it moves to (checked over the face’s chart window), a free-form face whose normal is undefined somewhere the offset needs it, a crease in an offset sheet and a crease a thickened sheet cannot mitre, an edge shared by more than two faces, and a thickened sheet whose layers run into each other.
Functions§
- make_
thick_ sheet - Thicken a sheet (a face or an open shell) into a solid: the sheet
moved
thicknessalong its normals (a negative thickness against them), or by half of it to each side whenboth_sides, the two layers joined by side faces along the sheet’s free edges. - offset_
sheet - Offset a sheet (a face or a shell, open or closed) by
distancealong its normals: each face’s surface moves on its own chart, its trim and its joins to its neighbours carried over one for one, so the history maps every face, edge and vertex to the one it became.