solidcore

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 unitDeferred cases
surface.cone_p2 claimed91
surface.surface_p2 partial30

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 functionDefined atLinesRust (from the file header)
SmCone::GlobalSurfaceIntersectSmCone.cpp:2335110[Cone::global_surface_intersect_with]
SmCone::IntersectWithConeSmCone.cpp:2604609[Cone::intersect_with_cone]
SmCone::IntersectWithPlaneSmCone.cpp:32191077[Cone::intersect_with_plane]
sm_AddEllipseIntervalsTrimmedToTwoConesSmCone.cpp:5628143add_ellipse_intervals_trimmed_to_two_cones
Module file-header table (4 rows)
RustUpstream
[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_conessm_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