From 191fa98395ef0737c497f778adbb4ddedc3188de Mon Sep 17 00:00:00 2001 From: jyviko <2501648+jyviko@users.noreply.github.com> Date: Fri, 30 Oct 2026 07:05:04 -0400 Subject: [PATCH] Fillet rig: the R7 round past a thin wall's inside corner held to its exact volume fillets/1668-fillet-outer-top-edge-of-thin-wall-r7-past-inside-corner (and the both-sides R7 case) now grade the volume at rel 1e-6 (0.04 mm^3), not the rig's 1e-3. The closed form is exact: V0 = 104 64 42 - 100 60 40 less the round's section (1-pi/4) 49 along 104 plus its part over the hollow, the square [25,30] x [35,40] outside the circle about (25,35), Int_sqrt24^5 (5 - sqrt(49-u^2)) du = 0.0050679 mm^2 (a 0.0005 grid gives the same to 1e-9), along 100: 38458.896. SMLib gives 38458.389, 0.507 mm^3 less: exactly that part over the hollow, which is not material, taken anyway where the round opens its slit. The unit test's bound was right; the case goes on KNOWN_FAILING with that cause. The both-sides case passes at the tighter tolerance. Co-Authored-By: Claude Opus 5.5 --- .../1668-fillet-both-sides-of-thin-wall-r7/expected.json | 5 ++++- .../expected.json | 5 ++++- tests/kernel-cases/fillets/KNOWN_FAILING | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/kernel-cases/fillets/1668-fillet-both-sides-of-thin-wall-r7/expected.json b/tests/kernel-cases/fillets/1668-fillet-both-sides-of-thin-wall-r7/expected.json index 2a99d1b58b..3dcd1b1478 100644 --- a/tests/kernel-cases/fillets/1668-fillet-both-sides-of-thin-wall-r7/expected.json +++ b/tests/kernel-cases/fillets/1668-fillet-both-sides-of-thin-wall-r7/expected.json @@ -5,9 +5,12 @@ ], "what": "R7 rounds of the outer top edge and the inside edge of a 2 mm wall in one fillet: the inside round holds the material the outer one runs over, so the wall stays closed", "source": "analytic", - "method": "as 1668-fillet-both-sides-of-thin-wall at R7: the inside (concave) round adds (1-pi/4) 49 along 100 about (23, 33); the outer one's part over the hollow lies at least 9.7 from (23, 33), inside the added material, so it takes its whole section (1-pi/4) 49 along 104. V = 39552 - (1-pi/4) 49 x 4 = 39509.938040", + "method": "as 1668-fillet-both-sides-of-thin-wall at R7: the inside (concave) round adds (1-pi/4) 49 along 100 about (23, 33); the outer one's part over the hollow lies at least 9.7 from (23, 33), inside the added material, so it takes its whole section (1-pi/4) 49 along 104. V = 39552 - (1-pi/4) 49 x 4 = 39509.938040, exact: the tolerance holds it to 0.04 mm^3", "body_count": 1, "volume_mm3": 39509.9380400259, + "tolerance": { + "rel": 1e-06 + }, "continuity": { "order": "g1" } diff --git a/tests/kernel-cases/fillets/1668-fillet-outer-top-edge-of-thin-wall-r7-past-inside-corner/expected.json b/tests/kernel-cases/fillets/1668-fillet-outer-top-edge-of-thin-wall-r7-past-inside-corner/expected.json index 78133651b5..0a596941ce 100644 --- a/tests/kernel-cases/fillets/1668-fillet-outer-top-edge-of-thin-wall-r7-past-inside-corner/expected.json +++ b/tests/kernel-cases/fillets/1668-fillet-outer-top-edge-of-thin-wall-r7-past-inside-corner/expected.json @@ -5,9 +5,12 @@ ], "what": "an R7 round of the outer top edge of a 2 mm wall alone: past the sharp inside corner it is cut from the wall as if the hollow were not there, opening a slit along the hollow", "source": "analytic", - "method": "box 100x60x40 shelled outward 2 mm open at the bottom: 104x64x42 less 100x60x40 = 39552. The round's circle about (y, z) = (25, 35), r 7, takes (1-pi/4) 49 along the edge's 104, less its part over the hollow (y < 30, z < 40), the square [25,30]x[35,40] outside the circle: Int_sqrt24^5 (5 - sqrt(49-u^2)) du = 5(5-sqrt24) - (F(5) - F(sqrt24)), F(t) = (t sqrt(49-t^2) + 49 asin(t/7))/2, = 0.005068, along the hollow's 100 (the end walls x = +-50..52 are solid). V = 38458.895826", + "method": "box 100x60x40 shelled outward 2 mm open at the bottom: 104x64x42 less 100x60x40 = 39552. The round's circle about (y, z) = (25, 35), r 7, takes (1-pi/4) 49 along the edge's 104, less its part over the hollow (y < 30, z < 40), the square [25,30]x[35,40] outside the circle: Int_sqrt24^5 (5 - sqrt(49-u^2)) du = 5(5-sqrt24) - (F(5) - F(sqrt24)), F(t) = (t sqrt(49-t^2) + 49 asin(t/7))/2, = 0.005068, along the hollow's 100 (the end walls x = +-50..52 are solid). V = 38458.895826, exact: the tolerance holds it to 0.04 mm^3", "body_count": 1, "volume_mm3": 38458.89582646349, + "tolerance": { + "rel": 1e-06 + }, "continuity": { "order": "g1" } diff --git a/tests/kernel-cases/fillets/KNOWN_FAILING b/tests/kernel-cases/fillets/KNOWN_FAILING index e4561f8e08..5fd47a8196 100644 --- a/tests/kernel-cases/fillets/KNOWN_FAILING +++ b/tests/kernel-cases/fillets/KNOWN_FAILING @@ -15,6 +15,7 @@ 1080-fillet-sloped-basin-1-mm-rim-r4-4-edges not supported yet: a convex round past its face is not yet built by subtraction 1113-chamfer-arc-top-edge-full-wall-height-refused builds the chamfer as tall as the wall where it should be refused as too large 1207-fillet-bar-top-edge-after-boss-arc-round-r0-5 SMLib's check refuses the round: internal coincident control points in a B-spline curve (an internal pole) +1668-fillet-outer-top-edge-of-thin-wall-r7-past-inside-corner a slit along the hollow, 0.507 mm^3 off: 38458.389 is V0 less the round's whole section along 104, so the section's part over the hollow (0.005068 mm^2 along 100), which is not material, is taken anyway 190-fillet-disc-rim-past-its-2mm-wall SMLib status 1001: a convex round past its face is not yet built by subtraction 2852-fillet-outer-round-r30-past-inner-round-refused refused for another reason: SMLib's result is not a closed solid, not too large naming 25.24 2893-chamfer-distance-and-angle-past-the-wall-refused refused for another reason: SMLib SM_ERR_INVALID_INPUT, not a check saying the angle runs past the wall