Files
solvecraft/harness/cpp
Brett Lawson eee9cabf08 difftest: STEPInversion on torus and cone records read with a non-planar generator flag
The surface.surface_p2 runner gets a revolution record constructor: each side
builds a canonical torus or cone, writes it to an ASCII database record, clears
the planar generator flag in the record when asked and reads it back with
SmSurface::ReadFromDB. The shim writes with fixed precision 16, the format
SmDatabaseIOFile::OpenFileForWrite sets for ASCII files (a caller's stream keeps
its 6-digit default). 768 STEPInversion cases run through SmSurface* on tori,
cones and an apex cone: interior, seam, pole and guessed points, points off the
surface and far away, over the STEP domain and a sub-domain.

The sub-domain cases exposed a cone bug: Surface::step_inversion passed the
caller's domain to the cone, but SmCone::STEPInversion ignores crAnalDomain and
inverts over its own m_vAnalUVDomain. Only the non-planar branch reads the
domain, so a point outside the caller's sub-domain failed in Rust and succeeded
in C++. The cone now always uses its own STEP domain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEtgaA54W2nr8dK1EYp
2026-10-27 11:06:56 +01:00
..
…