Units / surface
surface.surface_p8 partial
- Layer
- 31
- Upstream lines
- 2,374
- Functions
- 10
- Rust module
surface::surface::p8
Source: crates/solidcore/src/surface/surface/p8.rs
Upstream: source/SMLib/src/SmSurface.cpp
Notes
PARTIAL: difftest 2000 generated cases (find_knots_by_max_continuity, coincidence_check, global_line_intersect, global_curve_intersect, local_line_intersect, invert_point_near_singularity, create_blend_surface, SpGlobalSolver::local_solve_branch), 1995 pass bit-identical, 5 deferred (intersect.surface_drop_curve 5: SmSurfaceDropCurve::DoTrace), 0 failed; --perturb SENSITIVE 1995/1995. All UNPORTED(surface.surface_p8) stubs wired (ray_tracer, topology_solver_p1/p2, surface_intersector_p3, surface_point_solve_p2, curve_p4, unbend_volume, and surface_p7 GlobalPointSolve_0, which now takes the kernel and the surface handle) and the p5 ones (DropPoint, LocalPointSolve, sm_SpLocalSolve). Review of PR #118: plane fallback line interval, InvertPointNearSingularity tolerance and DropPoint result, sm_ExtractIsoCurve tolerance, ignored statuses (GlobalCurveIntersect combine, LocalSolve add, CreateBlendSurface, coincidence evaluations with only_upper_half), non-zero tangents in sm_IntersectSrfBndryCrv; revolutions with the apex on the axis are generated; the SpLocal guard admits SM_BIG_DOUBLE. extract_iso_curve and intersect_srf_bndry_crv are statics: Rust-tested only. CreateBlendSurface shim probes upstream UB (UB-157) and rejects SmLine rails (findings). Generated surfaces start at scale 1e-3 (HANG-15). Left: SmSurface::DropCurve (intersect.surface_drop_lib_p3) and SmSurfaceDropCurve::DoTrace (intersect.surface_drop_curve). Re-run (PR #118, round 3, after merging main): 2054 cases (54 new fixtures: fixtures/surface.surface_p8/plane_line_fallback.json, the plane line-intersect fallback), 2049 pass, 5 deferred (intersect.surface_drop_curve 5), --perturb SENSITIVE 2049/2049. sm_IntersectSrfBndryCrv and sm_ExtractIsoCurve are wired into surface::surface::p11 (UNPORTED(surface.surface_p8) stubs of PR #120). UB-119 renumbered UB-157 (main took UB-119; every lower free number is on main or claimed by an open PR, reserved with prepush.sh ids --reserve, 2026-10-16); HANG-15 unchanged. GlobalPointSolve(.., maximize) without a handle returns the solutions with null objects (Deviations of surface::surface::p4). Round 3 follow-up: global_curve_intersect_in / global_line_intersect_in (and Plane::global_line_intersect_in) solve on the caller's surface cache, as upstream's shared cache does; intersect.surface_intersector_p5 0 failed (1009 pass, 716 deferred), intersect.surface_intersector_p3 1181 pass. SurfaceCache::map_handles added (surface.surface_cache_p1, Rust adapter).
Difftest
- Cases
- 2,054
- Passed
- 2,049
- Deferred
- 5
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
intersect.surface_drop_curve partial | 5 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green curve.iso_curve green geom.a_object partial geom.extent1d green geom.extent2d green geom.extent3d green geom.global_solver partial geom.object partial geom.polar_box green geom.pseudo_box green geom.solution_array partial geom.tol green geom.tree partial geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green nurbs.b_spline_curve_p2 green surface.surface_cache_p1 green surface.surface_p1 partial surface.surface_p2 partial surface.surface_p3 green surface.surface_p4 green surface.surface_p5 green surface.surface_p6 green surface.surface_p7 partial
Soft dependencies: curve.curve_cache green curve.curve_p4 partial curve.curve_p6 green curve.curve_p8 green curve.line green geom.geom_utility_p1 green nurbs.b_spline_curve_n_lib green surface.surface_cache_p3 partial surface.surface_p10 partial
Dependents: none
Soft dependents: blend.fillet_geom_p1 claimed blend.fillet_solver_p1 claimed blend.fillet_solver_p2 todo boolean.topology_intersector_p1 partial boolean.topology_intersector_p2 claimed intersect.curve_class_p2 claimed intersect.curve_class_p8 partial intersect.ray_tracer partial intersect.surface_intersector_p3 partial intersect.topology_solver_p1 partial intersect.topology_solver_p2 partial offset.offset_geometry_creation claimed surface.surface_point_solve_p2 green topology.brep_p1 claimed topology.brep_p8 claimed topology.face_p3 claimed topology.face_p4 claimed
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmSurface::FindKnotsByMaxContinuity | SmSurface.cpp:7058 | 53 | [Surface::find_knots_by_max_continuity] |
SmSurface::CoincidenceCheck | SmSurface.cpp:7266 | 507 | [Surface::coincidence_check], [Surface::base_coincidence_check] |
SmSurface::CreateBlendSurface | SmSurface.cpp:15375 | 141 | [Surface::create_blend_surface] |
SmSurface::GlobalCurveIntersect | SmSurface.cpp:16958 | 307 | [Surface::global_curve_intersect], [Surface::global_curve_intersect_in] |
SmSurface::GlobalLineIntersect | SmSurface.cpp:18946 | 552 | [Surface::global_line_intersect], [Surface::global_line_intersect_in], [Surface::base_global_line_intersect], [Surface::base_global_line_intersect_in] |
SmSPGlobalSolver::LocalSolve | SmSurface.cpp:19665 | 195 | [SpGlobalSolver::local_solve_branch] |
SmSurface::InvertPointNearSingularity | SmSurface.cpp:21926 | 210 | [Surface::invert_point_near_singularity] |
sm_ExtractIsoCurve | SmSurface.cpp:23824 | 179 | [extract_iso_curve] |
SmSurface::LocalLineIntersect | SmSurface.cpp:25005 | 142 | [Surface::local_line_intersect] |
sm_IntersectSrfBndryCrv | SmSurface.cpp:26837 | 88 | [intersect_srf_bndry_crv] |
Module file-header table (10 rows)
| Rust | Upstream |
|---|---|
[Surface::find_knots_by_max_continuity] | SmSurface::FindKnotsByMaxContinuity |
[Surface::coincidence_check], [Surface::base_coincidence_check] | SmSurface::CoincidenceCheck (virtual; SmPlane overrides it) |
[Surface::create_blend_surface] | SmSurface::CreateBlendSurface |
[Surface::global_curve_intersect], [Surface::global_curve_intersect_in] | SmSurface::GlobalCurveIntersect |
[Surface::global_line_intersect], [Surface::global_line_intersect_in], [Surface::base_global_line_intersect], [Surface::base_global_line_intersect_in] | SmSurface::GlobalLineIntersect (virtual; SmPlane overrides it) |
[SpGlobalSolver::local_solve_branch] | SmSPGlobalSolver::LocalSolve |
[Surface::invert_point_near_singularity] | SmSurface::InvertPointNearSingularity |
[Surface::local_line_intersect] | SmSurface::LocalLineIntersect |
[extract_iso_curve] | sm_ExtractIsoCurve (static) |
[intersect_srf_bndry_crv] | sm_IntersectSrfBndryCrv (static) |
Upstream tests reaching this unit
prog_test:my_test_surface_closest_point, prog_test:my_test_drop_point, prog_test:my_test_matrix, prog_test:my_test_reversed_line_join, SM_API_test:TestSmCreateRectangle, SM_API_test:TestSmCreateRegularPolygon