Repository navigation
fix: a surface and a plane's curve traced on the plane, opt-in (smlib#78 5bdcddf, 14a6daa, 4c6571b, #2250) - #2253
Merged
bherbruck merged 5 commits intoNov 1, 2026
Conversation
… 4c6571b, tangency-labs#2250) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t-in (WR-682) The fork's sm_SurfacePlaneCurve (smlib 5bdcddf, 14a6daa, 4c6571b) behind fillet_surface_plane_curve_on_plane_equation: between two points on both, where they cross and the surface isn't flat, the curve is the zero set of the plane's equation on the surface, so the plane's own domain doesn't end it. Default behaviour is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its first figure was pinned before WR-682's flag existed. The flag takes 8.8e-9 off what that round removes; the body is sound either way. The tolerance stays 1e-9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MarkusReichart
marked this pull request as ready for review
November 1, 2026 18:15
bherbruck
approved these changes
Nov 1, 2026
bherbruck
left a comment
Collaborator
There was a problem hiding this comment.
Approved by the automated first-pass review: CI green, mergeable, no CI/build/dependency file changes, no red-flag patterns in added code (process/network/env/unsafe outside FFI/blobs/hidden unicode), 0 known-mismatch entries added. Logic is gated by CI and the difftest merge queue.
This was referenced Nov 1, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #2250 (smlib#78), coordinated on #2243: tangency-labs/smlib 5bdcddf, 14a6daa and 4c6571b,
sm_SurfacePlaneCurveand its call insm_SrfSrfIntersection, as the fork has them (unchanged through d01d7b0). Opt-in behindKernel::fixes.fillet_surface_plane_curve_on_plane_equation(WR-682). With the flag off, nothing changes.What it changes
A plane goes on as itself past the face it was made for.
sm_SrfSrfIntersectionmeets a plane and a surface with the analytic intersector, bounded by the plane's domain, and then with intersectors that march both surfaces in their domains. Where the curve between two points on both leaves the plane's domain, none of them reaches the end.With the flag, such a curve is the zero set of the plane's equation on the surface, traced from one point to the other by minimum-norm Newton steps. Its 3D curve and its two uv curves are cubic Hermite interpolants of the stations, a span split where a quarter point is off the exact curve by more than a tenth of the tolerance.
The case: a B-spline cylinder R 10 and the plane z = 20 + x / 2 on a patch that holds their ellipse's points at 45 and 135 degrees, but not the arc between them, which reaches y = 10.
Compared in full with the flag on and off, and identical: an analytic answer (the cylinder as itself), a flat B-spline surface, a surface touching the plane, an end off a surface.
For the maintainers
issue_2176'sthe_neighbours_keep_their_roundsruns with every flag SolidCraft turns on, so this one too. The round of the edge at (4, 28, 2) removes 0.375911976512 with the flag and 0.375911985299 without, 8.8e-9 less. The body is sound either way: same face count, manifold, check level 2 clean. I re-pinned that one figure and kept the tolerance at 1e-9. The test's volume accuracy is 1e-8. I can't say which of the two figures is nearer the true volume.geometric_g2_continuity, so it would pick this flag up.Plane::evaluate_pointclamps unless out-of-bounds evaluation is on. The test reads it withevaluate_point_fast.Deviations from the fork are in the header of
surface_plane_curve.rs: out-params become return values, the context argument is dropped, andUVRate's(void)Evalbecomes?.Tests
crates/solidcore/tests/wr682_surface_plane_curve.rs:the_curve_runs_past_the_plane_s_domain_to_its_endthe_uv_curves_follow_the_order_of_the_surfacesthe_start_direction_chooses_the_way_roundwithout_the_flag_the_curve_is_not_foundan_analytic_answer_is_kepta_flat_surface_is_not_traceda_surface_touching_the_plane_is_not_tracedan_end_off_a_surface_is_not_tracedCommands
On 32aea3d (main f59f1a8 merged in, with #2245), Rust 1.98.0, unless noted.
Not run:
--perturb, and the forced-on suite and--greenagain after #2245 came in from main.Completion evidence
sm_SurfacePlaneCurve, its call insm_SrfSrfIntersection(fork)Assisted by Claude Code (Claude Opus 5.5). All local runs were made by the assistant.
🤖 Generated with Claude Code