Units / surface
surface.surface_p6 green
- Layer
- 29
- Upstream lines
- 2,150
- Functions
- 8
- Rust module
surface::surface::p6
Source: crates/solidcore/src/surface/surface/p6.rs
Upstream: source/SMLib/src/SmSurface.cpp
Notes
PARTIAL: difftest 2099 cases (99 fixture: CalculateContinuities and CreateNaturalUVTrimCurves on Surface.sms / DropCurveSurface.sms / offset_nurb.sms, planes and cones/cylinders of revolution (also true cones with their apex on the axis), curve-bounded surfaces; IdenticalSolutions on plane pairs; sm_SCLocalSolve boundary curve solves; GetSampleValues input checks; disjoint coincidence boxes; point range solutions + 2000 generated over B-spline (poles, creases, herringbone kinks, rational, tiny/huge scales), plane, revolution and curve-bounded surfaces, B-spline and SmLine curves), 1834 pass bit-identical (max_rel_err 0), 265 deferred after merging surface_p4 and surface_p5 (surface.surface_p3 124, surface.surface_point_solve_p3 141; formerly surface_p4/surface_p5 stubs: DropPoint, LocalPointSolve, GlobalPointSolve, IsSingularity, SmCSIntersectENFO::Evaluate, sm_SpLocalSolve, LocalCurveSolve's SmCSNormalizeENFO); --perturb SENSITIVE; back-edges wired: LocalCurveIntersect (surface.surface_p9), SmSSGlobalSolver::IdenticalSolutions (surface.surface_p7), CreateNaturalUVTrimCurves (nurbs.b_spline_surface_p2, surface.plane_p1), CalculateContinuities (surface.surface_cache_p3, curve.iso_curve: now green); intersect.surface_tracer's DoTrace now runs on the built cache; upstream UB-100 (GetSampleValues NULL tangent reference) refused by the shim. 8 fns; largest: SmSurface::SimpleCoincidenceChecker, SmDerivSurfDefinition::GetSampleValues, sm_SCLocalSolve, SmSurface::ClassifyIntersectingRangeSolution; cycle back-edges (call into later units; stub or co-port): surface.surface_p1(5); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit Re-run (PR #52, after merging surface_p4/#49 and surface_p5/#50): 2099 cases, 1939 pass, 160 deferred (surface.surface_point_solve_p3 141, curve.iso_curve 19); the shim now runs a verbatim sm_SpLocalSolve inside sm_SCLocalSolve (was a -2 stop); --perturb SENSITIVE 1939/1939. Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 2099 cases, 2098 pass, 1 deferred (surface.surface_p8 1), 0 failed, max_rel_err 0. Re-run after wiring PR #118 (surface.surface_p8 and its back-edges, GlobalPointSolve_0 included): 2099 cases, 2099 pass, 0 deferred, 0 failed, max_rel_err 0; green.
Difftest
- Cases
- 2,099
- Passed
- 2,099
- Deferred
- 0
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
Nothing: no deferred cases.
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.global_solver partial geom.local_solve_nd green geom.object partial geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green surface.surface_p2 partial surface.surface_p4 green surface.surface_p5 green surface.surface_p7 partial
Soft dependencies: curve.curve_p3 green curve.curve_p4 partial curve.curve_p6 green curve.iso_curve green curve.line green nurbs.b_spline_curve_p2 green
Dependents: surface.surface_p11 partial surface.surface_p8 partial
Soft dependents: blend.fillet_corner_p1 todo blend.fillet_solver_p1 claimed blend.fillet_solver_p3 todo boolean.topology_intersector_p2 claimed intersect.curve_class_p2 claimed intersect.curve_class_p8 partial surface.surface_p10 partial sweep.rotational_sweep_geometry partial topology.brep_p8 claimed topology.trimming_tools partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmDerivSurfDefinition::GetSampleValues | SmSurface.cpp:2941 | 346 | [DerivSurfDefinition::sample_values], [SampleOptions], [DerivSampleValues] |
sm_SCLocalSolve | SmSurface.cpp:4812 | 318 | [sc_local_solve], [ScLocalSolveNodes] |
SmSurface::CalculateContinuities | SmSurface.cpp:6168 | 250 | [Surface::calculate_continuities] |
SmSurface::CreateNaturalUVTrimCurves | SmSurface.cpp:9048 | 232 | [Surface::create_natural_uv_trim_curves], [NaturalUvTrimCurves] |
SmSSGlobalSolver::IdenticalSolutions | SmSurface.cpp:21522 | 137 | [SsGlobalSolver::solutions_identical] |
SmSurface::LocalCurveIntersect | SmSurface.cpp:24745 | 246 | [Surface::local_curve_intersect], [CurveIntersection] |
SmSurface::SimpleCoincidenceChecker | SmSurface.cpp:29226 | 360 | [Surface::simple_coincidence_checker] |
SmSurface::ClassifyIntersectingRangeSolution | SmSurface.cpp:30666 | 261 | [Surface::classify_intersecting_range_solution], [RangeTangentPoint] |
Module file-header table (8 rows)
| Rust | Upstream |
|---|---|
[Surface::calculate_continuities] | SmSurface::CalculateContinuities (virtual; no surface kind overrides it) |
[Surface::create_natural_uv_trim_curves], [NaturalUvTrimCurves] | SmSurface::CreateNaturalUVTrimCurves |
[DerivSurfDefinition::sample_values], [SampleOptions], [DerivSampleValues] | SmDerivSurfDefinition::GetSampleValues (from a surface boundary curve) |
[Surface::local_curve_intersect], [CurveIntersection] | SmSurface::LocalCurveIntersect (virtual; not overridden) |
[Surface::simple_coincidence_checker] | SmSurface::SimpleCoincidenceChecker (virtual; not overridden) |
[Surface::classify_intersecting_range_solution], [RangeTangentPoint] | SmSurface::ClassifyIntersectingRangeSolution |
[SsGlobalSolver::solutions_identical] | SmSSGlobalSolver::IdenticalSolutions |
[sc_local_solve], [ScLocalSolveNodes] | sm_SCLocalSolve (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