Commit Graph

3 Commits

Author SHA1 Message Date
Brett Lawson 7103c46edf difftest: surface.surface_p2 SSI cases from prog_test my_test_ssi_adv
Upstream's own advanced surface/surface intersection regression
(prog_test smAdvancedTest.cpp my_test_ssi_adv -> my_test_one_ssi ->
smTopoTest.cpp my_test_ssi) was never replicated: no fixture loaded its
pt_TestFiles/ssi_*.smp part files. harness/fixturegen/ssi_adv.py turns
every (face of B-rep 0, face of B-rep 1) pair into a `gssi` case on the
face surfaces (all SmBSplineSurface) over their stored UV domains, with
the test's translation and SmApproxTol3d 1e-3.

The gssi op now compares what GlobalSurfaceIntersect returns rather than
only the curve count: every 3D and UV curve (type, full NURB), the curve
types and the deviations. It takes the optional `tol` and `translate`
(both surfaces Transform'ed first, as the test moves both B-reps), passes
all output arrays as my_test_ssi does, and on failure records only the
status on both sides. MAX_INDEX rises to 128 for the bumpy-plane nets
(82 control points per direction).

Eight part files are left out (PENDING_PR140 in the generator): their
tangent/singular start points need the SmAdvSurfaceIntersector
ComputeSingularityPoint dispatch that PR #140 adds; on #140's head all
56 pairs pass or defer. See plan/findings.md.

PARTIAL surface.surface_p2 cases=917 passed=896 failed=0 deferred=21 max_rel_err=0e0
SENSITIVE surface.surface_p2 perturbed=896 detected=896
--fuzz 300 (gssi): FUZZ-PASS, 0 crashes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:47:42 -07:00
jijinbei 875291c4d9 shim: share identical C++ helpers through sc_sm.h, sc_nlib.h, sc_gw.h
125 shims carried private copies of the same small helpers (put_vec, st,
nl_status, Rd, dump_crv, read_nurb, ...). Move the most common, byte-identical
form of each into three headers grouped by the upstream API they need, and have
those shims pull them in with `using sc::<name>;`. Shims with a different
variant keep their own copy; files touched by open PRs are left alone.
`the_context()` stays per shim (its function-local SmContext must not be shared).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FBLgPenT24P1dunqnZR1Dj
2026-10-17 06:43:03 +09:00
bherbruck 98fc6392bf surface.surface_p2: C++ shim, ffi, difftest runner and fixtures; tangent field difftest uses a real bilinear surface; findings
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V8ohWGLCzFPoZriCeSSero
2026-10-13 02:50:34 -04:00