Compare commits

...

1 Commits

Author SHA1 Message Date
P'tite Tête 51673e134f test: Kernel cases for a profile closed by a conic and its two tangents (solidcraft#10776)
- Four sweeps cases, rho 0.2, 0.4, 0.5 and 0.8 (ellipse, parabola, hyperbola), each one extrude of a rational quadratic conic and two lines, volume in closed form
- Exported from SolidCraft 5faacb55d; manifest sweeps counters updated
2026-11-08 16:31:26 -05:00
5 changed files with 564 additions and 4 deletions
@@ -447,9 +447,9 @@
}
},
"sweeps": {
"cases": 95,
"cases": 99,
"chain": {
"1": 34,
"1": 38,
"10": 2,
"109": 1,
"13": 1,
@@ -460,9 +460,9 @@
"7": 42,
"8": 2
},
"expressible": 87,
"expressible": 91,
"not_expressible": 7,
"operation_expressible": 88,
"operation_expressible": 92,
"reasons": {
"a final body built or changed by SolidCraft (its own geometry or a change to the kernel's record)": 3,
"refused or failed in SolidCraft, not in a kernel operation": 4
@@ -0,0 +1,140 @@
{
"area": "sweeps",
"bodies": {},
"calls": [
{
"inputs": [],
"op": "extrude",
"outputs": [
"b1"
],
"params": {
"cap": true,
"corner": "curvature",
"direction": [
0.0,
0.0,
1.0
],
"distance": 5.0,
"draft": 0.0,
"profile": [
{
"nurbs": {
"degree": 2,
"knots": [
0.0,
0.0,
0.0,
1.0,
1.0,
1.0
],
"points": [
[
10.0,
0.0,
0.0,
1.0
],
[
0.0,
0.0,
0.0,
0.25
],
[
0.0,
10.0,
0.0,
1.0
]
]
}
},
{
"line": {
"end": [
0.0,
0.0,
0.0
],
"start": [
0.0,
10.0,
0.0
]
}
},
{
"line": {
"end": [
10.0,
0.0,
0.0
],
"start": [
0.0,
0.0,
0.0
]
}
}
]
}
}
],
"case": "10776-conic-closed-by-its-tangents-rho-0-2-xy",
"expected": {
"body_count": 1,
"method": "Rational quadratic Bezier with control triangle T = 10*10/2 = 50 mm^2 and weight w = rho/(1-rho) = 0.25, rho being the conic's shoulder parameter (SolidCraft's sketch.conic). The area between the conic and the corner is A = T*(1 - g(w)) with g(w) = w/(1-w^2)*(acos(w)/sqrt(1-w^2) - w). V = 5*A = 175.9103716643608 mm^3. One body.",
"source": "analytic",
"sources": [
"tangency-labs/solidcraft#10776"
],
"tolerance": {
"rel": 1e-6
},
"volume_mm3": 175.9103716643608,
"what": "a profile closed by a conic (rho 0.2, an ellipse arc) and its two tangent lines to the apex, (10,0)-(0,0)-(0,10), extruded 5 mm on the XY sketch plane: one valid solid. Under truck the extrusion was refused (#10776). The issue also showed the XZ plane; it is left out because SolidCraft extrudes in XY then rotates the body, with the same kernel call."
},
"expressible": true,
"operation_expressible": true,
"outcome": {
"ran": true,
"raw_counts": {
"edges": 9,
"faces": 5,
"vertices": 6
}
},
"result": [
{
"body": "P",
"made": "b1"
}
],
"rig": {
"error": null,
"known_failing": null,
"measured": {
"area_mm2": 243.55874857651943,
"body_count": 1,
"edges": 9,
"faces": 5,
"vertices": 6,
"volume_mm3": 175.9103716640548
},
"refused_with": null,
"status": "pass"
},
"sources": [
"tangency-labs/solidcraft#10776"
],
"traced_ops": [
"extrude"
],
"ungraded": [],
"what": "a profile closed by a conic (rho 0.2, an ellipse arc) and its two tangent lines to the apex, (10,0)-(0,0)-(0,10), extruded 5 mm on the XY sketch plane: one valid solid. Under truck the extrusion was refused (#10776). The issue also showed the XZ plane; it is left out because SolidCraft extrudes in XY then rotates the body, with the same kernel call.",
"why_not": []
}
@@ -0,0 +1,140 @@
{
"area": "sweeps",
"bodies": {},
"calls": [
{
"inputs": [],
"op": "extrude",
"outputs": [
"b1"
],
"params": {
"cap": true,
"corner": "curvature",
"direction": [
0.0,
0.0,
1.0
],
"distance": 5.0,
"draft": 0.0,
"profile": [
{
"nurbs": {
"degree": 2,
"knots": [
0.0,
0.0,
0.0,
1.0,
1.0,
1.0
],
"points": [
[
10.0,
0.0,
0.0,
1.0
],
[
0.0,
0.0,
0.0,
0.6666666666666667
],
[
0.0,
10.0,
0.0,
1.0
]
]
}
},
{
"line": {
"end": [
0.0,
0.0,
0.0
],
"start": [
0.0,
10.0,
0.0
]
}
},
{
"line": {
"end": [
10.0,
0.0,
0.0
],
"start": [
0.0,
0.0,
0.0
]
}
}
]
}
}
],
"case": "10776-conic-closed-by-its-tangents-rho-0-4-xy",
"expected": {
"body_count": 1,
"method": "Rational quadratic Bezier with control triangle T = 10*10/2 = 50 mm^2 and weight w = rho/(1-rho) = 2/3, rho being the conic's shoulder parameter (SolidCraft's sketch.conic). The area between the conic and the corner is A = T*(1 - g(w)) with g(w) = w/(1-w^2)*(acos(w)/sqrt(1-w^2) - w). V = 5*A = 111.47639019565159 mm^3. One body.",
"source": "analytic",
"sources": [
"tangency-labs/solidcraft#10776"
],
"tolerance": {
"rel": 1e-6
},
"volume_mm3": 111.47639019565159,
"what": "a profile closed by a conic (rho 0.4, an ellipse arc) and its two tangent lines to the apex, (10,0)-(0,0)-(0,10), extruded 5 mm on the XY sketch plane: one valid solid. Under truck the extrusion was refused (#10776). The issue also showed the XZ plane; it is left out because SolidCraft extrudes in XY then rotates the body, with the same kernel call."
},
"expressible": true,
"operation_expressible": true,
"outcome": {
"ran": true,
"raw_counts": {
"edges": 9,
"faces": 5,
"vertices": 6
}
},
"result": [
{
"body": "P",
"made": "b1"
}
],
"rig": {
"error": null,
"known_failing": null,
"measured": {
"area_mm2": 222.71910737021926,
"body_count": 1,
"edges": 9,
"faces": 5,
"vertices": 6,
"volume_mm3": 111.47639019672356
},
"refused_with": null,
"status": "pass"
},
"sources": [
"tangency-labs/solidcraft#10776"
],
"traced_ops": [
"extrude"
],
"ungraded": [],
"what": "a profile closed by a conic (rho 0.4, an ellipse arc) and its two tangent lines to the apex, (10,0)-(0,0)-(0,10), extruded 5 mm on the XY sketch plane: one valid solid. Under truck the extrusion was refused (#10776). The issue also showed the XZ plane; it is left out because SolidCraft extrudes in XY then rotates the body, with the same kernel call.",
"why_not": []
}
@@ -0,0 +1,140 @@
{
"area": "sweeps",
"bodies": {},
"calls": [
{
"inputs": [],
"op": "extrude",
"outputs": [
"b1"
],
"params": {
"cap": true,
"corner": "curvature",
"direction": [
0.0,
0.0,
1.0
],
"distance": 5.0,
"draft": 0.0,
"profile": [
{
"nurbs": {
"degree": 2,
"knots": [
0.0,
0.0,
0.0,
1.0,
1.0,
1.0
],
"points": [
[
10.0,
0.0,
0.0,
1.0
],
[
0.0,
0.0,
0.0,
1.0
],
[
0.0,
10.0,
0.0,
1.0
]
]
}
},
{
"line": {
"end": [
0.0,
0.0,
0.0
],
"start": [
0.0,
10.0,
0.0
]
}
},
{
"line": {
"end": [
10.0,
0.0,
0.0
],
"start": [
0.0,
0.0,
0.0
]
}
}
]
}
}
],
"case": "10776-conic-closed-by-its-tangents-rho-0-5-xy",
"expected": {
"body_count": 1,
"method": "Rational quadratic Bezier with control triangle T = 10*10/2 = 50 mm^2 and weight w = rho/(1-rho) = 1, rho being the conic's shoulder parameter (SolidCraft's sketch.conic). The area between the conic and the corner is A = T*(1 - g(w)) with g(1) = 2/3 for the parabola (A = T/3). V = 5*A = 83.33333333333334 mm^3. One body.",
"source": "analytic",
"sources": [
"tangency-labs/solidcraft#10776"
],
"tolerance": {
"rel": 1e-6
},
"volume_mm3": 83.33333333333334,
"what": "a profile closed by a conic (rho 0.5, a parabola arc) and its two tangent lines to the apex, (10,0)-(0,0)-(0,10), extruded 5 mm on the XY sketch plane: one valid solid. Under truck the extrusion was refused (#10776). The issue also showed the XZ plane; it is left out because SolidCraft extrudes in XY then rotates the body, with the same kernel call."
},
"expressible": true,
"operation_expressible": true,
"outcome": {
"ran": true,
"raw_counts": {
"edges": 9,
"faces": 5,
"vertices": 6
}
},
"result": [
{
"body": "P",
"made": "b1"
}
],
"rig": {
"error": null,
"known_failing": null,
"measured": {
"area_mm2": 214.49459534010055,
"body_count": 1,
"edges": 9,
"faces": 5,
"vertices": 6,
"volume_mm3": 83.33333333333334
},
"refused_with": null,
"status": "pass"
},
"sources": [
"tangency-labs/solidcraft#10776"
],
"traced_ops": [
"extrude"
],
"ungraded": [],
"what": "a profile closed by a conic (rho 0.5, a parabola arc) and its two tangent lines to the apex, (10,0)-(0,0)-(0,10), extruded 5 mm on the XY sketch plane: one valid solid. Under truck the extrusion was refused (#10776). The issue also showed the XZ plane; it is left out because SolidCraft extrudes in XY then rotates the body, with the same kernel call.",
"why_not": []
}
@@ -0,0 +1,140 @@
{
"area": "sweeps",
"bodies": {},
"calls": [
{
"inputs": [],
"op": "extrude",
"outputs": [
"b1"
],
"params": {
"cap": true,
"corner": "curvature",
"direction": [
0.0,
0.0,
1.0
],
"distance": 5.0,
"draft": 0.0,
"profile": [
{
"nurbs": {
"degree": 2,
"knots": [
0.0,
0.0,
0.0,
1.0,
1.0,
1.0
],
"points": [
[
10.0,
0.0,
0.0,
1.0
],
[
0.0,
0.0,
0.0,
4.000000000000001
],
[
0.0,
10.0,
0.0,
1.0
]
]
}
},
{
"line": {
"end": [
0.0,
0.0,
0.0
],
"start": [
0.0,
10.0,
0.0
]
}
},
{
"line": {
"end": [
10.0,
0.0,
0.0
],
"start": [
0.0,
0.0,
0.0
]
}
}
]
}
}
],
"case": "10776-conic-closed-by-its-tangents-rho-0-8-xy",
"expected": {
"body_count": 1,
"method": "Rational quadratic Bezier with control triangle T = 10*10/2 = 50 mm^2 and weight w = rho/(1-rho) = 4, rho being the conic's shoulder parameter (SolidCraft's sketch.conic). The area between the conic and the corner is A = T*(1 - g(w)) with g(w) = w/(w^2-1)*(w - acosh(w)/sqrt(w^2-1)). V = 5*A = 18.85181068346467 mm^3. One body.",
"source": "analytic",
"sources": [
"tangency-labs/solidcraft#10776"
],
"tolerance": {
"rel": 1e-6
},
"volume_mm3": 18.85181068346467,
"what": "a profile closed by a conic (rho 0.8, a hyperbola arc) and its two tangent lines to the apex, (10,0)-(0,0)-(0,10), extruded 5 mm on the XY sketch plane: one valid solid. Under truck the extrusion was refused (#10776). The issue also showed the XZ plane; it is left out because SolidCraft extrudes in XY then rotates the body, with the same kernel call."
},
"expressible": true,
"operation_expressible": true,
"outcome": {
"ran": true,
"raw_counts": {
"edges": 9,
"faces": 5,
"vertices": 6
}
},
"result": [
{
"body": "P",
"made": "b1"
}
],
"rig": {
"error": null,
"known_failing": null,
"measured": {
"area_mm2": 199.397723662317,
"body_count": 1,
"edges": 9,
"faces": 5,
"vertices": 6,
"volume_mm3": 18.85181071936124
},
"refused_with": null,
"status": "pass"
},
"sources": [
"tangency-labs/solidcraft#10776"
],
"traced_ops": [
"extrude"
],
"ungraded": [],
"what": "a profile closed by a conic (rho 0.8, a hyperbola arc) and its two tangent lines to the apex, (10,0)-(0,0)-(0,10), extruded 5 mm on the XY sketch plane: one valid solid. Under truck the extrusion was refused (#10776). The issue also showed the XZ plane; it is left out because SolidCraft extrudes in XY then rotates the body, with the same kernel call.",
"why_not": []
}