Kernel rig: ruled strips along a normal, at 45 degrees and tangent are the exact plane, cone and flat ring, and a closed chain mitres into a frame

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
jyviko
2026-10-29 17:03:27 -04:00
committed by Irakli Kourtis
parent 657c5af579
commit 476b04ed33
10 changed files with 328 additions and 0 deletions
@@ -0,0 +1,26 @@
{
"sources": [],
"what": "a ruled strip 5 wide off the box's top front edge, along the top face's normal",
"source": "analytic",
"method": "edge (0..20, 0, 10), rulings +z (the top's normal), constant: the plane y = 0, x 0..20, z 10..15: area 100, one plane face with 4 free edges",
"valid": false,
"body_count": 1,
"faces": 1,
"boundary_edges": 4,
"area_mm2": 100.0,
"surface_types": [
"plane"
],
"bbox": {
"min": [
0,
0,
10
],
"max": [
20,
0,
15
]
}
}
@@ -0,0 +1,41 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 20,
"width": 10,
"height": 10,
"body_name": "Box"
}
},
{
"command": "surface.ruled",
"params": {
"body": "Box",
"edges": [
[
10,
0,
10
]
],
"face": [
10,
5,
10
],
"distance": 5,
"body_name": "Strip"
}
},
{
"command": "solid.remove",
"params": {
"bodies": [
"Box"
]
}
}
]
}
@@ -0,0 +1,29 @@
{
"sources": [],
"what": "ruled strips 5 wide off all four top edges of a box, continuing the top: mitred at the corners into a flat frame",
"source": "analytic",
"method": "each strip continues the top (z = 10) outward 5; mitred corners close the frame 30 x 20 round the 20 x 10 top: area 600 - 200 = 400, all in z = 10; 4 strips (coplanar, counted [1, 4]), 8 free edges (4 inner, 4 outer)",
"valid": false,
"body_count": 1,
"faces": [
1,
4
],
"boundary_edges": 8,
"area_mm2": 400.0,
"surface_types": [
"plane"
],
"bbox": {
"min": [
-5,
-5,
10
],
"max": [
25,
15,
10
]
}
}
@@ -0,0 +1,57 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 20,
"width": 10,
"height": 10,
"body_name": "Box"
}
},
{
"command": "surface.ruled",
"params": {
"body": "Box",
"edges": [
[
10,
0,
10
],
[
20,
5,
10
],
[
10,
10,
10
],
[
0,
5,
10
]
],
"face": [
10,
5,
10
],
"mode": "tangent",
"distance": 5,
"body_name": "Frame"
}
},
{
"command": "solid.remove",
"params": {
"bodies": [
"Box"
]
}
}
]
}
@@ -0,0 +1,26 @@
{
"sources": [],
"what": "a ruled strip off a cylinder's top rim at 45 degrees from the top face's normal, turned away from it: an exact cone frustum",
"source": "analytic",
"method": "rulings at 45 deg from +z, leaning out (away from the top face), keep their angle to the arc's axis: a cone. r 10 at z 10 to r 10 + 5/sqrt2 = 13.536 at z 10 + 5/sqrt2 = 13.536; lateral area pi (r1 + r2) slant = pi 23.536 5 = 369.69; one face, two free circles",
"valid": false,
"body_count": 1,
"faces": 1,
"boundary_edges": 2,
"area_mm2": 369.69530208595893,
"surface_types": [
"cone"
],
"bbox": {
"min": [
-13.535533905932738,
-13.535533905932738,
10
],
"max": [
13.535533905932738,
13.535533905932738,
13.535533905932738
]
}
}
@@ -0,0 +1,42 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 10,
"height": 10,
"body_name": "Post"
}
},
{
"command": "surface.ruled",
"params": {
"body": "Post",
"edges": [
[
10,
0,
10
]
],
"face": [
0,
0,
10
],
"mode": "angle",
"angle": "45 deg",
"distance": 5,
"body_name": "Flare"
}
},
{
"command": "solid.remove",
"params": {
"bodies": [
"Post"
]
}
}
]
}
@@ -0,0 +1,26 @@
{
"sources": [],
"what": "a ruled strip off a cylinder's top rim continuing the top face: the flat ring r 10..15",
"source": "analytic",
"method": "tangent rulings continue the top (z = 10) square to the rim, outward: the plane annulus r 10..15, area pi (225 - 100) = 392.70; one plane face, two free circles",
"valid": false,
"body_count": 1,
"faces": 1,
"boundary_edges": 2,
"area_mm2": 392.6990816987241,
"surface_types": [
"plane"
],
"bbox": {
"min": [
-15,
-15,
10
],
"max": [
15,
15,
10
]
}
}
@@ -0,0 +1,41 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 10,
"height": 10,
"body_name": "Post"
}
},
{
"command": "surface.ruled",
"params": {
"body": "Post",
"edges": [
[
10,
0,
10
]
],
"face": [
0,
0,
10
],
"mode": "tangent",
"distance": 5,
"body_name": "Brim"
}
},
{
"command": "solid.remove",
"params": {
"bodies": [
"Post"
]
}
}
]
}
@@ -0,0 +1,8 @@
{
"sources": [],
"what": "a ruled strip of width 0: refused, it would have no area",
"source": "invariants",
"method": "a strip needs a positive width",
"outcome": "refused",
"refusal": "the ruled surface distance must be positive and finite"
}
@@ -0,0 +1,32 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 20,
"width": 10,
"height": 10,
"body_name": "Box"
}
},
{
"command": "surface.ruled",
"params": {
"body": "Box",
"edges": [
[
10,
0,
10
]
],
"face": [
10,
5,
10
],
"distance": 0
}
}
]
}