Files
solvecraft/crates/engine
jyviko 0a216d6925 kernel: extend on SMLib: the surface's own extension, up to a target by trim, to bounds by untrim
extend_surface keeps its signature, options and error messages. One model:
SMLib extends the surface past a side of the face's parameter box
(smlib_extend_sheet, CreateExtendedSurface: natural continues the end spans,
tangent G1, curvature G2) and the face stays one face on it, tagged so the
face is Modified and its sides keep their edges. Several picked sides grow
the box on each. Up to a target, the face is extended 50 body sizes past
its edge and trimmed back with trim_keep (SMLib's exact intersection),
keeping the piece the face lies in. Back to the bounds is untrim of the
picked edge's face, in place, with its holes; one already there is
refused. A plane's straight edges with neighbours lengthened still go
through surfaces::extend. Edges are picked on the schema 4 record (samples
of each edge's curve), an edge two faces share or of a hole refused as before.

Not ported (every far edge there was a cubic fitted through marched
samples, which the exact-B-splines rule forbids): an edge that is not a
whole side of its surface's box (trimmed edges, curved planar edges such as
a disc's, a notch), mitred corners on such faces, sides run square to the
edge on a non-box face, and bodies of more than one face. These now answer
"not supported yet: ...". Tangent and curvature no longer add a separate
run-off face: SMLib's G1/G2 extension is one face (the engine's
surface.extend description says so).

Tests ported keeping their assertions: the planar extension, the cylinder
strip along its axis, around and both (now an extruded arc, not a truck
revolution), the extruded strip, the parabola extended naturally (now a
conic extruded), back to bounds (the saddle from loft_sheet and trim),
hostile requests. Deleted, as what they test no longer exists:
neighbours_lengthened_or_square, self_intersecting_extensions_are_refused,
a_disc_grows_by_its_curved_edges, neighbouring_faces_extend_together, the
tangent/curvature run-off half of the B-spline test, and
a_continued_bspline_is_unchanged_on_its_range (the deleted continue_span).

SMLIB_REV: fork 9531966 (tags carried through untrim and extend).

(not built: base in progress)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017itGh5fpMEousnZ91cYcVt
2026-10-27 02:28:48 -04:00
..