Kernel rig: the concave arc between the block's tangent sides kept with tangent chain off

fillets/every-block-cylinder-tangent-concave-arc-r2-partial-chain: the pick takes one piece of the
concave half circle, which SMLib splits; with the chain off its other pieces are left out, and the
blend is refused at the piece's end (the base gate's outcome). With the chain on the case rounds
the whole half circle. The copy keeps its expectation, to be re-derived.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
This commit is contained in:
jyviko
2026-11-01 14:53:01 -05:00
committed by jyviko
parent ce8b01fa30
commit 78ed751627
2 changed files with 61 additions and 0 deletions
@@ -0,0 +1,13 @@
{
"sources": [],
"what": "the concave half circle where a block as wide as the cylinder's diameter meets the cylinder's wall above its top, rounded r2 alone (Tangent chain off)",
"source": "analytic",
"method": "block 40x20x15 (x 0..40, y -10..10) joined to the cylinder R10 x 30 on the z axis: the block's sides y = +-10 run tangent into the cylinder wall at x = 0; V0 = 12000 + 3000 pi - 15 * 50 pi = 19068.5835. The arc (z = 15, rho = 10, x > 0) ends at (0, +-10, 15), where the block's top-side edges go on tangentially. Rounded r2 alone, the round adds the spandrel (rho in [10,12], z in [15,17]) over the block only, between its side planes |y| = 10: at radius rho it spans 2 asin(10/rho), running out to nothing at the ends. Added = int over the spandrel of 2 rho asin(10/rho) (Gauss-Legendre) = 23.3785. V = 19091.9620. Or a refusal saying the edge continues tangentially (as fillets/1207-fillet-bar-top-edge-after-boss-arc-round-partial-chain).",
"body_count": 1,
"outcome": "solid_or_refused",
"refusal": "continues tangentially",
"volume_mm3": 19091.962003483477,
"continuity": {
"order": "g1"
}
}
@@ -0,0 +1,48 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 40,
"width": 20,
"height": 15,
"corner": [
0,
-10,
0
],
"body_name": "Block"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 10,
"height": 30,
"base": [
0,
0,
0
],
"operation": "join",
"targets": [
"Block"
]
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
10,
0,
15
]
],
"radius": 2,
"tangent_chain": false
}
}
]
}