Units / surface
surface.cone_p3 partial
- Layer
- 29
- Upstream lines
- 1,939
- Functions
- 4
- Rust module
surface::cone::p3
Source: crates/solidcore/src/surface/cone/p3.rs
Upstream: source/SMLib/src/SmCone.cpp
Notes
PARTIAL (PR #131): 1308 difftest cases (108 fixtures + 1200 generated), 1187 pass bit-identical, 0 failed, 121 deferred (surface.cone_p2 91: sm_GetEllipseTrimIntervals; surface.surface_p2 30: Cone/Cylinder SurfaceKind adapter for the merged IntersectSurfaceBoundaries), max_rel_err 0, no absolute floors; 10108-case stress run clean (9048 pass, 1060 deferred), all 1187 default perturbations detected. Review follow-up adds optional/zero/negative/system-default tolerance fixtures, 320 native dispatch combinations and 14 constructor probes; native FFI tests are validated locally, separately from the unchanged CI workflow. Maintainer review: UB-123 documented; boundary bundles checked before duplicate removal; general fallback resets outputs. Global dispatch retains original arguments through a typed general-intersector callback until SurfaceKind can hold cones; sphere/shared Surface dispatch remains a documented gap (issue #76). 4 fns; largest: SmCone::IntersectWithPlane, SmCone::IntersectWithCone, sm_AddEllipseIntervalsTrimmedToTwoCones, SmCone::GlobalSurfaceIntersect; cycle back-edges (call into later units; stub or co-port): surface.surf_of_extrusion_p2(1), surface.surface_p11(1); unit-SCC #22 (220 units); 144 upstream test entry points reach this unit. Fuzz follow-up: reversed angle ranges snap/compare against the raw start/end angles as SmCone.cpp:3385-3390 (fixture fuzz_reversed_angle_range); IntersectWithCone ignores the ConvertUVFromSTEPToNURBS status (SmCone.cpp:2966-2967), now mirrored for a Y axis that unitizes to zero (upstream-issues WR-159; fixtures fuzz_axis_overflow_zero_y, _trimmed, _swapped). 1312 difftest cases (112 fixtures + 1200 generated), 1191 pass, 0 failed, 121 deferred
Difftest
- Cases
- 1,312
- Passed
- 1,191
- Deferred
- 121
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
surface.cone_p2 claimed | 91 |
surface.surface_p2 partial | 30 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.axis2_placement green geom.extent1d green geom.extent2d green geom.extent3d green geom.geom_utility_p1 green geom.tol green geom.vector3d green nurbs.b_spline_curve_p1 green nurbs.b_spline_surface_p1 green surface.cone_p1 green surface.cone_p2 claimed surface.surf_of_revolution_p1 green surface.surf_of_revolution_p3 partial surface.surface_p2 partial
Soft dependencies: curve.curve_p4 partial curve.ellipse_p1 green curve.ellipse_p2 green curve.line green geom.geom_utility_p2 green geom.vector2d green nurbs.b_spline_curve_p2 green surface.plane_p1 partial surface.plane_p2 partial surface.sphere green
Dependents: audit.recursion todo
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmCone::GlobalSurfaceIntersect | SmCone.cpp:2335 | 110 | [Cone::global_surface_intersect_with] |
SmCone::IntersectWithCone | SmCone.cpp:2604 | 609 | [Cone::intersect_with_cone] |
SmCone::IntersectWithPlane | SmCone.cpp:3219 | 1077 | [Cone::intersect_with_plane] |
sm_AddEllipseIntervalsTrimmedToTwoCones | SmCone.cpp:5628 | 143 | add_ellipse_intervals_trimmed_to_two_cones |
Module file-header table (4 rows)
| Rust | Upstream |
|---|---|
[Cone::intersect_with_plane] | SmCone::IntersectWithPlane |
[Cone::intersect_with_cone] | SmCone::IntersectWithCone |
[Cone::global_surface_intersect_with] | SmCone::GlobalSurfaceIntersect |
add_ellipse_intervals_trimmed_to_two_cones | sm_AddEllipseIntervalsTrimmedToTwoCones |
Upstream tests reaching this unit
prog_test:my_test_surface_interface, prog_test:my_test_ssi, prog_test:my_test_tsurf_section, prog_test:my_test_planar_section, prog_test:my_test_section, prog_test:my_test_edge_geometry_repairs, pt_TestFiles/shovel.srf