Commit Graph

2 Commits

Author SHA1 Message Date
bherbruck b27857a3c3 surface.plane_p1 harness: guard upstream UB, exact copies, extend op, adversarial fixtures
Shim: Reverse/Rebuild report SM_ERR when no NURB can be made (upstream
dereferences NULL); side_free_copy keeps a degenerate placement exactly.
ffi: reject |n|^2 < 1e-24 normals (uninitialised axes upstream) and
non-positive extension distances (endless loop upstream). New Extend op
(both CreateExtendedSurface overloads), generated and in extend.json; the
reviewer's adversarial cases in zz_adv.json minus the zero normal and the
lazy-NURB sequences.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V8ohWGLCzFPoZriCeSSero
2026-10-13 15:50:15 -04:00
bherbruck 5e87f54fff port: surface.plane_p1 (SmPlane part 1, partial)
Plane kind of Surface with constructors, evaluation, projection, MakeNurb,
DropPointFast, GlobalLineIntersect, TrimPlaneLineToPlaneDomain,
CreateIsoParametricCurve, DropCurve, CoincidenceCheck, Reparameterize,
ToggleSwapUVBit, RebuildSTEPFromNURBParameters and the re-dispatched
SmBSplineSurface methods; C++ shim, ffi binding, difftest runner and
fixtures. Wires the UNPORTED(surface.plane_p1) stubs in
nurbs.b_spline_surface_p1/p2.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V8ohWGLCzFPoZriCeSSero
2026-10-13 14:48:19 -04:00